HorizonLux · AI automation

Ship AI agents that reach production

Only about 5% of enterprise agents ever go live. We build the evaluation, routing and cost control that get yours there.

Book a free scoping call
Guides

ACP vs MCP: One Nests Inside the Other

ACP connects your editor to a coding agent. MCP connects that agent to tools. They are not alternatives: the editor hands the agent its MCP servers through the ACP session, so one protocol literally carries the other's configuration.

An editor passing MCP server configuration through an ACP session to a coding agent, which then connects out to its tools

TL;DR

ACP connects a code editor to a coding agent. MCP connects that agent to its tools. They are not competing choices, because the editor hands the agent its MCP server list inside the ACP session that starts the conversation. The session/new request carries an mcpServers array, so one protocol literally transports the other's configuration. A coding agent running in your editor is an ACP server and an MCP client at the same time, in the same process.

If you are comparing all three agent protocols rather than this pair, the three-way comparison covers where A2A fits and which ACP people mean. This post is only about the editor layer.

Building a coding agent, or an internal tool that has to host one? We build AI agents against the protocol boundaries teams usually discover three months in.

Key Takeaways

  • ACP is the editor-to-agent link. MCP is the agent-to-tool link. Nothing about them overlaps, which is why "should we use ACP or MCP" has no answer.
  • The composition is explicit in the spec: session/new accepts an mcpServers array, so the editor tells the agent which MCP servers to connect to for that session.
  • The MCP capability negotiation is one-directional. The agent advertises mcpCapabilities describing which transports it can use to reach servers. The editor never becomes an MCP server itself.
  • ACP is JSON-RPC over stdio, the same mechanism LSP uses, not REST. Several current comparisons describe ACP as REST-based, which is a description of IBM's discontinued protocol, not this one.
  • Both protocols are now vendor-neutral, but by different routes. MCP was donated to the Agentic AI Foundation under the Linux Foundation in December 2025. ACP is Apache-licensed and still maintained by Zed with its community.

First, which ACP

Two protocols share the acronym, and mixing them up is the single biggest source of wrong answers on this question. This post is about Zed's Agent Client Protocol, the one that connects coding agents to editors. The other one, IBM's Agent Communication Protocol, wound down in August 2025 and merged into A2A. The three-way comparison covers that history properly.

The practical tell: if something describes ACP as REST-based, or as a lighter alternative to A2A for multi-agent coordination, it means IBM's. Zed's ACP is JSON-RPC over stdio and has nothing to do with agent-to-agent orchestration.

What ACP actually does

ACP standardises the conversation between an editor and an agent process. Without it, every editor-and-agent pair needs a bespoke integration, which is the same fragmentation LSP solved for language servers, and ACP borrows the mechanism deliberately: the editor spawns the agent as a child process and they speak JSON-RPC over stdin and stdout.

The flow is short. The editor calls initialize to negotiate protocol version and capabilities. It optionally calls authenticate. It opens a conversation with session/new, or resumes one with session/load. Then each turn goes through session/prompt, and the agent streams progress back until it returns a stop reason.

That is the entire surface. ACP has nothing to say about what the agent can do, only about how the editor talks to it.

Where MCP fits, and why this is not a choice

Here is the part most comparisons miss. When the editor opens a session, it can tell the agent which MCP servers to use:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "session/new",
  "params": {
    "cwd": "/home/user/project",
    "mcpServers": [
      { "name": "filesystem", "command": "/path/to/mcp-server", "args": ["--stdio"], "env": [] }
    ]
  }
}

The spec's language is that clients may include connection details for MCP servers the agent should connect to. So the MCP configuration originates in the editor, travels across ACP, and is used by the agent to open a completely separate set of MCP connections outward to tools. Two protocols, one handoff between them, and the handoff is a documented field rather than an integration someone bolted on.

MCP server configuration travelling through the ACP sessionA left to right flow. An editor box connects by a solid arrow labelled ACP to an agent box, which connects by solid arrows labelled MCP to three tool boxes on the right. Above them, a long dashed arc runs from the editor all the way across to the tools, labelled mcpServers, showing that the configuration for the rightmost hop originates at the leftmost box and crosses both protocol boundaries.The editor configures a hop it never makesmcpServers, sent once at session/newEditorACPstdioCoding agentACP server + MCP clientMCPfilesystemissue trackerdatabase
The dashed path is the reason these two are never an either-or: the rightmost connection is configured by the leftmost box.

The negotiation only runs one way. The agent advertises mcpCapabilities during initialize, declaring which transports it can use to reach MCP servers, for example { "http": true, "sse": true }. The editor never exposes itself as an MCP server. It provides file system and terminal access to the agent through ACP's own client capabilities instead, which is a separate mechanism with a separate permission model.

The order things happen in

Message sequence across both protocols in one turnA sequence diagram with three vertical lifelines labelled editor, agent and MCP server. Messages run in order from top to bottom: initialize and session/new with mcpServers from editor to agent, then tools list from agent to the MCP server, then session prompt from editor to agent, then a tool call from agent to the MCP server, then streamed session updates back to the editor, and finally a stop reason. Messages on the left half are ACP and messages on the right half are MCP, showing the two protocols interleaving within a single turn.One turn, two protocols, interleavedEditorAgentMCP serverinitializesession/new + mcpServerstools/listsession/prompttools/callresultsession/update, streamedstop reasonACP, left halfMCP, right half
Every MCP exchange sits inside an open ACP session, which is why an agent that drops its editor connection also loses the turn its tool calls belonged to.

Side by side

ACP MCP
Connects An editor to a coding agent An agent to tools and data
Direction The editor spawns and drives the agent The agent reaches outward to servers
Created by Zed, with JetBrains and a community of editors Anthropic
Governance Apache 2.0, maintained by Zed Agentic AI Foundation, Linux Foundation, since Dec 2025
Transport JSON-RPC over stdio, HTTP or WebSocket when remote JSON-RPC over stdio or Streamable HTTP
Unit of work A prompt turn inside a session A tool call
You touch it when You ship a coding agent, or an editor that hosts one Your agent needs to reach anything external

Which one do you actually work on?

Most people never implement either. You configure them. If you run Claude Code or Gemini CLI inside Zed or a JetBrains IDE, ACP is already carrying that conversation and your mcpServers entries are already being forwarded through it.

You implement ACP in exactly two situations: you are building a coding agent and want it usable in editors you do not own, or you are building editor tooling and want to accept agents you did not write. JetBrains shipped an agent registry in January 2026 on that second premise, and Zed lists 11 editors and more than 50 agents on the first.

You implement MCP whenever an agent of any kind needs to reach a system. That is a far broader case, and with 97 million monthly SDK downloads and roughly 10,000 active servers as of December 2025, it is the one most teams meet first. Our guide on building a server that survives day two covers the parts the quickstarts skip.

If you are choosing where to spend effort, MCP is almost always the answer, because ACP only matters at the editor boundary and most agents are not coding agents.

Frequently asked questions

Is ACP a replacement for MCP?

No, and the spec makes the relationship explicit rather than leaving it to interpretation. The session/new request carries an mcpServers array, so an ACP session is where an agent is told which MCP servers to use. Replacing MCP with ACP would mean removing the tools an agent reaches through the configuration ACP delivers.

Is ACP REST-based?

No. Zed's Agent Client Protocol is JSON-RPC, over stdio for local agents and HTTP or WebSocket for remote ones. Descriptions of a REST-based ACP are describing IBM's Agent Communication Protocol, which is a different protocol that merged into A2A in August 2025.

Can an editor act as an MCP server for the agent?

Not through this mechanism. MCP capability negotiation in ACP runs one way: the agent declares which transports it can use to reach servers. Editors expose their own abilities, such as reading and writing files or running terminal commands, through ACP's client capabilities instead, which carry their own permission model.

Do I need ACP if my agent already uses MCP?

Only if the agent should run inside an editor you do not control. An agent with MCP tools and no editor integration is complete for most use cases. ACP is what you add when the delivery surface is somebody else's IDE.

Are both protocols vendor-neutral?

Both are open, by different routes. MCP was donated to the Agentic AI Foundation, a directed fund under the Linux Foundation co-founded by Anthropic, Block and OpenAI, in December 2025, with project autonomy preserved. ACP is Apache-licensed and still maintained by Zed together with the editors and agents that adopted it, rather than sitting under a foundation.

Sources

Related articles

More on guides from the HorizonLux team.

Ship AI agents that reach production

Only about 5% of enterprise agents ever go live. We build the evaluation, routing and cost control that get yours there.

Prefer email? [email protected]