Skip to main content
Glama

AI Bridge

测试

让 Claude 和 Codex 在同一个项目里知道彼此在做什么,让人也能参与协作。

AI Bridge(简称 Bridge)是一个共享状态、留言与文件认领的 MCP 服务器。 数据按项目保存在本地 SQLite 中。现役 Python 版支持 Python 3.10 及以上,运行时只使用标准库; T04 新增行为兼容的 Rust 核心与 bridge-mcp 可执行文件,两个版本可以同时访问同一数据库。 当前客户端仍使用 Python 入口,正式切换在 T05 进行。

项目仓库 · 协作规则 · 开发路线图

能解决什么问题

多个 AI 同时处理代码时,容易重复工作、修改同一个文件,或者不知道对方的进度。 Bridge 提供一个由用户决定是否启用的协作公告板:

  • 同步状态:记录任务、进度、卡点和下一步。

  • 互相留言:支持定向消息、广播消息与按身份记录的已读状态。

  • 认领文件:提前声明负责的文件,遇到其他身份的认领冲突时整批拒绝。

  • 区分项目:多个项目共享一份数据库,各自拥有独立数据和开关。

  • 人参与协作:在终端查看公告板、发消息、收消息或持续观察变化。

例如,Claude 规划和审查,Codex 实现和测试,用户通过命令行发出补充要求。 具体分工由你决定,Bridge 不会自动分配任务。

Related MCP server: bothy-board

快速开始

准备 Git 和 Python 3.10 或更高版本。以下示例使用 Windows PowerShell,项目位于 D:\Bridge:

git clone https://github.com/cynicism66/AI-Bridge.git D:\Bridge
cd D:\Bridge
python --version
python .\bridge.py on
python .\bridge.py status
python .\bridge.py show

已有本地仓库时直接进入原目录。然后配置下面的 MCP 客户端,并将 RULES.md 加入各自的项目说明。服务器代码所在目录和实际协作项目可以不同。

无需安装包即可启动服务器:

python D:\Bridge\bridge.py

无参数时仍通过 stdio 处理 MCP 请求,每行一条 UTF-8 JSON 消息;等待输入且没有终端提示是正常的。 原有指向 D:\Bridge\bridge.py 的客户端入口配置可以继续使用。

开关

全局总开关默认开启,每个项目默认关闭。全局和项目都开启时,AI 才能使用该项目的协作工具。 开关由用户通过命令行控制,不提供给 AI 的开关工具。设置保存在数据库中,修改后下一次工具调用 立即生效,无需重启已运行的 T03 服务器。

python D:\Bridge\bridge.py on D:\code\example
python D:\Bridge\bridge.py off D:\code\example
python D:\Bridge\bridge.py off --global
python D:\Bridge\bridge.py on --global
python D:\Bridge\bridge.py status

on、off 省略项目时使用当前目录,也接受相对路径。目录尚未创建时会提示,但仍保存设置。 status 显示全局开关、各项目的开关和有效状态,以及最近活动时间。 全局关闭不会清除项目设置,重新开启全局后继续采用原来的项目开关。

项目未开启或全局关闭时,AI 工具返回普通说明,不返回错误,也不读取或修改状态、消息和认领数据; 只读检查开关设置。AI 收到提示后,本次会话应停止调用 Bridge 并照常工作。 list_projects 在全局开启时仍可列出项目并标注“已开启”或“未开启”。

升级提醒:升级到 T03 后,已经在用的项目(包括 D:\Bridge 本身)也需要执行一次 bridge on。 直接运行源码时对应命令为 python D:\Bridge\bridge.py on D:\Bridge。 从 T02 升级时需重新加载服务器代码;之后调整开关无需再次重启。旧数据会保留。

配置到 Claude 和 Codex

将示例中的 Python 和项目路径替换为实际绝对路径,两端应访问同一数据库。 可运行 python -c "import sys; print(sys.executable)" 查找 Python 可执行文件。

Claude 的本地 stdio MCP 配置示例,合并到客户端的 mcpServers 配置:

{
  "mcpServers": {
    "bridge": {
      "command": "C:\\Python314\\python.exe",
      "args": ["D:\\Bridge\\bridge.py"],
      "env": {"BRIDGE_AGENT": "claude"}
    }
  }
}

Codex 的 ~/.codex/config.toml 配置示例:

[mcp_servers.bridge]
command = 'C:\Python314\python.exe'
args = ['D:\Bridge\bridge.py']

[mcp_servers.bridge.env]
BRIDGE_AGENT = "codex"

Codex 配置字段见 官方 MCP 文档。 配置完成后重新加载对应客户端的 MCP 服务器,先通过命令行开启项目,再分别要求两个 AI:

请用 Bridge 查看 D:\Bridge 的公告板,并汇报你当前负责的任务。

能看到彼此的状态即说明接入成功。处理其他项目时,将项目参数换成实际项目的绝对根路径。

人参与协作

安装命令行入口后可使用 bridge;未安装时,把它替换为 python D:\Bridge\bridge.py。 以下项目参数均可省略,默认使用当前目录;命令行接受相对路径,AI 工具仍要求绝对路径。

命令

作用

bridge status

查看全局和所有项目的开关及最近活动

bridge show [项目]

查看项目启用状态、各方状态、认领和最近 20 条消息

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

以 human 身份发消息,默认广播

bridge read [项目]

读取给 human 或 all 的未读消息,读后标记已读

bridge history [项目] [--limit N] [--agent 身份] [--kind 类型]

按时间正序查看最近 50 条交互历史,包含全局开关事件

bridge watch [项目] [--interval 秒]

首次显示公告板,之后仅在内容变化时输出;默认每 2 秒检查

python D:\Bridge\bridge.py post D:\code\example "先完成测试再改接口" --to codex
python D:\Bridge\bridge.py post "请双方同步当前进度"
python D:\Bridge\bridge.py read
python D:\Bridge\bridge.py watch --interval 1
python D:\Bridge\bridge.py show | Select-Object -First 3

消息有空格时请加引号。watch 按 Ctrl+C 正常退出,不打印 traceback;没有变化时不会持续刷屏。 关闭 Bridge 后,人仍可以使用这些命令,输出开头会提示关闭状态。 show、watch 使用 human 身份但不标记已读;read 才会修改 human 的已读记录。 AI 可用 send_message 并指定 to="human" 给你留言。控制台走文本输出,重定向的程序输出为 UTF-8。

history 可筛选 status、message、claim、release、expire、switch。 状态更新、留言、认领和续期、释放和到期清理、开关调整都会留下记录;目前不清理历史。 关闭项目后也可查看历史。历史是人用命令,没有新增 AI 工具。

python D:\Bridge\bridge.py history D:\code\example --limit 20
python D:\Bridge\bridge.py history --agent codex --kind status

Windows 项目路径接受 D:\code\example、D:/code/example、UNC 路径和 Git Bash 的 /d/code/example。 /d/code/example 会转换成 d:/code/example;\example、/example、/abc/example 等缺少盘符的路径会报错。 命令行仍可使用 .、.. 等相对路径;AI 工具必须提供明确的绝对路径。

数据库与身份

  • BRIDGE_AGENT:AI 身份,通常为 claude 或 codex,未设置时为 unknown;人用命令固定使用 human。

  • BRIDGE_DB:指定数据库路径,优先于默认路径;自定义路径的父目录需要预先存在。

  • BRIDGE_FAKE_NOW:只用于测试,格式 YYYY-MM-DD HH:MM:SS,控制业务时间和认领到期检查。 迁移 SQL 中开关、删除认领事件的时间与到期分类按任务书使用 SQLite 的 datetime('now','localtime'); 这些触发器使用系统本地时间。测试通过过去/未来时间构造到期场景,并归一化输出时间后比较。

  • 默认数据库:Path.home() / ".bridge" / "bridge.db",写入时自动创建目录。 Windows 上使用 USERPROFILE,不受自定义 HOME 影响。

同一系统用户的两个客户端使用默认路径即可共享数据。如果指定了自定义数据库,命令行也要使用同一路径:

$env:BRIDGE_DB = 'D:\Bridge\bridge.db'
python D:\Bridge\bridge.py status

早期原型使用脚本同目录的 bridge.db,当前版本不自动搬迁旧数据。 要继续使用旧库,请让两端和命令行显式指定相同的 BRIDGE_DB。 公告板数据保存在本地;读取内容是否发送给模型服务,取决于 AI 客户端。

数据库通过 PRAGMA user_version 管理版本。第一次写连接将 T03 的版本 0/1 数据库迁移到版本 2, 保留原表数据,并把已有消息和当前状态导入事件表。两种实现共用 src/bridge_mcp/migrations/ 中的 SQL。 每个进程对同一路径只初始化一次;更高版本的数据库会被拒绝写入,并提示升级 Bridge。 迁移在事务中完成,多个进程首次同时启动时会等待写锁,并对 WAL 切换进行有限重试。

项目内安装与测试

只在项目虚拟环境中安装,不安装到全局 Python:

cd D:\Bridge
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
.\.venv\Scripts\bridge.exe status
.\.venv\Scripts\python.exe -m bridge_mcp
python -X dev -W error -m unittest discover -s tests -v

激活 .venv 后可以直接使用 bridge。setuptools 仅用于构建安装包,运行时没有第三方依赖。 测试使用标准库 unittest 和独立临时 BRIDGE_DB,不接触真实数据库。 每次 push 和 pull_request 都会在 Windows/Linux × Python 3.10/3.14 上运行严格测试。

Rust 构建与一致性测试

需要 stable Rust 工具链;Windows 使用 MSVC 工具链及 Visual Studio C++ 编译工具。 Rust 支持 on、off、status、show、post、read、history;无参数启动 MCP,watch 仅保留在 Python 版。

cargo --version
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --release -p bridge-mcp

# 默认测试 Python;全套 Python unittest 也会自动包含这组黑盒测试
python -X dev -W error -m unittest discover -s tests/conformance -t . -v

# BRIDGE_CMD 是一个可执行文件路径,不是带参数的命令字符串
$env:BRIDGE_CMD = (Resolve-Path .\target\release\bridge-mcp.exe).Path
python -X dev -W error -m unittest discover -s tests/conformance -t . -v
Remove-Item Env:BRIDGE_CMD

Linux 对应的二进制路径是 target/release/bridge-mcp。CI 另有 Windows/Linux 两个 Rust 任务, 执行格式检查、Clippy、单元测试、release 构建及上述黑盒测试(包含 Python/Rust 双向数据库互通)。 tests/conformance/golden/ 来自 Python MCP 子进程的真实响应;工具清单按规范化 JSON 比较,说明文本全文比较, 其他输出仅替换时间后逐字比较。测试只使用临时数据库,不读取用户数据。

七个 AI 工具

工具

用途

bridge_overview

查看各方状态、认领和未读消息

update_status

更新任务、进度、卡点和下一步

send_message

留言给 claude、codex、human 或 all

read_messages

读取并标记未读消息,或查看最近消息

claim_files

修改前认领文件,有冲突时整批拒绝

release_files

释放自己认领的文件

list_projects

列出项目并标注项目开关状态

除 list_projects 外,工具必须传项目根目录的绝对路径 project。 正常协作流程是:查看公告板 → 认领文件 → 更新进度 → 留言交接 → 释放认领。 文件认领默认有效期 60 分钟,同一身份再次认领可以续期;它是协作约定,不会锁住文件阻止其他程序写入。

例如,让 AI“给 Claude 留言,请审查边界条件”,对应的 send_message 参数是:

{
  "project": "D:/code/example",
  "to": "claude",
  "content": "实现和测试已完成,请检查边界条件。"
}

更多协作要求见 RULES.md。收到未开启或已关闭的提示后,本次会话停止调用 Bridge。

常见问题

  • 两边看不到彼此? 先运行 status 检查开关,再确认数据库路径、项目根路径和两个 AI 身份一致。

  • 身份是 unknown,或任务相互覆盖? 检查 BRIDGE_AGENT。同一身份的多个会话被视为同一个协作方。

  • 文件认领失败? 查看认领人和到期时间,通过 send_message 协商;一批里有冲突时不会部分认领。

  • 找不到 bridge 命令? 先在 .venv 内可编辑安装并激活,或使用 .\.venv\Scripts\bridge.exe。

  • 不同电脑能直接同步吗? 当前版本只提供本机 stdio 与 SQLite 协作,没有网络服务或跨设备同步。

代码结构

bridge.py 保留为兼容入口,包代码位于 src/bridge_mcp/:

  • cli.py / output.py:人用命令、观察变化与控制台和重定向输出。

  • server.py:JSON-RPC 协议及 UTF-8 stdio。

  • tools.py:工具定义、开关拦截与中文格式化。

  • store.py:SQLite 连接、业务数据及开关设置。

  • database.py / migrations/:数据库初始化和共享版本迁移。

  • history.py:交互历史查询和中文格式化。

  • paths.py:项目和文件路径规范化。

Rust 工作区中,crates/bridge-core/ 提供数据库、路径、七个工具及中文格式化, crates/bridge-mcp/ 负责 stdio 和命令行。核心库不向终端输出,后续桌面软件可直接调用。 协议说明的 Rust 静态资源来自 Python 黄金响应,变更协议时须同步验证两端。

包与 MCP 版本统一使用 bridge_mcp.__version__(当前 0.1.0)。 后续计划见 路线图,问题和建议请提交到 GitHub Issues。

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables multiple AI coding agents to collaborate on a project by coordinating tasks, file leases, and messages through a shared hub, preventing conflicts and enabling parallel development.
    MIT
  • 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.
    -