多协议编码代理桥接器

MCACP是一个连接MCP客户端与ACP编码代理的服务,允许用户在单一聊天窗口中管理和交互多个编码代理,支持代理的安装、并行比较和权限控制。

  • by Oortonaut
  • TypeScript
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 Oortonaut/mcacp

使用说明

MCACP

将任何MCP客户端桥接到任何ACP编码代理。

MCACP是一个 主控程序 服务器说 代理客户端协议 代表您的MCP主机。它允许Claude Code、Zed、VS Code或任何兼容MCP的客户端生成、管理ACP编码代理并与之交互——将单个聊天窗口变成多代理控制平面。

MCP Client (Claude Code, Zed, VS Code, ...)
    |
    |  MCP (stdio)
    v
  MCACP
    |
    |  ACP (stdio, per agent)
    v
 Claude Code  ·  Gemini CLI  ·  Codex  ·  Auggie  ·  Copilot  ·  ...

你能用这个做什么?

从任何MCP客户端运行任何ACP代理。 您不需要为每个代理都提供专用的IDE插件。从Claude Code安装Gemini。从Zed那里运行Codex。混合搭配。

并排比较代理。 在并行会话中为Claude Code ACP和Gemini CLI分配相同的任务,并比较结果。

构建代理驱动的管道。 一个代理编写代码,另一个代理审查代码,第三个代理运行测试。MCACP处理所有这些应用程序的生命周期和权限流。

以交互方式控制权限。 在支持MCP启发(Zed)的主机上,权限请求以交互形式弹出。在没有(Claude Code)的主机上,它们会退回到由主机代理决定的操作员模式。

从你中断的地方继续。 会话持续到磁盘。关机,重启, load_session --特工从停车处接车。

通过聊天发现并安装代理。 浏览ACP注册表,安装代理,检查升级——不要离开你的对话。

快速开始

安装

npm install -g mcacp

或者直接运行:

npx mcacp

添加到您的MCP客户端

克劳德代码 (~/.claude/settings.json):

{
  "mcpServers": {
    "mcacp": {
      "command": "npx",
      "args": ["-y", "mcacp"]
    }
  }
}

泽德 (settings.json):

{
  "context_servers": {
    "mcacp": {
      "command": { "path": "npx", "args": ["-y", "mcacp"] }
    }
  }
}

然后从聊天:

"Search for available agents"        →  registry_search
"Install the Gemini agent"           →  agent_install
"Initialize it and start a session"  →  initialize + new_session
"Ask it to refactor auth"            →  prompt_start + prompt

MCP工具

MCACP公开了22个工具,分为五组。

注册表

工具 说明
list_installed_agents 列出本地安装的代理
registry_search 搜索ACP代理注册表
agent_install 从注册表安装代理
agent_uninstall 删除已安装的代理
agent_check_upgrades 检查可用的升级
discover_agents 代理的扫描编辑器配置(Zed、JetBrains)
reload_config 重新加载 mcacp.json 从磁盘

生命周期

工具 说明
initialize 生成代理进程并执行ACP握手
shutdown 优雅地关闭了一个代理

会话

工具 说明
new_session 使用工作目录和权限策略创建会话
load_session 恢复持久会话
list_sessions 列出代理的已存储会话
close_session 关闭会话(保留以供以后继续)

交互

工具 说明
prompt_start 发送提示(立即返回)
prompt 阻止,直到事件可用
prompt_events 事件的非阻塞轮询
grant_permission 解决待处理的权限请求(操作员模式)
request_permission 向主机发送MCP征求意见,以做出许可决定
cancel 取消正在进行的提示
set_mode 切换代理操作模式

状态

工具 说明
list_running_agents 列出所有具有状态和会话的代理
get_agent_status 正在运行的代理的详细状态
set_agent_status 为代理设置状态文本

权限策略

每个会话可以使用不同的策略:

政策 行为
allow_all 自动批准所有代理操作
deny_all 阻止所有工具使用
elicit 作为MCP启发转发给宿主;回落到 operator 如果不受支持
operator 按事件排队——主机代理通过以下方式决定 grant_permission

操作员流程

Orchestrator                   MCACP                      ACP Agent
    |                            |                            |
    |-- prompt(sessionId, ...) ->|                            |
    |                            |-- session/prompt --------->|
    |                            |<- request_permission ------|
    |<- {pendingPermission: ...} |                            |
    |                            |                            |
    |-- grant_permission ------->|                            |
    |   {toolCallId, optionId}   |-- permission outcome ----->|
    |                            |<- prompt result -----------|
    |<- {stopReason, updates}    |                            |

配置

MCACP寻找 mcacp.json 在这些地点(首次发现获胜):

  1. --config 旗帜或 MCACP_CONFIG env 是
  2. .mcacp/mcacp.json 在当前目录中
  3. ~/.config/mcacp/mcacp.json
{
  "registries": ["https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json"],
  "defaultPermissionPolicy": "elicit",
  "agent_servers": {
    "my-custom-agent": {
      "command": "node",
      "args": ["my-agent.js"]
    }
  }
}

看 docs/configuration.md 对于完整的模式。

从源头构建

git clone https://github.com/Oortonaut/mcacp.git
cd mcacp
npm install
npm run build
node dist/index.js

许可证

阿帕奇-2.0