Skip to main content
Glama

AI Bridge

一个给 Claude 和 Codex 共用的最小协作公告板:看对方的进度、互相留言、认领文件,避免同时修改同一个文件。人也可以从命令行留言。Stop 钩子会在 AI 一轮结束时把新消息带进它的会话。

Windows 优先,只有一个 Rust 程序 bridge-mcp.exe,不需要桌面界面、Node.js 或 Python 运行环境。完整旧版保存在标签 v0-full。

怎么用

在同一个项目里,分别打开 Claude 和 Codex 的干活会话,告诉它们各自负责什么。它们通过 MCP 工具查看进度、认领文件和留言;Stop 钩子在一轮结束时检查新消息,让收件方在自己的会话里继续处理。Bridge 负责传递协作消息,具体工作仍由两个 AI 完成。

已经空闲的 Codex 不会被新消息自动叫醒。 这时需要你去它的窗口说一句话,让它继续一轮;如果它发完消息后还要等对方回复,可以让它用 wait 原地等待,按下文的完整路径、超时和已读流程执行。

对 AI 说“开始监视”或“停止监视”即可开关监视,规则见 RULES.md 第 7 条。

Related MCP server: synco-mcp

安装与开启项目

从源码安装需要 Git、Rust stable 和 MSVC C++ 构建工具。在仓库目录运行:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-local.ps1

安装脚本编译并复制到 %USERPROFILE%\.bridge\bin\bridge-mcp.exe,不修改 Claude 或 Codex 的配置。更新前先完全退出两端;如果仍提示占用,检查是否还有后台进程。

$bridge = Join-Path $env:USERPROFILE '.bridge\bin\bridge-mcp.exe'
& $bridge on D:\code\example
& $bridge status
& $bridge show D:\code\example

全局总开关默认开启,每个项目默认关闭;开关由用户操作。Git 子目录和 worktree 归到同一个仓库。消息保存在 %USERPROFILE%\.bridge\bridge.db;更新兼容已有数据库并保留旧表、旧消息。

配置 MCP

已经接入的用户保留原 MCP 配置即可。新用户先在 PowerShell 执行下面的命令,它只打印两段可复制配置,不写文件。使用实际展开的安装路径,是因为 MCP 的 command 字段不会自动展开 %USERPROFILE%。

Git Bash 里的 ~ 可能不是 Windows 的 %USERPROFILE%。本文的用户配置和安装路径统一以 PowerShell 的 $env:USERPROFILE 为准,不要用 Git Bash 的 ~ 推算。

$bridge = Join-Path $env:USERPROFILE '.bridge\bin\bridge-mcp.exe'
@{ mcpServers = @{ bridge = @{ type = 'stdio'; command = $bridge; args = @(); env = @{ BRIDGE_AGENT = 'claude' } } } } | ConvertTo-Json -Depth 6
@"
[mcp_servers.bridge]
command = '$bridge'
args = []

[mcp_servers.bridge.env]
BRIDGE_AGENT = "codex"
"@
  • 把第一段 JSON 的 mcpServers.bridge 合入 %USERPROFILE%\.claude.json。

  • 把第二段 TOML 合入 %USERPROFILE%\.codex\config.toml。

  • 保留文件里已有的其他配置。两端身份分别是 claude、codex,两端使用同一个数据库。

  • MCP 连接时会直接提供 RULES.md 中的完整协作规则,无须另行复制到全局 CLAUDE.md 或 AGENTS.md。更新 exe 后重启两端以加载新规则,在干活的窗口调用 bridge_overview 验证。

MCP 一共 7 个工具:bridge_overview、send_message、read_messages、update_status、claim_files、release_files、list_projects。所有工具的 project 都填项目根目录的绝对路径。

配置 Stop 钩子

钩子在 AI 每轮结束时检查未读消息,有消息就让它继续一轮;这一轮已经由 Stop 钩子续过时,不再次续跑。它不会唤醒早已停下的会话,也不会替用户授予新任务权限。

下面的命令在运行时展开 %USERPROFILE%\.bridge\bin\bridge-mcp.exe。使用 PowerShell 包装是为了兼容 Windows 路径中的中文、空格以及 UTF-8 输出。把配置合入已有文件,保留其他钩子;不要用整个示例覆盖已有设置。

Claude Code:%USERPROFILE%\.claude\settings.json

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "shell": "powershell",
            "command": "powershell.exe -NoProfile -Command \"[Console]::OutputEncoding=[Text.UTF8Encoding]::new(); & ([Environment]::GetEnvironmentVariable('USERPROFILE') + '/.bridge/bin/bridge-mcp.exe') hook --agent claude\"",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

Codex:%USERPROFILE%\.codex\hooks.json

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "powershell.exe -NoProfile -Command \"[Console]::OutputEncoding=[Text.UTF8Encoding]::new(); & ([Environment]::GetEnvironmentVariable('USERPROFILE') + '/.bridge/bin/bridge-mcp.exe') hook --agent codex\"",
            "timeout": 30
          }
        ]
      }
    ]
  }
}

在 Codex 里用 /hooks 检查并确认信任。修改钩子配置后,按客户端提示重新加载、重新信任;如果当前客户端没有这些入口,需使用支持 Stop 钩子的版本。配置格式见 Claude Code 官方钩子文档 和 Codex 官方钩子文档。

钩子出错时只向 stderr 记录错误,退出码仍是 0,不阻止 AI 正常结束。一次最多投递最近 10 条并标为已读,剩余消息用 read_messages 查看。

收件窗口和重新指定

同一个项目的每个 AI 各有一个收件窗口。第一次真正投递消息时绑定当前窗口;它保持活跃时,其他提问窗口的钩子不会抢走消息。收件窗口超过两小时没有触发钩子后,下一次有消息可送的窗口可以接替。

首次绑定之前或两小时失效以后,提问窗口也可能成为收件窗口。 想明确指定干活窗口,或者认错窗口时,先运行:

& $bridge rebind D:\code\example --agent claude
& $bridge rebind D:\code\example --agent codex

然后在各自想接收消息的窗口里说一句话。这一轮结束时,即使没有消息,也会完成绑定。每条命令只影响所指定的 AI;重新指定后,避免先在其他窗口触发 Stop 钩子。

只回答问题的窗口应遵循 RULES,不主动调用 Bridge 的读消息工具;收件绑定约束的是钩子投递,主动调用读消息工具仍会标记已读。

在其他项目里使用

要使用包含 Stop 自动收信的完整流程,项目必须是 Git 仓库。Bridge 程序、上面的 MCP 配置和钩子配置都是全局的,配好一次后无须为每个项目重复安装或复制配置。对已有 Git 仓库,只需由用户开启新项目的开关,再在两端打开该项目的干活会话:

$bridge = Join-Path $env:USERPROFILE '.bridge\bin\bridge-mcp.exe'
& $bridge on "D:\code\another-project"

每个项目的每个 AI 使用一个干活窗口。另开的提问窗口不调用 Bridge;在干活窗口已绑定且保持活跃时,提问窗口的 Stop 钩子不会抢走消息。首次绑定、两小时失效和认错窗口的情况见上文;需要指定窗口时运行 rebind,再到目标窗口说一句话。

暂时不想在这个项目使用 Bridge,可运行 & $bridge off "D:\code\another-project",其他项目的开关不受影响。

同一仓库的 Git worktree 共用公告板、消息已读状态和每个 AI 的收件窗口。 worktree 可以分开代码目录,但不能隔离多对 AI 的协作消息;当前暂不支持在同一个仓库的多个 worktree 中运行多对互相独立的 Claude/Codex。

和审查规则配合

如果项目已有通过 REVIEW/REPLY 文件交接的规则,可以保留文件和原有分工。把“写完文件后由用户触发下一轮”改为:写完文件后,通过 Bridge 的 send_message 通知对方,说明文件路径和需要它做什么。审查意见、技术细节和逐条回复仍写在文件里,Bridge 消息只做通知。

对方已经空闲时,仍需按“怎么用”一节由用户唤起,或让对方事先用 wait 等待。通知只用于已授权工作的交接,不能代替用户授权。

命令行

下面用 bridge-mcp 简写已安装程序。PowerShell 中用前面定义的 & $bridge 代替;省略项目时使用当前目录。

命令

用途

on [项目] / off [项目]

开关项目

on --global / off --global

开关全局协作

status

查看开关和项目

show [项目] [--include-older]

查看公告板,可展开较早会话,不标记已读

read [项目]

读取并标记给 human 的未读消息

post [项目] "内容" [--to all|claude|codex]

以 human 身份留言

wait [项目] --agent claude|codex --timeout 300

等待启动之后的新消息,只读且不标记已读

hook --agent claude|codex

从 stdin 接收钩子 JSON;通常由客户端执行

rebind [项目] --agent claude|codex

指定下一次触发钩子的窗口为收件窗口

需要 AI 原地等回复时,使用完整安装路径。例如 PowerShell:

& "$env:USERPROFILE\.bridge\bin\bridge-mcp.exe" wait "D:\code\example" --agent codex --timeout 300

Git Bash 使用 "$USERPROFILE/.bridge/bin/bridge-mcp.exe" wait "D:/code/example" --agent claude --timeout 300。把命令工具的执行超时设为大于 300 秒,例如 360 秒(360000 毫秒);也可通过后台进程或会话句柄分段等待。有新消息返回后,先调用 MCP 的 read_messages 读取并标记已读,再处理消息,避免 Stop 钩子再次投递。等待超时最多重试至三轮,开关关闭或命令报错时停止等待。

常见问题

Claude 为什么把消息标成 Stop hook blocking error?

Bridge 用 {"decision":"block","reason":"…"} 让 Claude 先处理新消息再结束,正常投递时退出码是 0。Claude 会把这种阻止结束的反馈显示为上述标签;单凭这个标签不代表程序出错。这里的 block 表示继续当前工作,详见 Claude Stop 钩子的决策说明。

消息没有自动送达,先检查什么?

  1. 未开启: 用 & $bridge status 检查项目开关和全局总开关。两者都开启,才会正常投递;开关由用户操作。

  2. 收件窗口不是当前窗口: 消息可能仍绑定到另一个干活窗口。按“收件窗口和重新指定”一节执行 rebind,再在想接收消息的窗口结束一轮。

  3. 会话空闲: Stop 钩子只在一轮结束时触发,不会持续后台轮询。去收件窗口说一句话,或在后续协作时让 AI 用 wait 原地等回复。

开发和验证

cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --release -p bridge-mcp
python -X dev -W error -m unittest discover -s tests/conformance -t . -v
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\test-install-local.ps1
pwsh -NoProfile -File .\scripts\test-install-local.ps1

契约测试只使用 Python 标准库(3.10+),通过真实子进程验证 MCP 和命令行。测试用 BRIDGE_DB 指向临时数据库,不读写用户数据。CI 只测 Windows。

Available Tools

7 tools
bridge_overviewA

查看公告板全貌:各方状态、文件认领情况、给你的未读消息。开始任务前先调用这个。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda
mark_readNo是否把显示的未读消息标为已读,默认 true

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It presents itself as a passive "查看" (view) operation, yet the schema's mark_read flag defaults to true, meaning a plain call mutates read state; that side effect is never disclosed in the description. It also says nothing about permissions, result shape, or how stale the aggregated statuses may be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the content of the overview front-loaded and the call-to-action last. Nothing is wasted or repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter, no-output-schema read tool this is nearly sufficient: it tells the agent what data comes back and when to invoke it. The remaining gap is the undisclosed mark_read side effect, which matters for an agent that may call this repeatedly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both project and mark_read are already documented with examples and defaults, establishing the baseline of 3. The description adds no parameter-level detail beyond noting that unread messages are part of the payload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (查看/overview) and enumerates exactly what the overview contains: party statuses, file-claim state, and the caller's unread messages. This aggregation of multiple sibling concerns (read_messages, claim_files, update_status) makes it distinguishable, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"开始任务前先调用这个" gives an explicit trigger condition for using the tool. However, it offers no when-not guidance and does not point to siblings such as read_messages for a narrower read, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

claim_filesA

修改文件前先认领,防止和对方同时改同一个文件。有冲突时一个都不认领。

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo认领原因,例如 '重构布线模块'
filesYes文件路径,相对项目根目录或绝对路径均可
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda
ttl_minutesNo认领时长(分钟),到期自动释放,默认 60

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It usefully discloses the all-or-nothing conflict semantic ('有冲突时一个都不认领'), which is not visible in the schema, but omits auth requirements, success/return behavior, and TTL override effects on the release path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler; the primary purpose comes first and the conflict rule second. Efficient and readable, though extremely terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with 4 parameters, no annotations, and no output schema. The description covers purpose and conflict behavior but leaves return/success semantics and permission context to inference, which is a gap when structured fields do not compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description adds no parameter-level meaning (e.g., why a note or TTL matters, absolute vs relative path nuances), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (claim files) plus the purpose (prevent simultaneous edits before modifying). Clear but does not explicitly name or differentiate from the sibling release_files at the name level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition for use: '修改文件前先认领' (claim before modifying files). However, it lists no exclusions and does not route to the alternative sibling release_files, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsB

列出所有用过 Bridge 的项目。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing but never states that it is safe/non-destructive, whether results are paginated, or in what order projects are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words, and the core action and resource are front-loaded. Nothing extraneous is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter list tool with no output schema or annotations, the description is nearly sufficient for correct invocation. It could add a brief note on read-only nature or result ordering, but it is not strictly required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to document. The baseline for a zero-parameter tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('列出') and resource ('项目') with a clear scope qualifier ('所有用过 Bridge 的'). It does not name or differentiate from any sibling tool, but the purpose is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Usage is only implied by the description of what it lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_messagesA

读取给你的未读消息(读后标为已读)。include_read=true 时显示最近的全部消息。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo最多返回多少条,默认 20
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda
include_readNo是否包含已读消息,默认 false

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose a real side effect: reading marks messages as read (读后标为已读). It also explains what include_read changes about the result set. It omits return format and whether the read-state change is reversible, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the core behavior (unread retrieval plus auto-mark-read) front-loaded before the optional flag. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with full schema coverage and no output schema, the key operational fact (messages are marked read) and the include_read behavior are covered. Return shape and ordering/pagination are not described, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented; the description only restates include_read with marginally more meaning ('显示最近的全部消息') and says nothing about limit or project. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('读取给你的未读消息') and scopes it to messages addressed to the caller. It does not explicitly name or distinguish itself from siblings like send_message or bridge_overview, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly tells the agent this is the way to retrieve incoming messages and clarifies the include_read toggle, but there is no explicit when-to-use/when-not-to-use guidance or named alternative among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_filesA

释放你认领的文件。不传 files 则释放你在该项目的全部认领。

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNo要释放的文件,留空表示全部
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It indicates a mutation (release) and restricts scope to files you claimed, implying ownership enforcement. However, it does not disclose whether release is immediate, reversible, or requires specific permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two very short sentences are front-loaded with the core action and then the default behavior. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple 2-parameter tool with no output schema and no annotations, the description covers the action and the optional-argument behavior adequately. It lacks any note on permissions or post-release state, but for this level of complexity it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters fully. The description restates the default behavior for files (留空表示全部), which matches the schema's description, adding no meaning beyond what the structured data provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (释放/release) and resource (你认领的文件/files you claimed), clearly distinguishing it from the sibling claim_files tool. The scope of the effect is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear conditional behavior: if files is omitted, all your claims in the project are released. This tells the agent when to pass files versus when to omit it, but does not explicitly state when to prefer this tool over alternatives or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageB

给对方留言:提问、交接、通知、回复。

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo收件人:claude / codex / human / all,默认 all
contentYes消息内容
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it does not say whether the message is delivered synchronously or queued, whether it persists, what happens if the recipient is offline, or whether it requires authorization. Only the schema reveals that 'to' defaults to all. This is a significant gap for a cross-agent messaging tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the enumerated intents earn their place. It is efficient, though brief enough that it leaves obvious context gaps unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and a minimal description, an agent cannot tell delivery semantics, failure modes, or how this differs from update_status/read_messages. For a messaging primitive in a multi-agent bridge, the definition is under-specified relative to its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents all three parameters, including the recipient enum values and the 'all' default; the description adds no parameter-level meaning beyond it. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource (leave a message for the other party) and enumerates the four intents (ask, hand off, notify, reply), so the purpose is clear. It does not name or contrast with the obvious sibling read_messages, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intent list (question, handoff, notification, reply) implies when this tool is appropriate, which is more than nothing. However there is no explicit when-not-to-use, no mention of read_messages as the read-side counterpart, and no stated prerequisites, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_statusA

更新你自己的工作状态,让对方知道你在做什么。每完成一步都应更新。

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes正在做的任务
projectYes当前项目根目录的绝对路径,例如 D:/code/ender-eda
blockersNo卡点或需要对方帮忙的地方,没有就留空
progressNo做到哪一步了
next_stepNo接下来打算做什么

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses the audience (the peer sees the status) and update cadence, but says nothing about persistence, whether prior status is overwritten, or the response shape for a state-mutating call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded, followed by a crisp usage rule. Every sentence earns its place with no filler or repetition of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-stakes status-update tool whose full schema is self-documenting and which has no output schema to explain, the description covers purpose and cadence adequately. It only lacks the peer-visibility/overwrite details an agent might want for a mutation call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (task, project, blockers, progress, next_step) are already documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: updating one's own work status so the peer knows what you're doing. Clear purpose, though it does not explicitly differentiate itself from sibling send_message, which covers similar 'tell the peer something' territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete cadence guidance ('每完成一步都应更新' – update after each completed step), which tells the agent when to call it. No exclusions or named alternatives (e.g. versus send_message) are given, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedbridge_overview
    • First observedclaim_files
    • First observedlist_projects
    • First observedread_messages
    • First observedrelease_files
    • First observedsend_message
    • First observedupdate_status

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

Each tool maps to a distinct action: overview, status update, message send/read, file claim/release, and project listing. The only mild overlap is bridge_overview vs read_messages, since the overview also surfaces unread messages, but the descriptions make the boundary (aggregate dashboard vs message-only read) reasonably clear.

Naming Consistency4/5

Six of seven names follow a clean verb_noun pattern (update_status, send_message, read_messages, claim_files, release_files, list_projects), all in consistent snake_case. bridge_overview is the sole deviation in that it omits an explicit verb, but it remains readable and predictable.

Tool Count5/5

Seven tools is well-scoped for a two-agent coordination service. Each tool earns its place covering status, messaging, file locking, and discovery, with no redundant or filler tools.

Completeness4/5

The surface covers the full coordination lifecycle: discovery (list_projects), state awareness (bridge_overview, read_messages), communication (send_message, update_status), and file locking (claim_files, release_files). Minor gap: no explicit way to delete or edit a sent message, but that is a workaroundable edge case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables multiple AI coding agents to coordinate on a shared software project by registering, claiming tasks, declaring file intents, publishing structured change reports, and handing off context, with a local dashboard showing state in near real time.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local OS for your AI Agents fleets. ——————- Enables AI agents to coordinate through a durable local board with shared state, ticket lifecycle, evidence-based approvals, and journal-woken handoffs.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents in different editors and MCP clients to share messages, project context, notes, task ownership, handoffs, and advisory file claims through a local SQLite-backed coordination server. Supports MCP stdio, MCP Streamable HTTP, a JSON HTTP API, and a local CLI for multi-project agent collaboration.
    MIT