Labsco
MCP SERVER

A2A MCP Server

by yw0nam

Let an MCP client talk to Agent-to-Agent agents — register them, send them work, and collect the results by task identifier.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
One conversation, several agents, tasks you can come back to.

The asynchronous shape is the design decision worth knowing: sending a message returns a task identifier rather than waiting, so a long-running agent does not stall the chat and its answer can be collected later. Streaming responses and task cancellation are on the roadmap rather than in the tool list.

What it is

A gateway between the Model Context Protocol and the Agent-to-Agent protocol. MCP clients register A2A agents with it, send them messages, and track the resulting tasks.

What you get
  • register_agent adds an A2A agent by URL, list_agents shows what is registered, unregister_agent removes one
  • send_message hands a message to a registered agent and returns a task identifier immediately, so the client is not blocked while the agent works
  • get_task_result fetches a task's result by that identifier, and get_task_list shows every task with its status
  • The gateway keeps track of which agent is handling which task
  • It runs over stdio for desktop clients, or streamable HTTP or server-sent events for network clients
  • Agent and task state persists to a data directory you choose
Requirements

Python, run straight from the published package with uvx or from a checkout. Each A2A agent you want to reach must be running and reachable at its own URL, locally or deployed. No account or key for the gateway itself.

Setup effort

One command — uvx mcp-a2a-gateway