Claude实例通信服务

MCP Claude Duo是一个支持多个Claude Code实例通过对话进行实时通信的协议服务器。

  • by AlexisTrouve
  • JavaScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 AlexisTrouve/mcp-claude-duo

使用说明

MCP克劳德·杜奥

使多个Claude Code实例通过对话相互通信。

概述

MCP克劳德·杜奥是 模型上下文协议(MCP) 服务器,支持多个Claude Code实例之间的实时通信。每个Claude都可以在离线时发送消息、创建群组对话和接收通知。

主要特点

  • 直接对话 -在任意两个Claude实例之间自动创建1对1线程
  • 小组对话 -创建有多个参与者的命名群聊
  • 实时消息 -基于长轮询的即时消息传递
  • 离线通知 -消息被排队,通知被写入 CLAUDE.md
  • 自动注册 -Claude实例在启动时自动连接

建筑

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Claude A       │     │     Broker      │     │  Claude B       │
│  (project-a)    │◄───►│  HTTP + SQLite  │◄───►│  (project-b)    │
│  + mcp-partner  │     │  Conversations  │     │  + mcp-partner  │
└─────────────────┘     └─────────────────┘     └─────────────────┘
  • 经纪人:管理对话和消息路由的中央HTTP服务器
  • MCP合作伙伴:在每个Claude Code实例中运行的MCP服务器

安装

git clone https://github.com/YOUR_USER/mcp-claude-duo.git
cd mcp-claude-duo
npm install

快速开始

1.启动Broker

npm run broker

经纪人继续营业 http://localhost:3210.

2.在Claude代码中配置MCP

全球(所有项目):

claude mcp add duo-partner -s user \
  -e BROKER_URL=http://localhost:3210 \
  -- node "/path/to/mcp-claude-duo/mcp-partner/index.js"

每个项目(具有自定义名称):

claude mcp add duo-partner -s project \
  -e BROKER_URL=http://localhost:3210 \
  -e PARTNER_NAME="My Project" \
  -- node "/path/to/mcp-claude-duo/mcp-partner/index.js"

3.开始说话!

在任何Claude Code实例中:

talk("Hello!", to: "other_project")

在另一种情况下:

listen()
→ Message received from other_project: "Hello!"

MCP工具

沟通

工具 说明
register(name?) 在网络上注册(可选,启动时自动)
talk(message, to?, conversation?) 发送消息
listen(conversation?, timeout?) 监听消息(10-60分钟超时,默认30分钟)
list_partners() 列出已连接的合作伙伴

交谈

工具 说明
list_conversations() 列出您的对话
create_conversation(name, participants) 创建群组对话
leave_conversation(conversation) 离开群组
history(conversation, limit?) 获取对话历史记录

设置

工具 说明
set_status(message?) 设置您的状态消息
notifications(enabled) 启用/禁用CLAUDE.md通知

例子

直接对话

# Claude A
talk("Hey, can you help with the auth module?", to: "project_b")

# Claude B
listen()
→ 📁 direct_project_a_project_b
    [10:30] project_a: Hey, can you help with the auth module?

talk("Sure, what do you need?", to: "project_a")

小组对话

# Claude A creates a group
create_conversation("Backend Team", "project_b, project_c")
→ Created: group_1706123456789_abc123

# Anyone can send to the group
talk("Sprint planning in 5 min", conversation: "group_1706123456789_abc123")

过滤听力

# Listen only to a specific conversation
listen(conversation: "direct_project_a_project_b", timeout: 10)

# Listen to all conversations
listen(timeout: 5)

项目结构

mcp-claude-duo/
├── broker/
│   ├── index.js          # HTTP server & routes
│   └── db.js             # SQLite database layer
├── mcp-partner/
│   ├── index.js          # MCP server entry point
│   ├── shared.js         # Shared utilities
│   └── tools/            # One file per tool
│       ├── register.js
│       ├── talk.js
│       ├── listen.js
│       └── ...
├── docs/
│   ├── schema.sql        # Database schema
│   └── db-schema.md      # Schema documentation
└── data/                 # SQLite database (gitignored)

api参考

代理端点

端点 方法 描述
/register POST 注册合作伙伴
/unregister POST 注销/脱机
/talk POST 发送消息
/listen/:partnerId GET 消息的长轮询
/conversations POST 创建群组对话
/conversations/:partnerId GET 列出对话
/conversations/:id/leave POST 留下对话
/conversations/:id/messages GET 获取对话历史记录
/partners GET 列出所有合作伙伴
/health GET 健康检查

数据库

SQLite数据库,包含以下表格:

  • 伙伴 -已注册的Claude实例
  • 对话 -直接和小组对话
  • 对话_参与者 -会员追踪
  • 消息 -所有消息

看 docs/db-schema.md 获取完整的模式文档。

配置

环境变量 默认值 描述
BROKER_URL http://localhost:3210 代理服务器URL
BROKER_PORT 3210 代理监听端口
PARTNER_NAME Claude 合作伙伴的显示名称

用钩子优雅地关机

要在MCP停止时正确地将Claude实例标记为脱机,请配置一个Claude代码挂钩。

1.创建设置文件(如果不存在):

创建或编辑 ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "duo-partner",
        "hooks": [
          {
            "type": "command",
            "command": "curl -X POST http://localhost:3210/unregister -H \"Content-Type: application/json\" -d \"{\\\"partnerId\\\": \\\"$PARTNER_ID\\\"}\""
          }
        ]
      }
    ]
  }
}

2.或使用Claude CLI:

claude config set hooks.Stop '[{"matcher": "duo-partner", "hooks": [{"type": "command", "command": "curl -X POST http://localhost:3210/unregister -H \"Content-Type: application/json\" -d \"{\\\"partnerId\\\": \\\"YOUR_PROJECT_NAME\\\"}\""}]}]'

替换 YOUR_PROJECT_NAME 使用您的实际合作伙伴ID(通常来自您的项目文件夹名称)。

注: 如果没有这个钩子,合作伙伴将一直标记为“在线”,直到代理重新启动或重新连接。

贡献

欢迎投稿!看 贡献.md 作为指导方针。

许可证

麻省理工学院-参见 许可证 了解详情。