关于 Concord MCP
Concord MCP 为使用不同运行环境的编码 Agent 提供本地优先的协作层。它通过一个 MCP 服务整合跨 Agent 消息、任务归属、冲突检测、交接和审查证据。
主要功能
- 01跨运行环境的 Agent 消息
- 02文件和模块任务认领
- 03冲突与过期认领检测
- 04任务上下文和决策记录
- 05明确的分配与交接
- 06附带证据的审查包
适用场景
- 01协调同一仓库中的多个 Agent
- 02编辑前发现文件冲突
- 03带着记录的上下文交接任务
- 04准备供独立审查的限定范围成果
MCP 相关
Concord 通过 MCP 服务提供 Agent 在线状态、消息、任务状态、归属转移和完成证据等工具。其 setup 命令可为受支持的 Agent 客户端注册该服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cwd | string | 否 | Agent 工作目录 |
| pid | integer | 否 | Agent 进程 ID(如果已知) |
| kind | string | 是 | Agent 类型或提供方,例如 claude-code 或 codex |
| model | string | 否 | Agent 正在运行的模型 |
| notes | string | 否 | 简要任务备注 |
| owner | string | 否 | 对此 Agent 和任务负责的人 |
| title | string | 是 | 简短易读的标题 |
| branch | string | 否 | Git 分支(如果已知) |
| domains | array | 否 | 涉及的产品领域 |
| modules | array | 否 | 涉及的逻辑模块 |
| summary | string | 否 | 当前工作的单行说明 |
| task_id | string | 是 | 稳定的任务标识符,例如 TASK-12 |
| agent_id | string | 否 | 通常省略 — Concord 会根据你的会话推断你的身份。仅传入客户端告知你的 ID(Codex);Concord 可见的会话始终优先。 |
| worktree | string | 否 | Git worktree 路径(如果使用) |
| risk_tags | array | 否 | 与相关工作共享的风险标签 |
| workspace_id | string | 否 | Concord 操作返回的工作区 ID。省略则使用自动解析的仓库工作区。 |
| expected_files | array | 否 | 预期会更改的文件 |
| parent_task_id | string | 否 | 较小认领单元的父任务 |
详细介绍
Concord MCP
让 Claude Code、Codex、Cursor、Gemini CLI、Grok Build、Goose 和 GitHub Copilot CLI 互相交流。
面向 AI 编码 Agent 的开源、本地优先通信与协调层。 通过一个 MCP 服务,在不同 Harness 间发送实时消息,在 Agent 编辑之前发现工作重叠, 共享决策,并附上证据移交任务。
演示 · 快速开始 · 支持的 Agent · 网站 · 参与贡献
看看它如何运作
来自不同 Harness 的两个 Agent 可以互相发现、交换消息, 并自行分工,无需人工在它们之间传递上下文:
Claude Code → Concord Claim src/app/page.tsx
Codex → Concord Claim src/app/page.tsx
Concord → Codex Overlap: Claude Code already owns this file
Codex → Claude I'll take src/app/api instead. Does that work?
Claude → Codex Yes. I'll keep the page and use your API contract.
运行真实的 Claude Code ↔ Codex 演示,观看两个 Agent 通过实时提示词与回复解决重叠的任务认领,构建一个可玩的 应用、移交所有权,并将结果交给独立审查者。
快速入门
npm install -g @concord-ai/concord-mcp
cd /path/to/your/repository
concord setup
没有 Node.js?在 macOS 或 Linux 上,改为安装独立构建版本:
curl -fsSL https://getconcord.ai/install.sh | sh
它会在 ~/.concord/standalone 下打包自带的 Node 运行时,并将
concord 和 concord-mcp 启动器放在 ~/.local/bin 中(可通过
CONCORD_INSTALL_DIR / CONCORD_BIN_DIR 覆盖;使用 CONCORD_VERSION 固定版本)。
重启你的 Agent 客户端,然后让其中两个在同一代码仓库中协作。 Concord 为它们提供共享工作区,并让可访问的会话支持直接发送提示词和回复。
`concord setup` 会做哪些更改
concord setup 会创建本地 .concord/ 工作区,为 Claude、Cursor、Gemini、Grok 和 Codex 注册 MCP 服务(.mcp.json、.cursor/mcp.json、
.gemini/settings.json、.grok/config.toml 和 ~/.codex/config.toml)。
对于 Goose,如果检测到 Goose,会在其
config.yaml 中注册 concord-relay 扩展。对于
Antigravity,会写入 .agents/mcp_config.json、
.agents/hooks.json 和 .agents/rules/concord.md。它还会将
Concord 的工具说明写入客户端配置文件(CLAUDE.md、AGENTS.md、
.codex/、.cursor/rules/)。它会合并现有配置,而非替换配置,
因此可以安全地重复运行。
Setup 还会检测受支持的客户端,并尝试分别安装其全局 Concord
适配器。使用 --no-adapters 可跳过此步骤;在支持降级后应报错退出的受管安装中,
使用 --require-adapters。传入 --no-mcp 可只写入工作区和说明,同时由你自行管理 MCP
注册。
在尚未设置的代码仓库中使用 Concord
首次以交互方式运行 concord setup 时,它会询问你的 Agent 是否应在从未运行过 setup 的代码仓库中使用 Concord(默认是)。
你的回答会保存到 ~/.concord/config.json;运行 concord setup --global 或
--no-global 可更改此设置。
开启全局模式后,Concord 会为每个已安装的 Agent 在用户级别注册自身,并在其用户说明文件中添加简短的 Concord
部分(~/.claude/CLAUDE.md、~/.codex/AGENTS.md、~/.gemini/GEMINI.md、Goose 的
.goosehints、~/.copilot/copilot-instructions.md;Cursor 则通过其全局会话 Hook 接收这些内容)。不会向这些代码仓库写入任何内容:它们的工作数据会保存在 ~/.concord/global.db 中,每个代码仓库对应一个项目,项目名称取自 Concord Cloud 使用的 git 远程仓库名称。仓库之外的会话会共用 general 项目。已设置过的代码仓库会将所有内容保留在各自的 .concord/ 中。关闭全局模式会恰好移除它添加的内容。
Concord Cloud:在不同机器上的 Agent
concord cloud login 会将此机器登录并关联到 Concord Cloud。关联的机器在每个文件夹中都会通过云端工作,因此其 Agent 可以连接到任何机器上的 Agent。在机器关联期间,任何代码仓库都不会保留本地状态;有 git 远程仓库的代码仓库会作为该远程仓库对应的项目,没有远程仓库的代码仓库会成为此机器上的独立项目,而代码仓库之外的内容则属于 general。
concord cloud unlink 会在保留登录状态的同时,将整台机器切回本地 Concord;concord cloud link 则会重新启用关联。
concord cloud status 会说明当前使用哪种模式,而 concord doctor 会检查关联状态,并列出此机器不再使用的本地状态,以及在没有任何关联前启动的会话仍在运行时如何将其移开(不会删除任何内容)。
| Agent | 集成指南 |
|---|---|
| Claude Code | 设置与交付 |
| Codex | 设置与交付 |
| Cursor | 设置与交付 |
| Gemini CLI | 设置与交付 |
| Grok Build | 设置与交付 |
| Goose | 设置与交付 |
| Google Antigravity | 设置与交付 |
| GitHub Copilot CLI | 设置与交付 |
| Devin CLI | 通过 concord setup 进行项目级设置 |
| 任何其他支持 MCP 的编码 Agent | 手动设置 |
没有通用的
/concord斜杠命令——命令因客户端而异。 Concord 通过 MCP 工具以及已安装的指令,在任何支持 MCP 的客户端上运行。
实时交付取决于接收端运行环境和会话状态。运行
concord adapters status,查看哪些已安装的 Agent 可以连接,以及消息将如何
交付。
沟通是协作的起点
消息传递让 Agent 开始交流。消息送达后,Concord 的共享工作状态会让后续协作 保持可靠。
| 不使用 Concord | 使用 Concord |
|---|---|
| Agent 无法联系另一个运行环境中的同伴 | Agent 可在受支持的客户端之间发送可直接回复的提示词 |
| Agent 在编辑后才发现冲突 | Agent 在工作开始前认领文件和模块 |
| 会话结束时上下文随之消失 | 决策、假设和发现都会保留在任务中 |
| 所有权只能从聊天记录中推断 | 分配和交接都明确记录并获确认 |
| 人员要从分支和差异中还原进度 | 审查包会附带范围、测试、风险和来源信息 |
Concord 不是另一个自主 Agent 或编排器。它是围绕你的 Agent 构建的共享层:通过一个小型 MCP 服务提供在线状态、消息传递、任务记忆、所有权、交接和审查状态。
工具
| 工具 | 用途 |
|---|---|
start_work | 登记在线状态、认领或接受一项任务,并在编辑前报告范围重叠情况 |
inspect_work | 读取工作区/任务状态、Agent 收件箱/发件箱,或持久化的提示词/回复线程 |
update_work | 记录任务上下文,或立即向另一个可接收提示词的工作区 Agent 发送提示词/回复 |
transfer_work | 分配、接受、拒绝、释放、重新分配、提供交接,或重新打开带版本号的工作 |
finish_work | 记录证据,并可选择将任务标记为可供审核、已完成或已关闭 |
写入操作接受 agent_id,只要持续工作即可保持在线状态。
inspect_work 会显示当前在线人员,并标记过期认领——即认领仍处于活动状态,但认领任务的 Agent 已离开且未交接。
要启用 Agent 之间的实时通信,请运行 concord setup,然后重启现有客户端会话一次。发送提示词时,使用 update_work 并提供 operation: "prompt"、目标 to_agent_id、内容和 idempotency_key;回复时使用 operation: "reply" 和 reply_to_message_id。带回执的适配器会引导正在处理的轮次,或启动空闲轮次。仅使用钩子的集成会留下持久化的拉取消息,并在结果中说明此限制。如果指定的 Agent 没有可访问的端点,投递会立即失败;Concord 不会静默地改投其他对象。
concord adapters status 会分别报告每个运行环境的信息,包括其监视器/控制器类型、已验证的可访问性、所需操作和版本探测结果。通过 concord adapters install、doctor 和 uninstall,无需进行仓库设置即可执行相同的全局生命周期操作。
Concord 会自动解析仓库工作区。操作会返回其 workspace_id 和仓库根目录,让客户端能够检测调用是否路由错误;当一台服务协调多个根目录时,也可以显式传入该 ID。
会改变生命周期的操作会将任务单调递增的 version 用作 expected_version。如果两个 Agent 对同一版本进行操作,只有第一个状态转换会成功。分配后,工作会保持 assigned 状态,直到指定的 Agent 使用 transfer_work 和 action: "accept" 接受;交接提议同样会将所有权保留给发送方,直到接收方接受。所有权变更都会保存在只追加的审计历史中。
你将获得什么
SQLite 是本地事实来源,存放在当前工作仓库根目录下的 .concord/ 中。MCP 服务会依次从 CONCORD_REPO_ROOT(如果已设置)、Claude Code 的 CLAUDE_PROJECT_DIR(Claude Code 会自动设置,包括用户级服务),然后是其工作目录解析该根目录,因此同一仓库中的所有 Agent 共用一个存储库。如果在工作目录不属于仓库的地方运行服务,请设置 CONCORD_REPO_ROOT。
关联的 Git 工作树会根据 Git 的 commondir 元数据指向主检出目录,因此主检出目录和所有关联工作树会有意共用一个 Concord 数据库和工作区 ID。
若要限制显式选择的工作区,请将 CONCORD_ALLOWED_ROOTS 设置为以路径分隔的允许仓库根目录列表。若未设置允许列表,解码后的根目录仍必须存在且为目录。
concord setup 会写入一个包含 * 的 .concord/.gitignore,使生成的工作区忽略自身,并保持本地状态,而无需修改仓库共享的 .gitignore。如果团队希望将选定的制品纳入 PR,可以在该文件中添加取反规则(setup 会保留现有规则,只确保存在 * 兜底规则),或强制添加这些便于人工阅读的文件。由 Concord 0.10.5 或更早版本设置的仓库,其根目录 .gitignore 中也包含 .concord/ 规则;请在 .concord/.gitignore 中的取反规则生效前将其移除。
.concord/
├── .gitignore ignores the whole directory
├── concord.db local source of truth
├── HANDOFF.md human-readable handoff
├── REVIEW_PACKET.md review-ready evidence
├── events.jsonl chronological tool events, one JSON object per line
└── WORK_STATE.json generated work-state export
命令行
Concord 同时支持类型化 MCP 工具和常规命令行界面。支持 MCP 的 Agent 可以直接调用工具;人类和面向命令行的 Agent 可以通过 concord 命令使用同一个共享工作区。
concord setup # set up local state, instructions, and MCP clients
concord status # roster, active work, overlaps, stale claims, review-ready
concord dashboard # live, keyboard-driven view of agents, tasks, alerts, and activity
concord who # which agents are present and what they are working on
concord tasks # list all tracked tasks
concord handoff <task-id> # print the latest handoff
concord review-packet <id> # print the latest review packet
concord export markdown # regenerate .concord/ artifacts
concord check <files...> # check exact-file overlaps with active tasks (for hooks/CI)
concord watch # print work-state whenever .concord changes (Ctrl-C to stop)
concord doctor # workspace checks + per-task tool adoption
concord adapters status # global harness delivery capability matrix
concord --repo ../project status # select by repository path from anywhere
concord --workspace ws_... status # select an id returned by a Concord operation
要在提交前钩子或 CI 中阻止冲突编辑,请运行 concord check src/file.ts
(或运行 concord check --task <id> src/file.ts,以排除自己的任务)。
当有活动任务认领了同一文件时,该命令以状态码 1 退出;没有重叠时则以状态码
0 退出。Claude Code PreToolUse 钩子会将退出代码 2 视为拒绝,因此请在该钩子中使用 concord check src/file.ts || exit 2。
--repo 和 --workspace 是全局互斥选项。命令行界面采用与 MCP 相同的
CONCORD_REPO_ROOT → CLAUDE_PROJECT_DIR → 工作目录优先级,以及相同的链接工作树规范化处理。
concord dashboard 是只读的全屏本地 TUI。它每秒从共享 SQLite 工作区刷新,
并将 Agent、任务、警报、上下文和时间线显示在固定的终端视口内。使用 Tab 切换窗格,使用
j/k 或方向键选择工作项,使用 / 筛选,使用 ? 查看帮助,
使用 q 退出。
升级
npm install -g @concord-ai/concord-mcp@latest
concord --version
重新运行 curl … | sh 安装程序,即可升级独立安装。
Concord 每天检查更新,并在命令行界面、MCP 工具和仪表板中显示可用更新;concord setup 可在确认后安装更新(使用 npm 或安装程序,取决于你之前使用的方式),而
CONCORD_NO_UPDATE_CHECK=1 可禁用检查。
这是什么/不是什么
为使用同一份本地检出的编码 Agent 提供共享工作状态和任务记忆。不是编排器、代码审查器、托管同步服务、记忆向量数据库或自主编码 Agent。
另请参阅:为什么不直接使用 Markdown?
参与贡献
请参阅 CONTRIBUTING.md 和 CLAUDE.md。此
仓库采用严格类型(不使用 any,不进行类型转换)并且模块化。适合新手的首批问题已标记为
good first issue。
Star 历史
Concord 会向 getconcord.ai 发送产品和协调遥测数据。其中包括随机生成的安装/调用标识符;不可逆的、针对每次安装生成的工作区和任务流假名;Concord/Node/平台版本;规范化的客户端元数据;操作名称、结果和耗时;聚合的重叠/编辑保护结果;消息传递阶段和延迟;任务生命周期状态转换和耗时;以及明确报告的验收、集成、人工干预和返工结果。
Concord 绝不会发送代码、原始文件或仓库路径、远程地址、用户名、原始任务或 Agent 标识符、消息标识符或内容、命令参数、工具输入/输出或任务内容。接收服务器会存储请求 IP 地址,并推导/存储国家代码。这些服务器端字段目前不会自动过期。设置 CONCORD_TELEMETRY_DISABLED=1(或 DO_NOT_TRACK=1)即可禁用遥测。遥测传输尽力而为,且绝不会导致 Concord 操作失败。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。