代码任务代理桥接服务

一个MCP(模型上下文协议)服务器,桥接Claude Code的无头模式,使AI代理能够将编码任务委托给Claude Code进行自主实现、构建、格式化和测试。

  • by cgoodsell68
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 cgoodsell68/claude-code-mcp-bridge

使用说明

克劳德码MCP桥

一个MCP(模型上下文协议)服务器,连接到Claude Code的无头模式,使AI代理能够将编码任务委托给Claude Code进行自主实现、构建、linting和测试。

建筑

Tasklet Agent (Kai)
    |
    | MCP Protocol (HTTP + SSE)
    |
Claude Code MCP Bridge (Railway)
    |
    | claude -p (headless mode)
    |
Claude Code CLI
    |
    | Git operations + code changes
    |
GitHub Repos

工具

工具 说明
code_task 向Claude Code发送编码任务。克隆仓库,无头运行任务,返回输出+更改的文件。
build_check 快跑 tsc --noEmit + npm run build 并返回有错误的通过/失败。
lint_fix 使用以下命令运行ESLint --fix 在指定的文件或整个仓库中。
run_tests 执行 npm test 并返回完整结果。

环境变量

变量 必填 描述
MCP_API_KEY 是 用于验证MCP客户端的API密钥
ANTHROPIC_API_KEY 是 Claude Code CLI的Anthropic API密钥
GITHUB_TOKEN 否 用于克隆私有仓库的GitHub PAT
TASK_TIMEOUT_MS 否 每个任务的最大执行时间(默认值:300000=5分钟)
PORT 无 服务器端口(默认值:3000)

部署(铁路)

  1. 将此仓库推送到GitHub
  2. 创建一个新的铁路项目并连接仓库
  3. 在铁路仪表板中设置环境变量:
    • MCP_API_KEY =生成一个安全的随机字符串
    • ANTHROPIC_API_KEY =您的Anthropic API密钥
    • GITHUB_TOKEN =具有仓库访问权限的GitHub PAT
  4. Railway将使用Dockerfile自动构建和部署

连接到Tasklet

  1. 在Tasklet中,创建新的MCP连接
  2. 服务器URL: https://your-railway-url.up.railway.app/sse
  3. 添加 Authorization: Bearer <MCP_API_KEY> 头球

本地开发

# Install dependencies
npm install

# Set environment variables
export MCP_API_KEY=test-key
export ANTHROPIC_API_KEY=sk-ant-...
export GITHUB_TOKEN=ghp_...

# Run in development mode
npm run dev

# Build for production
npm run build
npm start

运作原理

  1. 凯 (Tasklet代理)调用 code_task 通过带有回购和任务描述的MCP
  2. 大桥 克隆 将repo保存到临时目录
  3. 克劳德代码 无头运行(claude -p)在repo上下文中执行任务
  4. Claude Code读取代码库,进行更改,根据需要运行命令
  5. 桥捕捉 输出、错误和更改的文件
  6. 临时目录为 清理
  7. Kai接收结构化结果,并可以通过GitHub API推送更改

响应格式

所有工具都返回具有以下形状的JSON:

{
  "success": true,
  "output": "Claude Code output or command output",
  "errors": "Error details if any",
  "files_changed": ["src/foo.ts", "src/bar.ts"],
  "duration_ms": 45000
}

安全

  • 所有端点(除 /health)需要承载令牌身份验证
  • 将repo克隆到隔离的临时目录中
  • 每次操作后都会清理临时目录
  • 输出上限为50KB,以防止内存问题
  • 任务超时可防止进程失控