mcpField
A
Agent Handoff MCP

Agent Handoff MCP

本地服务
github.com/SarutobiSasuke8AI 与智能体2今天更新

关于 Agent Handoff MCP

Agent Handoff MCP 是供多 Agent 协作的本地 MCP 服务。它提供受权限约束且可审计的交接流程,但不执行 Agent,也不让一个模型控制另一个模型。

主要功能

  1. 01结构化交接与状态变更
  2. 02按身份控制发送和接收权限
  3. 03SQLite 追加式事件历史
  4. 04HTTP 和 stdio 传输
  5. 05令牌轮换、撤销与过期
  6. 06支持安全重试并限制回复链

适用场景

  1. 01在获授权的 Agent 间分派有界任务
  2. 02审查交接的接受者和变更记录
  3. 03在会话运行时撤销 Agent 权限

MCP 相关

向 MCP 客户端提供身份查询、发送和列出交接、读取事件历史、确认任务及更新状态等工具。支持 Streamable HTTP 和 stdio。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sarutobisasuke8-agent-handoff": {
"command": "npx",
"args": [
"-y",
"@sarutobi-sasuke/agent-handoff-mcp"
],
"env": {
"HANDOFF_AGENT_ID": "<HANDOFF_AGENT_ID>",
"HANDOFF_MCP_REGISTRY": "<HANDOFF_MCP_REGISTRY>",
"HANDOFF_MCP_DB": "<HANDOFF_MCP_DB>"
}
}
}
}
启动命令npx -y @sarutobi-sasuke/agent-handoff-mcp
需要配置的环境变量
HANDOFF_AGENT_IDExisting enabled identity in the operator-provisioned registry.
HANDOFF_MCP_REGISTRYAbsolute path to the operator-provisioned agent registry YAML.
HANDOFF_MCP_DBAbsolute path to the local handoff SQLite database.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@sarutobi-sasuke/agent-handoff-mcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Agent Handoff MCP

一个以本地优先为原则的 Model Context Protocol 服务,用于 AI Agent 之间边界明确、可审计的任务交接。

Agent Handoff MCP 为 Claude、Codex、本地 Agent 和其他 MCP 客户端提供共享收件箱,同时不让一个模型控制另一个模型。Agent 可以发送结构化任务、确认接收、报告阻碍、完成任务,或取消自己最初排入队列的任务。每次状态变更都会记录责任方,并保存在 SQLite 中。

为什么要开发它

多 Agent 系统通常通过聊天记录、临时文件或供应商专属的编排方式传递任务。这会丢失任务归属、生命周期状态、授权边界和持久审计记录。此服务将任务交接转换为一个小型协议对象:

sender -> queued -> accepted -> completed
                   |             ^
                   v             |
                 blocked --------+

sender may cancel only while queued

此服务负责协调任务;它不会执行 Agent、获取参考资料、读取任意文件,也不会创建自主 Agent 循环。

MCP 工具

工具用途
handoff_whoami显示经过身份验证的身份、边界和策略修订版本。
handoff_send向获授权的接收方发送结构化任务交接。
handoff_inbox列出发给当前身份的任务交接。
handoff_get读取任务交接及其仅追加的事件历史记录。
handoff_acknowledge接受已排队或受阻的任务。
handoff_update_status将任务标记为受阻或已完成,或在任务仍处于排队状态时取消它。

设计特性

  • 使用 WAL 模式和参数化查询的 SQLite 共享状态
  • Streamable HTTP 和 stdio 传输
  • 不透明的 UUID 任务交接、事件和线程标识符
  • 显式设置 send_to 和 receive_from 授权,且不提供宽松的默认值
  • 每个 Agent 的信息披露上限:public-safe、internal 或 restricted
  • 严格的注册表验证:拒绝未知键、重复项和不受支持的版本
  • 不可变策略快照:每次操作都会根据当前注册表进行检查,因此禁用身份、轮换令牌或收紧关系后,无需重启即可对现有会话生效
  • 用于 HTTP 的哈希化、可过期持有者令牌绑定
  • 幂等键,支持安全重试
  • 回复链深度上限,限制自动往返
  • 严格限制消息、数组、引用和请求大小
  • 仅允许发送方和接收方读取,并根据当前策略重新授权
  • 仅追加的生命周期事件;没有 MCP 删除工具
  • 引用按惰性字符串存储,绝不会解引用

命令行

此软件包会安装一个分发器二进制文件 agent-handoff-mcp,其名称与软件包一致,因此一旦软件包发布到 npm,npx @sarutobi-sasuke/agent-handoff-mcp <command> 即可直接解析。(目前尚未发布;在此之前请使用源代码检出版本。)

命令用途
http启动共享的 Streamable HTTP 服务。
stdio启动绑定到 HANDOFF_AGENT_ID 的 stdio 服务。
init --registry <path>创建包含已禁用合成身份的初始注册表。
validate --registry <path>验证注册表,不读取令牌或数据库。
issue --registry <path> --agent <id> --expires <iso8601>签发一个会过期的令牌,并仅输出一次到 stdout。
rotate ...替换现有令牌;旧令牌会立即失效。
disable / enable在所有传输方式中启用或禁用某个身份。
revoke移除某个身份的令牌绑定。
token生成令牌和摘要,不触及注册表。

agent-handoff-http、agent-handoff-stdio、agent-handoff-token 和 agent-handoff-validate 也会作为直接调用的别名安装。

快速开始

要求:Node.js 22.13 或更高版本。

对于源代码检出:

git clone https://github.com/SarutobiSasuke8/agent-handoff-mcp.git
cd agent-handoff-mcp
npm ci
npm run build
cp .env.example .env
node dist/src/cli.js init --registry ./config/agents.yaml
node dist/src/cli.js issue --registry ./config/agents.yaml --agent example-alpha --expires 2027-01-01T00:00:00Z
node dist/src/cli.js issue --registry ./config/agents.yaml --agent example-beta --expires 2027-01-01T00:00:00Z
node dist/src/cli.js enable --registry ./config/agents.yaml --agent example-alpha
node dist/src/cli.js enable --registry ./config/agents.yaml --agent example-beta
node dist/src/cli.js validate --registry ./config/agents.yaml
npm run check
npm start

每条 issue 命令都会准确输出一次该身份的原始令牌;请通过安全通道将其交给相应客户端。系统只存储 SHA-256 摘要。完整的 PowerShell 和 POSIX 净室流程,请参阅 docs/QUICKSTART.md。

默认端点为:

GET  http://127.0.0.1:3220/healthz   liveness and policy state
GET  http://127.0.0.1:3220/readyz    readiness; 503 while the policy is degraded
POST http://127.0.0.1:3220/mcp
Authorization: Bearer handoff_<agent-specific-token>

服务器默认绑定到 localhost。在进行任何远程部署之前,请在服务器前设置经过身份验证的专用网络或 TLS 边界。

Stdio 模式

每个 stdio 客户端通过各自的进程环境提供身份,同时共用同一个 SQLite 数据库和注册表:

{
  "command": "node",
  "args": ["/absolute/path/agent-handoff-mcp/dist/src/cli.js", "stdio"],
  "env": {
    "HANDOFF_AGENT_ID": "example-beta",
    "HANDOFF_MCP_DB": "/absolute/shared/path/handoffs.sqlite",
    "HANDOFF_MCP_REGISTRY": "/absolute/path/agents.yaml"
  }
}

如果多个客户端要连接到同一个长期运行的服务,请使用 HTTP。如果本地客户端可以通过自身配置安全地接收固定身份,请使用 stdio。两种传输方式都会在每次操作时重新检查注册表,因此撤销也适用于正在运行的 stdio 会话。

本地 HTTP 一致性检查

在源代码检出目录中运行 npm run conformance(此前需运行 npm ci)。该命令会使用现有的固定版本 Registry 架构验证 server.json,启动隔离的环回服务器和一次性 SQLite 注册表测试夹具,使用 curl 检查缺少和无效的 bearer 请求,并运行官方框架,以及 Inspector tools/list 和只读的 handoff_whoami 调用。它需要 curl 和网络访问权限,以使用版本完全固定的 npx 工具。不会使用运维人员的注册表、现有数据库、已存储的登录信息或正在运行的服务。

断言的规范修订版本为 2026-07-28,使用 @modelcontextprotocol/[email protected] --requirements 2026-07-28。 当前 HTTP 传输方式针对 2025-11-25;仅采用无状态请求处理并不能证明支持更新的生命周期。Inspector @modelcontextprotocol/[email protected] 在应用冒烟测试中明确使用其旧版协议时代。上游框架没有 bearer 标头标志,因此仅供测试使用的 fetch 适配器会向该环回端点添加临时测试夹具标头。生产环境身份验证保持原样进行测试。

由于修订版本差异,该检查目前会以 1 退出。检查结果和已脱敏的日志会写入被忽略的 release-evidence/conformance/(可通过 HANDOFF_CONFORMANCE_OUTPUT 覆盖)。即使某项检查失败,也会运行所有检查。运行器绝不会静默地将失败设为基线或修复失败。提议将此命令用作发布门禁前,请参阅 首次运行检查结果。此命令不会发布内容或修改 CI。

运行指标

设置 HANDOFF_MCP_METRICS=1 可记录进程内计数器,包括创建、接受(认领)和过期的交接,以及存储错误;还会记录每种工具调用时长的直方图。只有从排队状态首次转为接受状态时,才计为认领。默认关闭。启用后,HTTP 和 stdio 服务器都会在启动时、每隔 60 秒以及正常关闭时,将一份 JSON 快照写入本地 stderr。例如,运行 HANDOFF_MCP_METRICS=1 agent-handoff-mcp stdio 2>metrics.jsonl 可捕获运行中进程的快照,而不会将其与 MCP stdout 混在一起。src/metrics.ts 中的快照采用 OpenTelemetry OTLP JSON 风格的 resourceMetrics/scopeMetrics 结构。它只包含固定的指标名称、计数、耗时和范围有限的工具名称标签;交接内容、标题、Agent 文本或令牌都不会进入记录器。未安装网络导出器或公共指标端点。由于当前交接生命周期没有过期转换,过期计数器始终为 0。

文档

MCP Registry 清单草案会使用 stdio 参数启动 npm 二进制文件,并要求操作人员提供 HANDOFF_AGENT_ID、HANDOFF_MCP_REGISTRY 和 HANDOFF_MCP_DB。它不会创建任何身份或凭据。 命名空间使用与 GitHub 完全一致的所有者拼写:io.github.SarutobiSasuke8。 prepublishOnly 包含 check:registry;发布和登录注册表仍是 操作人员需要分别执行的操作。构建不会包含源映射及其 JavaScript 链接。

范围边界

本项目是一个协调原语,而非通用任务平台。共享任务看板、决策、广播、状态、租约、通知、上下文提升和远程调度将由未来的可选模块提供。由六个工具组成的交接界面仍是稳定核心。

许可证

Apache-2.0。请参阅 LICENSE。

恢复与本地发布证据

使用 agent-handoff-mcp backup <out-file> 创建包含已验证注册表的实时 WAL 快照,并在停止服务后将其 restore <file> 到新文件中。现有目标文件需要使用 --force;实时服务、损坏的备份和不完整的恢复均会被阻止。有关命令、策略协调以及本地进程防护的限制,请参阅恢复。

本地 SQLite 存储会在启动时于 schema_migrations 表中应用有序且有记录的迁移。它可以识别现有的无版本存储, 并在应用待处理的更改前记录其检测到的架构。较新架构版本的存储将拒绝打开,并显示明确的错误;请使用兼容的二进制文件,而不要降级数据库。

npm run release:dry-run 会在受 git 忽略规则管理的 release-evidence/ 下生成本地检查、e2e 恢复证明、允许列表验证、SPDX SBOM、tarball 和 SHA-256 证据。软件包发布仍由所有者执行。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。