Multi-Agent MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Multi-Agent MCPHave the leader assign the login feature to Bob and Carol"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Multi-Agent MCP
基于 FastMCP 构建的多智能体团队协作 MCP 服务器。通过 tmux 终端窗口为每个 agent 成员创建独立的 CLI 会话,由 Leader 统一接收总任务、拆分子任务并分配给各成员。
支持 Claude Code + OpenAI Codex CLI 混合 agent 协同工作。
架构概览
┌──────────────────────────────────────────────────────────────────┐
│ 你的 VS Code / 主会话 │
│ │
│ 用自然语言管理团队、启动终端、分配总任务 │
│ ↓ │
│ MCP Server (FastMCP) ←── teams_data.json (持久化) │
│ ↓ │
│ ┌─ tmux session: mcp_dev_team ─────────────────────────────────┐ │
│ │ window: 👑alice (leader · codex) ← 自动连接 MCP │ │
│ │ window: bob (coder · claude) ← 纯文本接收子任务 │ │
│ │ window: carol (tester · codex) ← 纯文本接收子任务 │ │
│ └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘Related MCP server: Agent Collaboration MCP Server
环境要求
依赖 | 版本/说明 |
Python | ≥ 3.10 |
FastMCP | ≥ 2.0 ( |
tmux |
|
Claude Code | (可选) |
Codex CLI | (可选) |
安装
1. 克隆项目
git clone <your-repo-url> mult_agent_mcp
cd mult_agent_mcp
./install.sh2. 安装依赖
pip install fastmcp3. 确保 tmux 可用
tmux -V未安装时:
# Ubuntu / Debian
sudo apt install tmux
pip install textual
# macOS
brew install tmux4. 安装至少一个 Agent CLI
# Claude Code
npm install -g @anthropic-ai/claude-code
# Codex CLI(需要 Node.js ≥ 22,ChatGPT Plus/Pro 账号或 API Key)
npm install -g @openai/codex5. 配置 MCP 连接
Claude Code — 在 .claude/mcp.json 中添加:
{
"mcpServers": {
"mult-agent-mcp": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}Codex CLI — 终端执行:
codex mcp add mult-agent-mcp --url http://localhost:8000/mcp或让 MCP server 自动配置(见下文 setup_codex_mcp)。
💡 leader 终端在
launch_team_terminals时会自动配置 MCP(Claude → 写入.claude/mcp.json,Codex → 注册到~/.codex/config.toml)。
6. 启动 MCP 服务器
cd mult_agent_mcp
python mult_agent_mcp.py
# 或指定端口
FASTMCP_PORT=8000 python mult_agent_mcp.pyTeam Manager TUI(团队管理可视化界面)
无需自然语言命令,通过终端图形界面直接管理团队和成员。
启动
cd mult_agent_mcp
pip install textual # 首次需要安装
python team_manger.py主界面
┌─ Multi-Agent MCP — Team Manager ─────────────────────────────┐
│ 📋 共 2 个团队 │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 团队名称 │ 成员数 │ 默认Agent │ Leader │ 终端状态 │ │
│ │ dream_team │ 3 │ claude │ alice(tmux)│ 🟢 │ │
│ │ dev_team │ 2 │ codex │ — │ ⚫ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ A 添加团队 | Enter 查看详情 | D 删除团队 | L 接管Leader | Q 退出│
└───────────────────────────────────────────────────────────────┘团队详情页(选中团队按 Enter)
┌─ Team Manager ───────────────────────────────────────────────┐
│ 📋 dream_team 终端: 🟢 运行中 │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ 名称 │ 角色 │ Agent │ Leader │ │ │
│ │ alice │ leader │ codex │ 👑 │ ← 当前行 │ │
│ │ bob │ coder │ claude│ │ │ │
│ │ carol │ tester │ codex │ │ │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ 3 个成员 | Leader: alice (tmux) │
│ │
│ A 添加成员 | R 移除成员 | E 编辑成员 | L 指定Leader | Esc 返回 │
└───────────────────────────────────────────────────────────────┘操作快捷键
主界面
按键 | 功能 |
| 弹出创建团队表单(名称/描述/默认Agent) |
| 进入团队详情页 |
| 删除选中团队(有确认) |
| 直接接管 Leader(当前会话) |
| 退出 |
详情页
按键 | 功能 |
| 弹出添加成员表单(名称/角色/Agent) |
| 移除选中成员(Leader 不可直接移除) |
| 编辑成员的角色和 Agent |
| 将选中成员指定为 Leader |
| 启动团队 tmux 终端 |
| 关闭团队 tmux 终端 |
| 打开 Leader 终端;TUI 在 tmux 内运行时会分屏进入,否则打开新终端窗口 |
| 返回主界面 |
详情页成员状态列会显示稳定文字状态:working 表示窗口存活且有未完成任务,idle 表示窗口存活但无进行中任务,sleep 表示任务完成后休眠,dead 表示未启动或异常退出。
数据兼容
TUI 直接读写 MCP Server 的 teams_data.json,两者完全互通:
TUI 添加团队 ─→ teams_data.json ←─ MCP Server team_create
TUI 添加成员 ─→ teams_data.json ←─ MCP Server add_member
TUI 指定Leader ─→ teams_data.json ←─ MCP Server set_leader可以用 TUI 创建团队,然后在 Claude Code 中 launch_team_terminals 启动终端;也可以反过来。
快速开始
所有操作在 Claude Code / Codex 的聊天框中用自然语言完成。
第一步:创建混合 agent 团队
> 创建一个团队叫 dream_team,默认 agent 用 claude。
添加三个成员:
alice(role=leader, agent=codex),
bob(role=coder, agent=claude),
carol(role=tester, agent=codex)等价于:
team_create("dream_team", "混合 agent 团队", default_agent="claude")
add_member("dream_team", "alice", role="leader", agent="codex")
add_member("dream_team", "bob", role="coder", agent="claude")
add_member("dream_team", "carol", role="tester", agent="codex")
set_leader("dream_team", "alice")第二步:启动终端
> 启动 dream_team 的终端,任务是"实现用户登录系统"MCP server 自动完成:
alice (codex leader):注册 MCP 到
~/.codex/config.toml,启动 codex 窗口bob (claude coder):启动 claude 窗口
carol (codex tester):启动 codex 窗口
总任务文本发送到 alice 的终端
第三步:Leader 拆分与分配
Leader (alice) 在自己的终端中:
> 查看团队
→ leader_list_team("dream_team")
→ bob(coder · claude), carol(tester · codex)
> 让 bob 实现登录页面,让 carol 写测试用例
→ leader_assign_subtask("dream_team", "bob", "实现登录页面...")
→ leader_assign_subtask("dream_team", "carol", "写登录测试用例...")第四步:收尾
> 查看终端状态
→ terminal_status("dream_team")
> 关闭所有终端
→ kill_team_terminals("dream_team")两种 Leader 模式
tmux 模式(默认)
Leader 在独立 tmux 窗口中运行,自动连接 MCP server。
你 ─→ MCP ─→ launch_team_terminals ─→ [alice tmux] ─→ leader_* ─→ [bob] [carol]Direct 模式
你直接在当前会话充当 leader。
claim_leader("dream_team")
# 如果旧 leader 存活 → 自动降级为普通成员
# 如果旧 leader 已死 → 直接接管
# 直接在当前会话分配任务
leader_assign_subtask("dream_team", "bob", "实现登录页面")
leader_broadcast("dream_team", "进度更新:前端完成 30%")
# 释放
unclaim_leader("dream_team", restore_member="alice")混合 Agent 协同(Claude + Codex)
核心设计
每个成员有独立的 agent 字段,值为任意 CLI 命令。MCP server 根据 agent 类型自动适配:
Agent 类型 | 识别规则 | MCP 配置方式 | Leader 启动 |
| 包含 "claude" | 写入 | 从团队共享工作目录启动 |
| 包含 "codex" | 注册到 | 用 |
其他 | 不匹配以上 | 两种都尝试 | 从团队共享工作目录启动 |
workspace_dir 默认避开内部 .team_workspaces/<team> 隔离目录,优先使用进入 agent 前的工作目录;通过 team_manger.py 启动时使用 team_manger.py 所在目录。成员交换报告、补丁、文件锁和压缩上下文时使用 share_context_space/<team> 共享上下文区。
混合团队示例
# 创建团队
team_create("mixed_team", default_agent="claude")
# Claude 作为 leader + Codex 作为成员
add_member("mixed_team", "alice", role="leader", agent="claude")
add_member("mixed_team", "bob", role="coder", agent="codex")
add_member("mixed_team", "carol", role="tester", agent="codex")
set_leader("mixed_team", "alice")
# 或者反过来——Codex 作为 leader
add_member("mixed_team", "dave", role="backend_dev", agent="claude")
member_set_agent("mixed_team", "alice", "codex") # 切换 leader 类型
launch_team_terminals("mixed_team", task="实现微服务架构")
# 检查 agent 配置状态
check_agent_setup("mixed_team")
→ Claude MCP: ✅
→ Codex MCP: ✅Codex MCP 管理工具
工具 | 说明 |
| 手动注册 Codex MCP(等效于 |
| 移除 Codex MCP |
| 检查团队中所有 agent 的 MCP 配置状态 |
# 也可以手动在终端执行
codex mcp add mult-agent-mcp --url http://localhost:8000/mcp
codex mcp list任务传递原理
无论 member 是 Claude 还是 Codex,子任务通过 tmux send-keys 以纯文本发送到对应窗口。成员终端收到文本后,像有用户在终端打字并按回车一样,agent CLI 自动解析并执行。
leader_assign_subtask("team", "bob", "实现登录页面")
│
▼
tmux send-keys -t mcp_team:bob "实现登录页面" Enter
│
▼
bob 的终端窗口收到文本 → claude 或 codex 开始执行如果成员卡在文件修改或命令执行的授权提示中,Leader 可先读取成员终端,再向该成员终端发送受控确认选项:
leader_read_member_terminal("team", "bob") # 查看成员是否停在 approval prompt
leader_authorize_member("team", "bob", "yes") # 选择第 1 项,通常为本次允许
leader_authorize_member("team", "bob", "session") # 选择第 2 项,通常为本会话记住
leader_authorize_member("team", "bob", "3") # 选择第 3 项,具体含义以终端提示为准完整工具参考
用户端工具(团队管理)
工具 | 参数 | 说明 |
|
| 创建团队,可指定默认 agent |
| — | 列出所有团队 |
|
| 删除团队及终端 |
|
| 修改团队默认 agent |
用户端工具(成员管理)
工具 | 参数 | 说明 |
|
| 添加成员。agent 为空时继承团队默认值 |
|
| 移除成员 |
|
| 列出成员(含 agent 类型) |
|
| 指定 tmux leader |
|
| 修改成员 agent(claude/codex/自定义) |
用户端工具(Agent 配置)
工具 | 参数 | 说明 |
|
| 注册 Codex MCP 到 |
|
| 移除 Codex MCP |
|
| 检查团队所有 agent 的 MCP 配置状态 |
| — | 查看 MCP 配置(Claude + Codex 双格式) |
用户端工具(Leader 切换)
工具 | 参数 | 说明 |
|
| 将当前会话注册为 leader |
|
| 释放 leader |
用户端工具(终端管理)
工具 | 参数 | 说明 |
|
| 启动所有成员的 tmux 终端 |
|
| 关闭所有终端 |
|
| 查看终端状态(含 agent 类型) |
Leader 端工具
工具 | 参数 | 说明 |
|
| 查看团队面板 |
|
| 分配子任务(支持 claude + codex 成员) |
|
| 广播消息给全员 |
|
| 对成员终端中的授权提示发送确认选项 |
|
| 读取成员终端最近输出,定位授权卡点 |
|
| 巡检成员终端,识别 approval/busy/idle/dead,并让空闲成员退出 working |
|
| 设置成员 |
|
| 动态添加成员 + 创建终端 |
|
| 移除成员 + 关闭终端 |
|
| 修改成员角色/agent |
|
| 启动成员终端 |
成员协作工具
工具 | 参数 | 说明 |
|
| 回传结果并生成压缩上下文 |
|
| 读取共享上下文区最近结果 |
|
| 列出共享上下文区文件 |
|
| 申请文件修改锁 |
|
| 释放自己的文件锁 |
|
| 查看活跃文件锁 |
|
| 将修改以 patch 提交到共享上下文区 |
多人需要修改同一文件时,优先由成员申请 member_acquire_file_lock;未拿到锁的成员应提交 member_submit_patch,由 leader 或锁持有人合并,避免直接覆盖其他成员改动。
claim_leader 接管逻辑
claim_leader("team")
│
├── 已经是 direct leader
│ → 提示"你已经是 leader"
│
├── 之前无 leader
│ → 🆕 设为直接控制模式
│
├── 有 tmux leader 且终端存活
│ → 🔄 原 leader 降级为普通成员(窗口保留)
│ → ✅ 你接管为 leader
│
└── 有 tmux leader 但终端已死
→ 💀 直接接管,清理死引用数据存储
{
"teams": {
"dream_team": {
"description": "混合 agent 团队",
"leader": "alice",
"leader_type": "tmux",
"default_agent": "claude",
"terminals_active": true,
"members": {
"alice": {"role": "leader", "model": "", "agent": "codex"},
"bob": {"role": "coder", "model": "", "agent": "claude"},
"carol": {"role": "tester", "model": "", "agent": "codex"}
}
}
}
}字段 | 说明 |
| 被指定为 leader 的成员名 |
|
|
| 团队默认 agent,新成员继承 |
| 团队共享工作目录 |
| 团队共享上下文区 |
| tmux session 是否在运行 |
| 成员 CLI 命令( |
| 成员角色标识 |
| 成员使用的模型(可选) |
MCP 配置位置:
Claude:
<workspace_dir>/.claude/mcp.jsonCodex:
~/.codex/config.toml(全局,所有 codex agent 共享)
tmux 操作速查
# 查看团队终端
tmux attach -t mcp_dev_team
# 在 tmux 中: Ctrl+B 然后按数字键 → 切换窗口
# 在 tmux 中: Ctrl+B 然后按 W → 列出所有窗口
# 在 tmux 中: Ctrl+B 然后按 D → 脱离(不关闭)
tmux list-sessions # 列出所有 session
tmux list-windows -t mcp_dev_team # 列出某 session 的窗口常见问题
Q: leader 的终端如何获得 leader_* 工具?
A: launch_team_terminals 根据 leader 的 agent 类型自动配置 MCP:
Claude leader → 写入
<workspace_dir>/.claude/mcp.json,claude 启动在此目录自动加载Codex leader → 注册到
~/.codex/config.toml,用-C进入共享工作目录,并收到要求使用leader_*工具协调已有成员的初始提示
Q: Codex 和 Claude 成员之间如何协同?
A: 成员终端通过 tmux send-keys 接收纯文本指令——与具体 CLI 无关。Leader 把 "实现登录页面" 发给 bob(claude)和 "写测试" 发给 carol(codex),两者都在自己终端中收到文本并按各自方式执行。
Q: Codex 作为 leader 时的限制?
A: Codex 需要先完成 MCP 注册才有 tool calling 能力。launch_team_terminals 会自动处理,或手动执行 setup_codex_mcp()。Codex 的 MCP 是全局注册(~/.codex/config.toml),同一台机器上所有 codex 实例共享;Codex leader 启动时会收到明确提示,要求使用 leader_list_team / leader_assign_subtask 等团队 MCP 工具,而不是用 Codex 内置 spawn 代替团队成员。
Q: 如何在 direct 模式下分配差异化任务?
A: 先用 claim_leader 接管,然后多次调用 leader_assign_subtask,每次指定不同 member_name 和 subtask。
Q: tmux leader 终端被关闭了怎么办?
A: 调用 claim_leader("team_name"),系统检测到旧 leader 已死,自动接管。之后可重新 launch_team_terminals。
Q: 如何从 Claude leader 切换到 Codex leader?
A: member_set_agent("team", "alice", "codex") 然后重新 launch_team_terminals。tmux 模式下旧窗口会被重建,新窗口启动 codex 并自动配置 MCP。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/davidzong1/Mult-Agent-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server