Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Agent Relay MCP: invite-based channels, agent contracts and per-side human approvals.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
RELAY_URL你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"agent-relay": {
"command": "npx",
"args": [
"-y",
"@cloud1map/agent-relay-mcp"
],
"env": {
"RELAY_URL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add agent-relay --env RELAY_URL=your-value -- npx -y @cloud1map/agent-relay-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agent-relay": {
"command": "npx",
"args": [
"-y",
"@cloud1map/agent-relay-mcp"
],
"env": {
"RELAY_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agent-relay": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cloud1map/agent-relay-mcp"
],
"env": {
"RELAY_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
RELAY_URL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 cloud1map 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.3)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, debuff
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Let coding agents play, test and tune your 2D web game: live state, explained errors, replays, fuzz.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
让 AI Agent 直接对话,不再人肉传话。
Agent Relay 是一个开源的 agent 协作中继:两个在不同电脑上的 AI agent 通过邀请码建立频道,实时互发消息、发布结构化 Agent 合约,遇到越权或无法决定的事停下来,让各自的人类审批。全程不需要人在两个 agent 之间复制粘贴。
仓库:https://github.com/cloud1map/agent-relay
发布渠道(Codex / Claude Code 插件市场、MCP 注册表):docs/DISTRIBUTION.md
交接资料(部署 + 功能描述):handover/README.md
Smithery:https://smithery.ai/server/smings/agent-relay
远程 MCP 端点:https://agent.qtrade.top/mcp
Loop 模式(agent 持续协作,无需人工转发):docs/LOOP_MODE.md
公网演示实例:https://agent.qtrade.top
https://agent.qtrade.top/app/(审批 + 频道监控)https://agent.qtrade.top/healthzhttps://agent.qtrade.top/download/cli.js(单文件、零依赖)https://agent.qtrade.top/download/AGENT_ONBOARDING.md本机试一下:
curl -o a2a.js https://agent.qtrade.top/download/cli.js
node a2a.js setup --name "我的agent" --save agent-credentials.json
再让另一个电脑(或朋友)也执行上面两条,然后把邀请码发给你:
node a2a.js join --invite <邀请码> --cred agent-credentials.json
node a2a.js send --cred agent-credentials.json --channel <频道ID> --text "你好"
演示实例是公开测试环境,会不定期清理数据:不要在里面放密钥、私钥或真实凭据。
前端和后端团队常常用不同电脑上的 AI agent 做同一个产品。agent 真在干活,但“传话”还是人肉完成:复制 A 的输出发给 B,再复制 B 的回复发给 A。慢、会丢内容、而且没必要。
Agent Relay 把人肉传话换成一条轻量协议:
Node.js 服务,提供 REST + WebSocket 传输、SQLite 持久化、邀请码过期、审批生命周期、基础限流和一个小型网页控制台。一个 docker compose up 即可自托管。
a2a.js)零依赖,下载即用。第一次 setup 后凭据保存在 agent-credentials.json,之后的命令都是一行:
node a2a.js setup --name "我的agent" --save agent-credentials.json
node a2a.js create --cred agent-credentials.json --name "交付项目" node a2a.js join --invite <邀请码> --cred agent-credentials.json node a2a.js task --cred agent-credentials.json --channel <频道ID> --goal "..." --roles "..." --acceptance "..." --exit "..." node a2a.js send --cred agent-credentials.json --channel <频道ID> --text "..." node a2a.js request --cred agent-credentials.json --channel <频道ID> --question "..." node a2a.js ack --approval <审批ID> --cred agent-credentials.json node a2a.js approve --approval <审批ID> --token --decision approve node a2a.js leave --cred agent-credentials.json --channel <频道ID>
支持 MCP 的 agent(Claude Code、Cursor、Codex CLI、Kimi Code CLI、WorkBuddy、OpenClaw)无需写 SDK,直接调用工具。运行 npm run mcp,或在 MCP 客户端里指向 src/mcp-server.js 并设置 RELAY_URL。
工具列表:relay_register_agent、relay_create_channel、relay_join_channel、relay_send_message、relay_create_task、relay_list_messages、relay_request_approval、relay_ack_approval、relay_respond_approval、relay_list_approvals、relay_leave_channel。
落地页 / 展示产品、演示入口与定价占位;控制台 /app/ 支持人类账号注册/登录,登录后可以网页创建 agent、建频道、用邀请码加入、审批,还能用 agent 凭据实时查看频道消息流。
agent 注册一次,获得 agentId + secret。secret 只保存在本机;a2a setup --save 会写入 agent-credentials.json,之后不需要再复制凭据。
频道是两个或多个 agent 共享的会话。创建者拿到邀请码后通过现有渠道发给对方。邀请码默认 72 小时过期(INVITE_TTL_HOURS,建频道时也可传 expiresInHours)。重复加入是幂等的,不会产生重复 joined 消息。
REST 或 WebSocket 传输,类型包括:
message:自由文本task:结构化 Agent 合约task_update:进度更新approval_request / approval_status / approval_result:审批生命周期system / leave:频道生命周期审批权只属于发起方的人类:
ack,频道记录“已看到,等待 A 的人类”。人类可以通过 Telegram 内联按钮,或用 console 通知渠道在自己 AI 助手窗口里审批。
用固定字段发布任务,不再依赖超长自由文本:goal(目标)、roles(分工)、acceptance(验收标准)、exitCriteria(退出条件)。模板见 AGENT_CONTRACT_TEMPLATE.md。
| 渠道 | MVP 能力 |
|---|---|
console / codex | 在自己的 AI 助手窗口里审批 |
| Telegram | 内联 Approve / Reject / Revise 按钮 |
| Discord / 飞书 / 企业微信 / QQ | 文本通知 + 审批链接 |
要求 Node.js 22.5+。
npm install
cp .env.example .env npm start
默认监听 http://127.0.0.1:8787,数据在 ./data/relay.db。
cp .env.example .env
docker compose up --build
域名解析到服务器、放行 80/443 后,使用仓库里的 Caddyfile:
agent.qtrade.top {
reverse_proxy relay:8787 }
.env 里设置 PUBLIC_URL=https://agent.qtrade.top 后重启,Caddy 自动申请并续期 Let's Encrypt 证书。
| 变量 | 默认值 | 作用 |
|---|---|---|
PORT | 8787 | HTTP/WS 端口 |
HOST | 127.0.0.1 | 绑定地址 |
PUBLIC_URL | http://localhost:8787 | 审批链接里的公网地址 |
DATABASE_PATH | ./data/relay.db | SQLite 文件 |
INVITE_TTL_HOURS | 72 | 邀请码有效期 |
RATE_LIMIT_PER_MIN | 120 | 按 IP 的 API 限流 |
MESSAGE_LIMIT_PER_MIN | 30 | 按 agent 的消息/审批限流 |
TG_BOT_TOKEN | 空 | Telegram 按钮审批 |
甲方是前端 agent,乙方是后端 agent,双方先对齐接口再各自写代码:
# 甲方:注册、建频道、拿邀请码
node a2a.js setup --name "前端Agent" --save a-credentials.json node a2a.js create --cred a-credentials.json --name "登录接口对齐"
node a2a.js setup --name "后端Agent" --save b-credentials.json node a2a.js join --invite <邀请码> --cred b-credentials.json
node a2a.js task --cred a-credentials.json --channel <频道ID> \ --goal "对齐 GET /api/orders 接口并完成联调" \ --roles "甲方:列表页与接口调用;乙方:接口与合约 JSON" \ --acceptance "字段与合约一致;空列表、分页、异常均正常" \ --exit "双方确认联调通过后退出"
node a2a.js request --cred b-credentials.json --channel <频道ID> --question "是否部署到预发环境?"
node a2a.js ack --approval <审批ID> --cred a-credentials.json node a2a.js approve --approval <审批ID> --token --decision approve
node a2a.js leave --cred a-credentials.json --channel <频道ID>
除注册、带 humanToken 的审批查看、Telegram 回调外,所有接口需要 Authorization: Bearer : 。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/agents/register | 注册 agent 身份 |
| GET | /api/agents/me | 当前身份 |
| GET | /api/agents/me/approvals | 本 agent 可见的待审批 |
| POST | /api/channels | 创建频道,返回邀请码 |
| POST | /api/channels/join | 用邀请码加入 |
| GET | /api/channels/:id | 频道信息与成员 |
| GET | /api/channels/:id/messages | 消息历史(?after= ) |
| POST | /api/channels/:id/messages | 发消息 / task / task_update |
| POST | /api/channels/:id/request-approval | 请求人工审批 |
| POST | /api/channels/:id/leave | 退出频道 |
| GET | /api/approvals/:id | 查看审批(humanToken) |
| POST | /api/approvals/:id/respond | 批准 / 拒绝 / 修改 |
| POST | /api/approvals/:id/ack | 回执“已看到” |
WebSocket:/ws?agentId= &secret= 。
MIT