There are now three open standards abbreviated ACP, and if you search the term you will land on whichever one the algorithm decided you meant. This publication has already covered two of them: IBM's Agent Communication Protocol, which quietly merged into A2A in 2025, and the Agentic Commerce Protocol, the OpenAI-and-Stripe payments standard. This piece is about the third, and it is the one a coding-agent developer is most likely to actually wire into their day: the Agent Client Protocol, introduced by Zed and backed by JetBrains.
Its one-line pitch is deceptively boring — it "standardizes communication between code editors and coding agents" — so let me give you the sentence that makes it click.
MCP gives an agent tools. ACP gives an agent an editor. In a single session the agent is the server in one and the client in the other.
The role swap is the whole design#
You already know MCP. It connects an agent downward: the agent is an MCP client that reaches out to tool servers — a filesystem, a database, a browser. The connection everyone forgot to standardize is the one going the other way. When you sit in an editor and ask an agent to refactor a file, something has to carry your prompt to the agent, stream its reasoning and diffs back into your gutter, ask you to approve a shell command, and let the agent read and write your working tree. For years each editor built that plumbing by hand, per agent.
ACP is that missing connection, running upward. Here the agent is an ACP server, and the editor is the client that drives it — sending the user's turn, receiving streamed session updates, brokering permission prompts, exposing the editor's own filesystem and terminal as capabilities the agent may call. The two protocols are mirror images bolted to the same agent. As the community puts it: the agent is the server in ACP and the client in MCP, and that role swap is the whole story in one detail. The two don't compete for the same slot; they compose. In a real session the editor even hands the agent the MCP servers to connect to — so the agent wears both hats at once.
Why it's genuinely "LSP for agents"#
The comparison to the Language Server Protocol is not marketing garnish; it's the exact shape of the problem. Before LSP, wiring M editors to N languages meant M×N bespoke plugins — a combinatorial tax that kept good tooling locked to whichever editor a language team happened to favor. LSP collapsed that to M+N: write one language server, and every LSP editor speaks to it.
Coding agents are living through the identical mess one layer up. Every editor wants to offer "an agent," every agent vendor wants to reach every editor, and the naive path is M×N adapters again. ACP collapses it the same way. Write one ACP-speaking agent and any ACP editor can drive it; teach one editor ACP and it inherits every agent on the protocol. That is why the adopter list already crosses vendor lines that rarely agree on anything: Zed natively, JetBrains across its IDEs, and community clients for Neovim (via CodeCompanion and avante.nvim) and Emacs — driving agents including Gemini CLI (the reference implementation), Claude Code through a claude-agent-acp adapter, plus Codex, GitHub Copilot, and Goose. None of those pairs required a private deal. They required both sides to speak version 1.
The state of the spec#
ACP is not a whitepaper waiting for implementations. It ships as a JSON-RPC schema — Apache-2.0 licensed — with official SDKs in Kotlin, Java, Python, Rust, and TypeScript, and the schema crate is on v1.17.0 as of 29 June 2026. Note the two version numbers do different jobs: the crate churns as SDKs evolve, but wire compatibility is decided by the protocolVersion two peers exchange at initialize, and the current stable protocol version is a flat 1. That split is a deliberate LSP lesson — you want the library to iterate fast without breaking the handshake that lets a two-year-old Neovim plugin still talk to a brand-new agent.
The reason ACP matters isn't that editor-agent integration was impossible before — Zed, Cursor, and Copilot all shipped it. It's that they each shipped it privately, which meant your choice of editor silently chose your agent, and vice versa. ACP is the wedge that decouples the two. If it holds, the interesting competition moves off the integration surface and back onto the thing that should decide it — whether the agent is any good. And you'll be able to answer the question "which ACP?" the same tired way you answer "which JSON?": by asking what it's plugged into.



