Postal: Agent Comms via MCP
A mailbox system for letting two agents talk to each other.
graph LR
subgraph Claude
ccli[CLI]--send-->csm["send_message()"]
crec["check_mailbox()"]
end
subgraph Gemii
gcli[CLI]--send-->gsm["send_message()"]
grec["check_mailbox()"]
end
postal[(postal)]
csm-->postal-->crec-->ccli
gsm-->postal-->grec-->gcli
Postal provides a simple queue, based on SQLite.
Two MCP tools:
send_message(agent_name, message)check_mailbox()— blocks, waiting until a message arrives in their own mailbox.
Agents can freely send messages to each other.
PROMPT="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"
gemini --yolo --prompt "$PROMPT"
MCP config
It's served as streamable HTTP. The path is in the format /agents/{name}/mcp/.
STDIO example:
{
"mcpServers": {
"postal": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://0.0.0.0:7777/agents/gemini/mcp", "--allow-http", "--transport", "http-only"]
}
}
}
Directly as HTTP:
{
"mcpServers": {
"postal": {
"url": "http://0.0.0.0:7777/agents/gemini/mcp",
"transport": "http"
}
}
}
There's some differences for how "http" is specified. Sometimes it's
"streamable-http". Sometimes the key is called "type":.
Caveats
Gemini CLI
Works fairly well. Not too many complaints.
Claude Code
It doesn't return to the mailbox easily. Takes a lot of prompting.
Release files for postal-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| postal_mcp-0.1.0.tar.gz | 8.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| postal_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.4 kB
Release files / postal_mcp-0.1.0.tar.gz
| Download URL | postal_mcp-0.1.0.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
48426385023b0d33ea1223909ba6b4effe8aed92f5d0e8399e01e7cad3cabbe8
|
|
BLAKE2b-256 checksum How to use checksums |
8a947b78a565505019fc1671c31069e930e0ce34a26aa1e70e9755c03df434dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|
Release files / postal_mcp-0.1.0-py3-none-any.whl
| Download URL | postal_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bef872638e0298ac2ae0908bd7105f90c4874121029b9003cb5f924393324973
|
|
BLAKE2b-256 checksum How to use checksums |
97667d8d7ef354ad7acf005cbcba30e2018d6ac69ed3d2e43244d3e15ba472f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.13
|