ExMCP.ACP (ex_mcp v0.10.0)

View Source

Facade for the Agent Client Protocol (ACP).

ACP lets clients control coding agents over stdio using JSON-RPC 2.0 — the same wire format as MCP. Many coding agents speak ACP natively (Gemini CLI, OpenCode, Qwen Code, etc.), and Elixir applications can expose native ACP agents with ExMCP.ACP.Agent.

Quick Start

{:ok, client} = ExMCP.ACP.start_client(command: ["gemini", "--acp"])
{:ok, %{"sessionId" => sid}} = ExMCP.ACP.Client.new_session(client, "/my/project")
{:ok, %{"stopReason" => _}} = ExMCP.ACP.Client.prompt(client, sid, "Fix the bug")

{:ok, agent} = ExMCP.ACP.start_agent(handler: MyApp.AgentHandler)

Options

See ExMCP.ACP.Client and ExMCP.ACP.Agent for the full option lists.

Summary

Functions

Starts an ACP agent runtime and blocks until it exits.

Starts an ACP agent runtime.

Starts an ACP client connected to an agent subprocess.

Functions

run_agent(opts)

@spec run_agent(keyword()) :: :ok | {:error, any()}

Starts an ACP agent runtime and blocks until it exits.

Shorthand for ExMCP.ACP.Agent.run/1.

start_agent(opts)

@spec start_agent(keyword()) :: GenServer.on_start()

Starts an ACP agent runtime.

Shorthand for ExMCP.ACP.Agent.start_link/1.

start_client(opts)

@spec start_client(keyword()) :: GenServer.on_start()

Starts an ACP client connected to an agent subprocess.

Shorthand for ExMCP.ACP.Client.start_link/1.