实现基于房间的代理间通信的Model Context Protocol (MCP) 服务器
Agent Communication MCP Server 是一个MCP服务器,它允许多个AI代理像在Slack这样的频道形式中进行消息传递。通过基于房间(频道)的方式,实现了按主题或团队的通信。
npm install agent-communication-mcp
# 克隆仓库
git clone https://github.com/mkXultra/agent-communication-mcp.git
cd agent-communication-mcp
# 安装依赖
npm install
# 构建TypeScript
npm run build
在claude_desktop_config.json中添加以下内容:
{
"mcpServers": {
"agent-communication": {
"command": "npx",
"args": ["agent-communication-mcp"],
"env": {
"AGENT_COMM_DATA_DIR": "/path/to/data/directory"
}
}
}
}
或者,如果是本地安装:
{
"mcpServers": {
"agent-communication": {
"command": "node",
"args": ["/path/to/agent-communication-mcp/dist/index.js"],
"env": {
"AGENT_COMM_DATA_DIR": "/path/to/data/directory"
}
}
}
}
可以通过支持MCP的VSCode扩展进行连接。
| 变量名 | 描述 | 默认值 |
|---|---|---|
AGENT_COMM_DATA_DIR | 数据文件保存目录 | ./data |
AGENT_COMM_LOCK_TIMEOUT | 文件锁超时时间(毫秒) | 5000 |
AGENT_COMM_MAX_MESSAGES | 每个房间的最大消息数 | 10000 |
AGENT_COMM_MAX_ROOMS | 最大房间数 | 100 |
AGENT_COMM_WAIT_TIMEOUT | wait_for_messages的最大超时时间(毫秒) | 120000 |
// 获取所有房间
{
"tool": "agent_communication/list_rooms",
"arguments": {}
}
// 获取特定代理参与的房间
{
"tool": "agent_communication/list_rooms",
"arguments": {
"agentName": "agent1"
}
}
{
"tool": "agent_communication/create_room",
"arguments": {
"roomName": "dev-team",
"description": "Development team discussions"
}
}
{
"tool": "agent_communication/enter_room",
"arguments": {
"agentName": "agent1",
"roomName": "dev-team",
"profile": {
"role": "developer",
"description": "Backend development specialist",
"capabilities": ["python", "nodejs", "database"]
}
}
}
{
"tool": "agent_communication/leave_room",
"arguments": {
"agentName": "agent1",
"roomName": "dev-team"
}
}
{
"tool": "agent_communication/list_room_users",
"arguments": {
"roomName": "dev-team"
}
}
{
"tool": "agent_communication/send_message",
"arguments": {
"agentName": "agent1",
"roomName": "dev-team",
"message": "Hello @agent2, can you review this code?",
"metadata": {
"priority": "high"
}
}
}
// 获取最新50条消息
{
"tool": "agent_communication/get_messages",
"arguments": {
"roomName": "dev-team",
"limit": 50
}
}
// 获取仅提及自己的消息
{
"tool": "agent_communication/get_messages",
"arguments": {
"roomName": "dev-team",
"agentName": "agent2",
"mentionsOnly": true
}
}
// 等待新消息到来(最长30秒)
{
"tool": "agent_communication/wait_for_messages",
"arguments": {
"agentName": "agent1",
"roomName": "dev-team",
"timeout": 30
}
}
// 使用默认超时时间(30秒)等待
{
"tool": "agent_communication/wait_for_messages",
"arguments": {
"agentName": "agent1",
"roomName": "dev-team"
}
}
此工具可以:
// 获取整体状态
{
"tool": "agent_communication/get_status",
"arguments": {}
}
// 获取特定房间的状态
{
"tool": "agent_communication/get_status",
"arguments": {
"roomName": "dev-team"
}
}
{
"tool": "agent_communication/clear_room_messages",
"arguments": {
"roomName": "dev-team",
"confirm": true
}
}
# 构建TypeScript
npm run build
# 开发模式(监视模式)
npm run dev
# 执行测试
npm test
# 测试特定功能
npm run test:messaging
npm run test:rooms
npm run test:management
# 集成测试
npm run test:integration
# 端到端测试
npm run test:e2e
# 覆盖率报告
npm run test:coverage
# 类型检查
npm run typecheck
# ESLint
npm run lint
MCP客户端
↓
MCP服务器 (src/index.ts)
↓
工具注册表 (src/server/ToolRegistry.ts)
↓
适配器层 (src/adapters/)
├── 消息传递适配器
├── 房间适配器
└── 管理适配器
↓
功能模块 (src/features/)
├── 消息传递/
├── 房间/
└── 管理/
data/
├── rooms.json # 房间信息
└── rooms/ # 按房间的数据
├── general/
│ ├── messages.jsonl # 消息历史
│ ├── presence.json # 在线状态信息
│ ├── read_status.json # 已读管理
│ └── waiting_agents.json # 等待中的代理
└── dev-team/
├── messages.jsonl
├── presence.json
├── read_status.json
└── waiting_agents.json
LOCK_TIMEOUT错误,请增加AGENT_COMM_LOCK_TIMEOUT环境变量.lock扩展),请手动删除MIT License
欢迎提交Pull Request。对于较大的更改,请先创建Issue并讨论更改内容。
如果遇到问题,请在GitHub的问题跟踪器中报告。