procursorrules.com
Sign In
Back to MCPs
M

Mcp_a2a_gateway

by yw0nam

MCP-A2A-Gateway

License

smithery badge

cover_image
A gateway server that bridges the Model Context Protocol (MCP) with the Agent-to-Agent (A2A) protocol, enabling MCP-compatible AI assistants (like Claude) to seamlessly interact with A2A agents.

Overview

This project serves as an integration layer between two cutting-edge AI agent protocols:

  • Model Context Protocol (MCP): Developed by Anthropic, MCP allows AI assistants to connect to external tools and data sources. It standardizes how AI applications and large language models connect to external resources in a secure, composable way.

  • Agent-to-Agent Protocol (A2A): Developed by Google, A2A enables communication and interoperability between different AI agents through a standardized JSON-RPC interface.

By bridging these protocols, this server allows MCP clients (like Claude) to discover, register, communicate with, and manage tasks on A2A agents through a unified interface.

Quick Start

šŸŽ‰ The package is now available on PyPI!

No Installation Required

# Run with default settings (stdio transport)
uvx mcp-a2a-gateway

# Run with HTTP transport for web clients
MCP_TRANSPORT=streamable-http MCP_PORT=10000 uvx mcp-a2a-gateway

# Run with custom data directory
MCP_DATA_DIR="/Users/your-username/Desktop/a2a_data" uvx mcp-a2a-gateway

# Run with specific version
uvx mcp-a2a-gateway==0.1.6

# Run with multiple environment variables
MCP_TRANSPORT=stdio MCP_DATA_DIR="/custom/path" LOG_LEVEL=DEBUG uvx mcp-a2a-gateway

For Development (Local)

# Clone and run locally
git clone https://github.com/yw0nam/MCP-A2A-Gateway.git
cd MCP-A2A-Gateway

# Run with uv
uv run mcp-a2a-gateway

# Run with uvx from local directory
uvx --from . mcp-a2a-gateway

# Run with custom environment for development
MCP_TRANSPORT=streamable-http MCP_PORT=8080 uvx --from . mcp-a2a-gateway

Demo

1, Run The hello world Agent in A2A Sample

agent

also support cloud deployed Agent

cloudAgent

2, Use Claude or github copilot to register the agent.

register_claude
register_copilot

3, Use Claude to Send a task to the hello Agent and get the result.

send_message

4, Use Claude to retrieve the task result.

retrieve_result

Features

  • Agent Management

    • Register A2A agents with the bridge server
    • List all registered agents
    • Unregister agents when no longer needed
  • Communication

    • Send messages to A2A agents and receive responses
    • Asynchronous message sending for immediate server response.
    • Stream responses from A2A agents in real-time
  • Task Management

    • Track which A2A agent handles which task
    • Retrieve task results using task IDs
    • Get a list of all tasks and their statuses.
    • Cancel running tasks
  • Transport Support

    • Multiple transport types: stdio, streamable-http, SSE
    • Configure transport type using MCP_TRANSPORT environment variable

Prerequisites

Before you begin, ensure you have the following installed:

  • Python 3.11+
  • uv (for local development)

Installation

Option 1: Direct Run with uvx (Recommended)

Run directly without installation using uvx:

uvx mcp-a2a-gateway

Option 2: Local Development

  1. Clone the repository:
git clone https://github.com/yw0nam/MCP-A2A-Gateway.git
cd MCP-A2A-Gateway
  1. Run using uv:
uv run mcp-a2a-gateway
  1. Or use uvx with local path:
uvx --from . mcp-a2a-gateway

Option 3: HTTP (For Web Clients)

Start the server with HTTP transport:

# Using uvx
MCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gateway

Option 4: Server-Sent Events

Start the server with SSE transport:

# Using uvx
MCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gateway

Configuration

Environment Variables

The server can be configured using the following environment variables:

VariableDefaultDescription
MCP_TRANSPORTstdioTransport type: stdio, streamable-http, or sse
MCP_HOST0.0.0.0Host for HTTP/SSE transports
MCP_PORT8000Port for HTTP/SSE transports
MCP_PATH/mcpHTTP endpoint path
MCP_DATA_DIRdataDirectory for persistent data storage
MCP_REQUEST_TIMEOUT30Request timeout in seconds
MCP_REQUEST_IMMEDIATE_TIMEOUT2Immediate response timeout in seconds
LOG_LEVELINFOLogging level: DEBUG, INFO, WARNING, ERROR

Example .env file:

# Transport configuration
MCP_TRANSPORT=stdio
MCP_HOST=0.0.0.0
MCP_PORT=10000
MCP_PATH=/mcp

# Data storage
MCP_DATA_DIR=/Users/your-username/Desktop/data/a2a_gateway

# Timeouts
MCP_REQUEST_TIMEOUT=30
MCP_REQUEST_IMMEDIATE_TIMEOUT=2

# Logging
LOG_LEVEL=INFO

Transport Types

The A2A MCP Server supports multiple transport types:

  1. stdio (default): Uses standard input/output for communication

    • Ideal for command-line usage and testing
    • No HTTP server is started
    • Required for Claude Desktop
  2. streamable-http (recommended for web clients): HTTP transport with streaming support

    • Recommended for production deployments
    • Starts an HTTP server to handle MCP requests
    • Enables streaming of large responses
  3. sse: Server-Sent Events transport

    • Provides real-time event streaming
    • Useful for real-time updates

To connect github copilot

For HTTP/SSE Transport

Add below to VS Code settings.json for sse or http:

*Configuration content*

For STDIO Transport - Using uvx (Published Package)

*Configuration content*

For STDIO Transport - Using uvx (Local Development)

*Configuration content*

For STDIO Transport - Using uv (Local Development)

*Configuration content*

To Connect claude desktop

Using uvx (Published Package)

Add this to claude_config.json

*Configuration content*

Using uvx (Local Development)

Add this to claude_config.json

*Configuration content*

Using uv (Local Development)

Add this to claude_config.json

*Configuration content*

Available MCP Tools

The server exposes the following MCP tools for integration with LLMs like Claude:

Agent Management

  • register_agent: Register an A2A agent with the bridge server

    *Configuration content*bash

Patch release (0.1.6 → 0.1.7)

./release.sh patch

Minor release (0.1.6 → 0.2.0)

./release.sh minor

Major release (0.1.6 → 1.0.0)

./release.sh major


The script will:

1. āœ… Check you're on the main branch with clean working directory
1. šŸ“ˆ Automatically bump the version in `pyproject.toml`
1. šŸ”Ø Build and test the package locally
1. šŸ“¤ Commit the version change and create a git tag
1. šŸš€ Push to GitHub, triggering automated PyPI publishing

#### Option 2: Manual Tag Creation

```bash
# Update version in pyproject.toml manually
# Then create and push a tag
git add pyproject.toml
git commit -m "chore: bump version to 0.1.7"
git tag v0.1.7
git push origin main
git push origin v0.1.7

Option 3: GitHub Releases

  1. Go to https://github.com/yw0nam/MCP-A2A-Gateway/releases
  2. Click "Create a new release"
  3. Choose or create a tag (e.g., v0.1.7)
  4. Fill in release notes
  5. Publish the release

Setting Up Automated Publishing

To enable automated publishing, add your PyPI API token to GitHub Secrets:

  1. Get PyPI API Token:

  2. Add to GitHub Secrets:

    • Go to your repository → Settings → Secrets and variables → Actions
    • Add a new repository secret:
      • Name: PYPI_API_TOKEN
      • Value: Your PyPI token
  3. Test the Workflow:

    • Push a tag or create a release
    • Check the Actions tab for publishing status

Manual Publishing

For emergency releases or local testing:

# Build and get manual publish instructions
./publish.sh

# Or publish directly (with credentials configured)
uv build
uv publish
Statistics
Tools
0
Stars
4
Last Checked
9/3/2025
Version Info

No version information available