a2a-mcp 0.3.0

Bidirectional integration between A2A Protocol and Model Context Protocol (MCP)
Documentation

A2A-RMCP Integration

A bridge between Agent-to-Agent (A2A) protocol and Rusty Model Context Protocol (RMCP)

Overview

This crate provides integration between the A2A protocol and RMCP, enabling bidirectional communication between these protocols. It follows a bridge pattern with adapter layers for message conversion and protocol translation.

Key Features

  • Use A2A agents as RMCP tools
  • Expose RMCP tools as A2A agents
  • Bidirectional message conversion
  • State management across protocols

Examples

Both run end-to-end with no external setup — they wire up the A2A and MCP sides in-process over an in-memory duplex transport.

  • cargo run --example a2a_as_mcp_server -p a2a-mcp — spins up a tiny A2A HTTP agent, bridges it with AgentToMcpBridge, and demonstrates an MCP client listing and calling its tools.
  • cargo run --example a2a_with_mcp_tools -p a2a-mcp — wraps an A2A handler with McpToA2ABridge so TOOL_CALL: <name> messages get routed to an in-process MCP server.

Architecture

flowchart TD
    subgraph A2A[A2A Protocol]
        A2AAgent[A2A Agent]
        A2AClient[A2A Client]
    end

    subgraph Bridge[a2a-mcp Bridge]
        A2AMCPBridge[AgentToMcpBridge\n(A2A Agent as MCP Server)]
        MCPA2ABridge[McpToA2ABridge\n(MCP Server as A2A Agent)]
        
        A2AMCPBridge <--> |MessageConverter| Converters
        MCPA2ABridge <--> |MessageConverter| Converters
    end

    subgraph MCP[MCP Protocol]
        MCPClient[MCP Client]
        MCPServer[MCP Server]
    end

    A2AAgent <--> |A2A Messages| A2AMCPBridge
    A2AMCPBridge <--> |MCP JSON-RPC| MCPClient
    
    A2AClient <--> |A2A Messages| MCPA2ABridge
    MCPA2ABridge <--> |MCP JSON-RPC| MCPServer

Development Status

See TODO.md for current implementation status and next steps.