Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Bidirectional AI agent collaboration — spawn and communicate with any agent CLI
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"agent-link": {
"command": "npx",
"args": [
"-y",
"agent-link-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add agent-link -- npx -y agent-link-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agent-link": {
"command": "npx",
"args": [
"-y",
"agent-link-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agent-link": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"agent-link-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 mikusnuz 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.5.3)于18天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Microsoft Exchange Online MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ 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.
Exchange Online admin for MSPs: forwarding audits, EWS posture and offboarding, no PowerShell
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
English | 한국어
MCP server for bidirectional AI agent collaboration. Spawn and communicate with any AI coding agent CLI — Claude Code, Codex, Gemini, Aider, and more.
Version 0.5.2 fixes Claude JSON response parsing, preserves the original task/context and working directory across replies, and connects cancellation to the running process. reply starts a fresh CLI invocation with the recorded conversation; it does not resume a provider-side session. Concurrent replies to the same session are rejected. kill_agent waits for termination, escalating after five seconds if needed; server shutdown also cancels active children. Sessions are held in memory and do not survive server restarts.
Your primary agent keeps failing on the same issue? Ask another agent:
# Claude Code is stuck on a TypeScript error it can't resolve.
spawn_agent("codex", "This TypeScript error keeps appearing. How do I fix it?", { error: "Type 'string' is not assignable to type 'number'", files: ["src/utils.ts"] })
Have another model review your agent's code changes:
spawn_agent("claude", "Review these changes for bugs and edge cases", {
files: ["src/api.ts", "src/handler.ts"], intent: "Code review before merge" })
Build a pipeline where agents handle different stages:
# Agent 1: Research
spawn_agent("gemini", "Find the best approach for WebSocket reconnection")
spawn_agent("codex", "Implement WebSocket reconnection with exponential backoff", { files: ["src/ws-client.ts"] })
spawn_agent("claude", "Review this implementation for production readiness", { files: ["src/ws-client.ts"] })
Agents can ask questions back. The host answers, and work continues:
Host: spawn_agent("codex", "Add caching to the API layer")
Codex: [QUESTION] Should I use Redis or in-memory cache? Host: reply("codex-a1b2c3", "Use Redis, we have it in our docker-compose") Codex: [RESULT] Added Redis caching with 5-minute TTL...
AI coding agents get stuck sometimes. Instead of waiting for you, they can ask another agent for help. agent-link-mcp lets any MCP-compatible agent spawn other agent CLIs as collaborators, exchange questions, and get results back — all through standard MCP tools.
Requires Node.js 20 or later, including the MCP host's npx environment. Agent CLIs may have additional requirements of their own.
agent-link-mcp spawns other AI agents as CLI subprocesses. You need to install and authenticate the agent CLIs you want to collaborate with:
| Agent | Install | Auth |
|---|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code | claude login |
| Codex | npm install -g @openai/codex | codex login |
| Gemini CLI | npm install -g @google/gemini-cli | Run gemini and follow the sign-in prompt |
| Aider | pip install aider-chat | Set OPENAI_API_KEY or ANTHROPIC_API_KEY |
You only need the ones you plan to use. agent-link-mcp auto-detects which CLIs are installed.
# Claude Code
claude mcp add agent-link npx agent-link-mcp
codex mcp add agent-link npx agent-link-mcp
npx agent-link-mcp
Note: Only the agent you're working in needs this MCP server installed. The other agents are spawned as subprocesses — they don't need agent-link-mcp.
spawn_agentSpawn an agent and send it a task.
{
"agent": "codex", "task": "Refactor this function for better performance", "context": { "files": ["src/utils.ts"], "error": "TypeError: Cannot read property 'x' of undefined", "intent": "Performance improvement" }, "model": "o3", "timeoutMs": 7200000 }
| Parameter | Type | Default | Description |
|---|---|---|---|
agent | string | *required* | Agent name ("claude", "codex", "gemini", "aider") |
task | string | *required* | Task description |
context | object | — | Optional { files, error, intent, diff }. diff: true includes git diff output. diff: "staged" for staged only. |
cwd | string | cwd | Working directory for the agent process |
model | string | — | Model to use (e.g. "o3", "gpt-5.4", "claude-sonnet-4", "gemini-2.5-pro"). Passed via --model flag. |
thinking | string | — | Thinking/reasoning depth; supported values depend on the selected CLI and model. Claude: --effort, Codex: -c model_reasoning_effort, Aider: --reasoning-effort. |
retry | boolean | false | Auto-retry on failure (up to 3 attempts). |
escalate | boolean | false | On retry, automatically increase thinking level. Requires retry: true. |
timeoutMs | number | 3600000 | Timeout in ms. Default: 1 hour. |
Returns one of:
{ status: "done", agentId: "codex-a1b2c3", result: "..." } — task completed{ status: "waiting_for_reply", agentId: "codex-a1b2c3", question: "..." } — agent needs clarification{ error: "...", agentId: "codex-a1b2c3" } — something went wrongspawn_agentsRun multiple agents in parallel. Returns all results together.
{
"agents": [ { "agent": "codex", "task": "Review for bugs", "context": { "diff": true } }, { "agent": "claude", "task": "Review for security", "context": { "diff": true } } ], "cwd": "/path/to/project" }
Returns { summary: { total, succeeded, failed, waiting }, results: [...] }.
replyAnswer a spawned agent's question and continue the conversation.
{
"agentId": "codex-a1b2c3", "message": "Yes, you can remove the side effects" }
kill_agentAbort a running agent session.
{
"agentId": "codex-a1b2c3" }
list_agentsList available agent CLIs.
{
"agents": [ { "name": "claude", "command": "claude", "source": "auto", "available": true }, { "name": "codex", "command": "codex", "source": "auto", "available": true }, { "name": "gemini", "command": "gemini", "source": "auto", "available": false } ] }
get_statusGet active agent sessions.
{
"sessions": [ { "agentId": "codex-a1b2c3", "agent": "codex", "status": "waiting_for_reply", "startedAt": "..." } ] }
You (using Claude Code)
↓ "Ask Codex to help with this refactoring" ↓ Claude Code → spawn_agent("codex", task, context) ↓ agent-link-mcp server → spawns codex CLI as subprocess ↓ Codex processes the task... ↓ Codex: "[QUESTION] Should I remove the side effects?" ↓ agent-link-mcp → parses response → returns to Claude Code ↓ Claude Code → reply("codex-a1b2c3", "Yes, remove them") ↓ agent-link-mcp → re-invokes Codex with accumulated context ↓ Codex: "[RESULT] Refactoring complete. Here's what I changed..." ↓ Claude Code receives the result and continues working
Custom profiles using outputFormat: "json" must emit a single result object with a string result field (the Claude print-mode format). is_error: true or an error subtype is treated as failure; metadata is not included in the conversation.
agent-link-mcp automatically detects installed agent CLIs:
| Agent | CLI Command |
|---|---|
| Claude Code | claude |
| Codex | codex |
| Gemini | gemini |
| Aider | aider |
Add custom agents via config file at ~/.agent-link/config.json:
{
"agents": { "codex": { "command": "/usr/local/bin/codex", "args": ["--full-auto"], "promptFlag": null, "outputFormat": "text" }, "my-local-llm": { "command": "ollama", "args": ["run", "codellama"], "promptFlag": null, "outputFormat": "text" } } }
Override config path with AGENT_LINK_CONFIG environment variable.
You can specify which model the spawned agent should use via the model parameter:
# Use a specific model for Codex
spawn_agent("codex", "Debug this issue", { model: "o3" })
spawn_agent("claude", "Review this code", { model: "claude-sonnet-4" })
The model name is passed to the agent CLI via its --model flag. If omitted, the agent uses its default model.
Control how deeply the agent reasons with the thinking parameter:
# High reasoning for complex debugging
spawn_agent("codex", "Debug this race condition", { thinking: "high" })
spawn_agent("claude", "Architect a new auth system", { thinking: "max" })
| Agent | Flag | Values |
|---|---|---|
| Claude | --effort | low, medium, high, max |
| Codex | -c model_reasoning_effort | Model-dependent, e.g. low, medium, high, xhigh |
| Aider | --reasoning-effort | low, medium, high |
If omitted, the agent uses its default reasoning level.
Default timeout is 1 hour (3,600,000ms). You can override per-call:
# 2 hour timeout for complex tasks
spawn_agent("codex", "Refactor the entire auth system", { timeoutMs: 7200000 })
Spawned agents receive instructions to format their responses:
[QUESTION] ... — needs clarification from the host agent[RESULT] ... — task completedIf the agent doesn't follow the format, the entire output is treated as a result.
Run npm ci, npm run build, and npm test locally. Tests use offline Node.js fixtures and do not call model providers. CI is manual (workflow_dispatch) and requires an available self-hosted runner; pushes and pull requests do not start GitHub-hosted jobs.
MIT