{
  "markdown": "# MCACP\n\n**Bridge any MCP client to any ACP coding agent.**\n\nMCACP is an [MCP](https://modelcontextprotocol.io/) server that speaks the [Agent Client Protocol](https://agentclientprotocol.com/) on behalf of your MCP host. It lets Claude Code, Zed, VS Code, or any MCP-compatible client spawn, manage, and interact with ACP coding agents — turning a single chat window into a multi-agent control plane.\n\n```\nMCP Client (Claude Code, Zed, VS Code, ...)\n    |\n    |  MCP (stdio)\n    v\n  MCACP\n    |\n    |  ACP (stdio, per agent)\n    v\n Claude Code  ·  Gemini CLI  ·  Codex  ·  Auggie  ·  Copilot  ·  ...\n```\n\n## What can you do with this?\n\n**Run any ACP agent from any MCP client.** You don't need a dedicated IDE plugin for each agent. Install Gemini from Claude Code. Run Codex from Zed. Mix and match.\n\n**Compare agents side by side.** Give the same task to Claude Code ACP and Gemini CLI in parallel sessions and compare the results.\n\n**Build agent-driven pipelines.** One agent writes code, another reviews it, a third runs the tests. MCACP handles the lifecycle and permission flow for all of them.\n\n**Control permissions interactively.** On hosts that support MCP elicitation (Zed), permission requests pop up as interactive forms. On hosts that don't (Claude Code), they fall back to operator mode where the host agent decides.\n\n**Resume where you left off.** Sessions persist to disk. Shut down, restart, `load_session` — the agent picks up where it stopped.\n\n**Discover and install agents from chat.** Browse the ACP registry, install agents, check for upgrades — without leaving your conversation.\n\n## Quick start\n\n### Install\n\n```bash\nnpm install -g mcacp\n```\n\nOr run directly:\n\n```bash\nnpx mcacp\n```\n\n### Add to your MCP client\n\n**Claude Code** (`~/.claude/settings.json`):\n```json\n{\n  \"mcpServers\": {\n    \"mcacp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcacp\"]\n    }\n  }\n}\n```\n\n**Zed** (`settings.json`):\n```json\n{\n  \"context_servers\": {\n    \"mcacp\": {\n      \"command\": { \"path\": \"npx\", \"args\": [\"-y\", \"mcacp\"] }\n    }\n  }\n}\n```\n\nThen from chat:\n\n```\n\"Search for available agents\"        →  registry_search\n\"Install the Gemini agent\"           →  agent_install\n\"Initialize it and start a session\"  →  initialize + new_session\n\"Ask it to refactor auth\"            →  prompt_start + prompt\n```\n\n## MCP tools\n\nMCACP exposes 22 tools organized into five groups.\n\n### Registry\n\n| Tool | Description |\n|------|-------------|\n| `list_installed_agents` | List locally installed agents |\n| `registry_search` | Search the ACP agent registry |\n| `agent_install` | Install an agent from the registry |\n| `agent_uninstall` | Remove an installed agent |\n| `agent_check_upgrades` | Check for available upgrades |\n| `discover_agents` | Scan editor configs (Zed, JetBrains) for agents |\n| `reload_config` | Reload `mcacp.json` from disk |\n\n### Lifecycle\n\n| Tool | Description |\n|------|-------------|\n| `initialize` | Spawn an agent process and perform the ACP handshake |\n| `shutdown` | Gracefully shut down an agent |\n\n### Sessions\n\n| Tool | Description |\n|------|-------------|\n| `new_session` | Create a session with working directory and permission policy |\n| `load_session` | Resume a persisted session |\n| `list_sessions` | List stored sessions for an agent |\n| `close_session` | Close a session (preserved for later resume) |\n\n### Interaction\n\n| Tool | Description |\n|------|-------------|\n| `prompt_start` | Send a prompt (returns immediately) |\n| `prompt` | Block until events are available |\n| `prompt_events` | Non-blocking poll for events |\n| `grant_permission` | Resolve a pending permission request (operator mode) |\n| `request_permission` | Send an MCP elicitation to the host for a permission decision |\n| `cancel` | Cancel an in-progress prompt |\n| `set_mode` | Switch agent operating mode |\n\n### Status\n\n| Tool | Description |\n|------|-------------|\n| `list_running_agents` | List all agents with status and sessions |\n| `get_agent_status` | Detailed status of a running agent |\n| `set_agent_status` | Set status text for an agent |\n\n## Permission policies\n\nEach session can use a different policy:\n\n| Policy | Behavior |\n|--------|----------|\n| `allow_all` | Auto-approve all agent actions |\n| `deny_all` | Block all tool use |\n| `elicit` | Forward as MCP elicitations to the host; falls back to `operator` if unsupported |\n| `operator` | Queue as events — the host agent decides via `grant_permission` |\n\n### Operator flow\n\n```\nOrchestrator                   MCACP                      ACP Agent\n    |                            |                            |\n    |-- prompt(sessionId, ...) ->|                            |\n    |                            |-- session/prompt --------->|\n    |                            |<- request_permission ------|\n    |<- {pendingPermission: ...} |                            |\n    |                            |                            |\n    |-- grant_permission ------->|                            |\n    |   {toolCallId, optionId}   |-- permission outcome ----->|\n    |                            |<- prompt result -----------|\n    |<- {stopReason, updates}    |                            |\n```\n\n## Configuration\n\nMCACP looks for `mcacp.json` in these locations (first found wins):\n\n1. `--config` flag or `MCACP_CONFIG` env var\n2. `.mcacp/mcacp.json` in the current directory\n3. `~/.config/mcacp/mcacp.json`\n\n```jsonc\n{\n  \"registries\": [\"https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json\"],\n  \"defaultPermissionPolicy\": \"elicit\",\n  \"agent_servers\": {\n    \"my-custom-agent\": {\n      \"command\": \"node\",\n      \"args\": [\"my-agent.js\"]\n    }\n  }\n}\n```\n\nSee [docs/configuration.md](docs/configuration.md) for the full schema.\n\n## Building from source\n\n```bash\ngit clone https://github.com/Oortonaut/mcacp.git\ncd mcacp\nnpm install\nnpm run build\nnode dist/index.js\n```\n\n## License\n\n[Apache-2.0](LICENSE)\n",
  "bytes": 5884,
  "sha": "ca24078848ed5cd038b107faae9fb1f59a909f01aca459dc1dbc73bdc87a64da",
  "repo_slug": "oortonaut/mcacp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_oortonaut_mcacp_24b605fc/readme"
}