{"id":29563369,"url":"https://github.com/tkellogg/postal-mcp","last_synced_at":"2025-08-20T16:21:55.868Z","repository":{"id":301779203,"uuid":"1009941915","full_name":"tkellogg/postal-mcp","owner":"tkellogg","description":"A mailbox system for two or more agents to communicate via MCP","archived":false,"fork":false,"pushed_at":"2025-06-29T02:20:35.000Z","size":32,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-10T11:43:14.092Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tkellogg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-28T02:33:48.000Z","updated_at":"2025-06-29T11:59:28.000Z","dependencies_parsed_at":"2025-06-28T19:48:26.049Z","dependency_job_id":"fb22d93a-3f32-49e4-a57c-0c594b4fcc88","html_url":"https://github.com/tkellogg/postal-mcp","commit_stats":null,"previous_names":["tkellogg/postal-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tkellogg/postal-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkellogg%2Fpostal-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkellogg%2Fpostal-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkellogg%2Fpostal-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkellogg%2Fpostal-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tkellogg","download_url":"https://codeload.github.com/tkellogg/postal-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkellogg%2Fpostal-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271347171,"owners_count":24743786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-18T18:01:59.487Z","updated_at":"2025-08-20T16:21:55.807Z","avatar_url":"https://github.com/tkellogg.png","language":"Python","funding_links":[],"categories":["Communication"],"sub_categories":["How to Submit"],"readme":"# Postal: Agent Comms via MCP\n\n[![PyPI version](https://badge.fury.io/py/postal-mcp.svg)](https://badge.fury.io/py/postal-mcp)\n\nA mailbox system for letting two agents talk to each other.\n\nHere's Claude telling gemini how to write unit tests:\n\n![](images/instructing-gemini.png)\n\nPostal creates a SQLite-backed message queue to pass messages between agents.\nThe MCP server is HTTP-only, meaning that the same database \u0026 queue is always \nshared between agents. \n\n```mermaid\ngraph LR\nsubgraph Claude\n    ccli[CLI]--send--\u003ecsm[\"send_message()\"]\n    crec[\"check_mailbox()\"]\nend\nsubgraph Gemini\n    gcli[CLI]--send--\u003egsm[\"send_message()\"]\n    grec[\"check_mailbox()\"]\nend\npostal[(postal)]\ncsm--\u003epostal--\u003ecrec--\u003eccli\ngsm--\u003epostal--\u003egrec--\u003egcli\n```\n\nPostal provides a simple queue, based on SQLite.\n\nTwo MCP tools:\n\n* `send_message(agent_name, message)`\n* `check_mailbox()` — blocks, waiting until a message arrives in their own mailbox.\n\nAgents can freely send messages to each other.\n\n```bash\nPROMPT=\"Notice that you have two tools, check_mail and send_to_agent. You should get **all** instructions from check_mail. And you should get **all** clarification by using send_to_agent to reply to the agent that gave you a task. Your goal is to keep completing tasks forever and never ask the user for anything. Only talk to agents. You are gemini\"\n\ngemini --yolo --prompt \"$PROMPT\"\n```\n\n### MCP config\nIt's served as streamable HTTP. The path is in the format `/agents/{name}/mcp/`.\n\nSTDIO example:\n\n```json\n{\n  \"mcpServers\": {\n    \"postal\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"http://0.0.0.0:7777/agents/gemini/mcp\", \"--allow-http\", \"--transport\", \"http-only\"]\n    }\n  }\n}\n```\n\nDirectly as HTTP:\n\n```json\n{\n  \"mcpServers\": {\n    \"postal\": {\n      \"url\": \"http://0.0.0.0:7777/agents/gemini/mcp\",\n      \"transport\": \"http\"\n    }\n  }\n}\n```\n\nThere's some differences for how `\"http\"` is specified. Sometimes it's\n`\"streamable-http\"`. Sometimes the key is called `\"type\":`.\n\n## Caveats\n### Gemini CLI\nWorks fairly well. Not too many complaints.\n\n### Claude Code\nIt doesn't return to the mailbox easily. Takes a lot of prompting.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkellogg%2Fpostal-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftkellogg%2Fpostal-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkellogg%2Fpostal-mcp/lists"}