Skip to main content

Inter-agent messaging via Model Context Protocol

Project description

MCP Talk

Inter-agent messaging via Model Context Protocol (MCP).

A lightweight messaging system that enables AI agents (Claude, Codex, Gemini, etc.) to communicate with each other in real-time through a shared message queue.

Features

  • Simple tools: send, check, ack, broadcast, list, clean, reply
  • File-based persistence: Messages stored as JSON files for easy debugging
  • Namespace isolation: Separate message queues per project
  • Cross-agent: Works with any MCP-compatible AI assistant
  • Zero dependencies: Just Python 3.10+ and the MCP SDK

Installation

# From PyPI (recommended)
pipx install mcp-talk

# Or with pip
pip install mcp-talk

# From source
git clone https://github.com/devinvenable/mcp-talk.git
cd mcp-talk
pipx install .

Configuration

Add to your MCP client configuration:

Claude Desktop / Claude Code

{
  "mcpServers": {
    "mcp-talk": {
      "command": "mcp-talk"
    }
  }
}

Using uvx (no install required)

{
  "mcpServers": {
    "mcp-talk": {
      "command": "uvx",
      "args": ["mcp-talk"]
    }
  }
}

Codex CLI (~/.codex/config.toml)

[mcp_servers.mcp-talk]
command = "mcp-talk"

Gemini CLI (~/.gemini/settings.json)

{
  "mcpServers": {
    "mcp-talk": {
      "command": "mcp-talk"
    }
  }
}

Tools

send - Send a direct message

send(to="codex", message="Please review PR #123", from_agent="claude")

check / chk - Check messages

check(agent="claude")
chk(agent="claude", include_body=true, auto_ack=true)

Returns up to 5 messages by default. Use include_body=true for full message text, auto_ack=true to delete after reading.

broadcast - Send to all agents

broadcast(message="Standup in 5 minutes", from_agent="pm")

ack - Acknowledge/delete a message

ack(id="20251126_143022_abc12345")

reply - Reply to a message

reply(id="20251126_143022_abc12345", message="Done!", from_agent="gemini")

Automatically sends response to original sender and acknowledges the original message.

list - List all messages (PM view)

list(limit=10, include_body=true)

clean - Remove old messages

clean(hours=24)

Namespaces

Isolate messages between projects using the namespace parameter:

# Game project
send(to="gemini", message="Review level 3", namespace="game")
check(agent="gemini", namespace="game")

# Work project
send(to="gemini", message="Review PR #123", namespace="work")
check(agent="gemini", namespace="work")

Messages are stored in separate directories:

~/.mcp_talk/q/           # default (no namespace)
~/.mcp_talk/q/game/      # namespace="game"
~/.mcp_talk/q/work/      # namespace="work"

Message Format

Messages are stored as JSON files in ~/.mcp_talk/q/:

{
  "id": "20251126_143022_abc12345",
  "from": "claude",
  "to": "codex",
  "type": "direct",
  "created": "2025-11-26T14:30:22+00:00",
  "message": "Please review PR #123",
  "namespace": "work"
}

Environment Variables

Variable Default Description
MCP_TALK_QUEUE ~/.mcp_talk/q/ Message queue directory
MCP_TALK_AUTO_CLEAN_HOURS 24 Auto-delete messages older than N hours (0 to disable)
MCP_TALK_MAX_MESSAGE_CHARS 2000 Maximum message length

Multi-Agent Setup Tips

Teaching agents to check messages

The chk shortcut is designed to be a simple keyword you can add to agent instructions. Add to your agent's system prompt or memory:

Gemini (~/.gemini/instructions.md):

When I read new messages, I should investigate the topic, verify assertions, and contribute my own expertise to the team.

Claude (CLAUDE.md in project):

When starting work, check for messages with: chk(agent="claude")

Codex (~/.codex/instructions.md):

Before starting tasks, check the message queue for any team communications.

Recommended MCP config with env overrides

Customize behavior per-agent with environment variables:

# ~/.codex/config.toml
[mcp_servers.mcp-talk]
command = "mcp-talk"
env = { MCP_TALK_AUTO_CLEAN_HOURS = "12", MCP_TALK_MAX_MESSAGE_CHARS = "1200" }
// ~/.gemini/settings.json
{
  "mcpServers": {
    "mcp-talk": {
      "command": "mcp-talk",
      "env": {
        "MCP_TALK_AUTO_CLEAN_HOURS": "12",
        "MCP_TALK_MAX_MESSAGE_CHARS": "1200"
      }
    }
  }
}

Example Workflow

  1. Claude sends a task to Gemini:

    send(to="gemini", message="Please review the authentication module", from_agent="claude")
    
  2. Gemini checks for messages:

    chk(agent="gemini")
    
  3. Gemini replies when done:

    reply(id="20251126_143022_abc12345", message="Review complete, LGTM!", from_agent="gemini")
    
  4. Claude receives the reply:

    chk(agent="claude")
    

Development

# Clone and install in development mode
git clone https://github.com/devinvenable/mcp-talk.git
cd mcp-talk
pip install -e .

# Reinstall after changes (if using pipx)
pipx install --force .

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_talk-0.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_talk-0.2.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file mcp_talk-0.2.0.tar.gz.

File metadata

  • Download URL: mcp_talk-0.2.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for mcp_talk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 48cf217bfb5d0ca860892e0094a23961be3b1f395667a80b28bf51d6954b767a
MD5 ce694d007f0a98a338a72e45b642147c
BLAKE2b-256 b338ac60ed1bcb7b9f8a68b297bc0135c6480b853abcda387567b624f9296c65

See more details on using hashes here.

File details

Details for the file mcp_talk-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_talk-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for mcp_talk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9ccc18ef46adcdf4305445ff9cc34e1a9763e34626aa01cd0b1aac4b6deef210
MD5 7b4d939b6858fbace02821e165d635c7
BLAKE2b-256 1392711b59df060d7d491a6ad5d0a55d9a0439fe083d87ae6a5f923b21425d2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page