# MCP-A2A-Gateway
[](https://opensource.org/licenses/Apache-2.0)

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
```bash
# 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)
```bash
# 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

`also support cloud deployed Agent`

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


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

#### 4, Use Claude to retrieve the task 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](https://github.com/astral-sh/uv) (for local development)
## Installation
### Option 1: Direct Run with uvx (Recommended)
Run directly without installation using `uvx`:
```bash
uvx mcp-a2a-gateway
```
This will automatically download and run the latest version from PyPI.
### Option 2: Local Development
1. Clone the repository:
```bash
git clone https://github.com/yw0nam/MCP-A2A-Gateway.git
cd MCP-A2A-Gateway
```
2. Run using uv:
```bash
uv run mcp-a2a-gateway
```
3. Or use uvx with local path:
```bash
uvx --from . mcp-a2a-gateway
```
### Option 3: HTTP (For Web Clients)
**Start the server with HTTP transport:**
```bash
# 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:**
```bash
# 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:
| Variable | Default | Description |
|----------|---------|-------------|
| `MCP_TRANSPORT` | `stdio` | Transport type: `stdio`, `streamable-http`, or `sse` |
| `MCP_HOST` | `0.0.0.0` | Host for HTTP/SSE transports |
| `MCP_PORT` | `8000` | Port for HTTP/SSE transports |
| `MCP_PATH` | `/mcp` | HTTP endpoint path |
| `MCP_DATA_DIR` | `data` | Directory for persistent data storage |
| `MCP_REQUEST_TIMEOUT` | `30` | Request timeout in seconds |
| `MCP_REQUEST_IMMEDIATE_TIMEOUT` | `2` | Immediate response timeout in seconds |
| `LOG_LEVEL` | `INFO` | Logging level: `DEBUG`, `INFO`, `WARNING`, `ERROR` |
**Example .env file:**
```bash
# 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:
```json
"mcpServers": {
"mcp_a2a_gateway": {
"url": "http://0.0.0.0:10000/mcp"
}
}
```
### For STDIO Transport
**Using uvx (Published Package):**
```json
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}
```
**Using uvx (Local Development):**
```json
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "/path/to/MCP-A2A-Gateway", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}
```
**Using uv (Local Development):**
```json
"mcpServers": {
"mcp_a2a_gateway": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/path/to/MCP-A2A-Gateway",
"run",
"mcp-a2a-gateway"
],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Copilot/a2a_gateway/"
}
}
}
```
## To Connect claude desktop
### Transport: STDIO (Recommended)
**Using uvx (Published Package):**
Add this to claude_config.json
```json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uvx",
"args": ["mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}
```
**Using uvx (Local Development):**
Add this to claude_config.json
```json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uvx",
"args": ["--from", "/path/to/MCP-A2A-Gateway", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}
```
**Using uv (Local Development):**
Add this to claude_config.json
```json
"mcpServers": {
"mcp_a2a_gateway": {
"command": "uv",
"args": ["--directory", "/path/to/MCP-A2A-Gateway", "run", "mcp-a2a-gateway"],
"env": {
"MCP_TRANSPORT": "stdio",
"MCP_DATA_DIR": "/Users/your-username/Desktop/data/Claude/a2a_gateway/"
}
}
}
```
## 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
```json
{
"name": "register_agent",
"arguments": {
"url": "http://localhost:41242"
}
}
```
- **list_agents**: Get a list of all registered agents
```json
{
"name": "list_agents",
"arguments": {"dummy": "" }
}
```
- **unregister_agent**: Remove an A2A agent from the bridge server
```json
{
"name": "unregister_agent",
"arguments": {
"url": "http://localhost:41242"
}
}
```
### Message Processing
- **send_message**: Send a message to an agent and get a task_id for the response
```json
{
"name": "send_message",
"arguments": {
"agent_url": "http://localhost:41242",
"message": "What's the exchange rate from USD to EUR?",
"session_id": "optional-session-id"
}
}
```
### Task Management
- **get_task_result**: Retrieve a task's result using its ID
```json
{
"name": "get_task_result",
"arguments": {
"task_id": "b30f3297-e7ab-4dd9-8ff1-877bd7cfb6b1",
}
}
```
- **get_task_list**: Get a list of all tasks and their statuses.
```json
{
"name": "get_task_list",
"arguments": {}
}
```
## Roadmap & How to Contribute
We are actively developing and improving the gateway! We welcome contributions of all kinds. Here is our current development roadmap, focusing on creating a rock-solid foundation first.
### Core Stability & Developer Experience (Help Wanted! 👍)
This is our current focus. Our goal is to make the gateway as stable and easy to use as possible.
- [ ] **Implement Streaming Responses**: Full support for streaming responses from A2A agents.
- [ ] **Enhance Error Handling**: Provide clearer error messages and proper HTTP status codes for all scenarios.
- [ ] **Input Validation**: Sanitize and validate agent URLs during registration for better security.
- [ ] **Add Health Check Endpoint**: A simple `/health` endpoint to monitor the server's status.
- [ ] **Configuration Validation**: Check for necessary environment variables at startup.
- [ ] **Comprehensive Integration Tests**: Increase test coverage to ensure reliability.
- [ ] **Cancel Task**: Implement task cancellation
- [ ] **Implement Streaming Update**: Implement streaming task update. So that user check the progress.
### Community & Distribution
- [x] **Easy Installation**: Add support for `uvx`
- [ ] **Docker Support**: Provide a Docker Compose setup for easy deployment.
- [ ] **Better Documentation**: Create a dedicated documentation site or expand the Wiki.
---
**Want to contribute?** Check out the issues tab or feel free to open a new one to discuss your ideas!
## License
This project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details.
## Acknowledgments
- Anthropic for the [Model Context Protocol](https://modelcontextprotocol.io/)
- Google for the [Agent-to-Agent Protocol](https://github.com/google/A2A)
- Contributors to the FastMCP library
- Contributors of [A2A-MCP-Server](https://github.com/GongRzhe/A2A-MCP-Server) (This project highly inspired from this repo.)
## Automated Publishing & Releases
This project uses automated publishing through GitHub Actions for seamless releases.
### Automated Release Process
#### Option 1: Using the Release Script (Recommended)
```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
2. 📈 Automatically bump the version in `pyproject.toml`
3. 🔨 Build and test the package locally
4. 📤 Commit the version change and create a git tag
5. 🚀 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**:
- Go to https://pypi.org/manage/account/token/
- Create a new token with "Entire account" scope
- Copy the token (starts with `pypi-`)
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:
```bash
# Build and get manual publish instructions
./publish.sh
# Or publish directly (with credentials configured)
uv build
uv publish
```
Raw data
{
"_id": null,
"home_page": null,
"name": "mcp-a2a-gateway",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "yw0nam <spow2544@gmail.com>",
"keywords": "A2A, AI, Agent-to-Agent, LLM, MCP, Model Context Protocol, uvx",
"author": null,
"author_email": "yw0nam <spow2544@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/17/4e/677e6dd19e4f0da26bb7527a8c53e90419579b9e87a435a711ac628b1158/mcp_a2a_gateway-0.1.7.tar.gz",
"platform": null,
"description": "# MCP-A2A-Gateway\n\n[](https://opensource.org/licenses/Apache-2.0)\n\n\nA 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.\n\n## Overview\n\nThis project serves as an integration layer between two cutting-edge AI agent protocols:\n\n- **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.\n\n- **Agent-to-Agent Protocol (A2A)**: Developed by Google, A2A enables communication and interoperability between different AI agents through a standardized JSON-RPC interface.\n\nBy 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.\n\n## Quick Start\n\n\ud83c\udf89 **The package is now available on PyPI!**\n\n### No Installation Required\n```bash\n# Run with default settings (stdio transport)\nuvx mcp-a2a-gateway\n\n# Run with HTTP transport for web clients\nMCP_TRANSPORT=streamable-http MCP_PORT=10000 uvx mcp-a2a-gateway\n\n# Run with custom data directory\nMCP_DATA_DIR=\"/Users/your-username/Desktop/a2a_data\" uvx mcp-a2a-gateway\n\n# Run with specific version\nuvx mcp-a2a-gateway==0.1.6\n\n# Run with multiple environment variables\nMCP_TRANSPORT=stdio MCP_DATA_DIR=\"/custom/path\" LOG_LEVEL=DEBUG uvx mcp-a2a-gateway\n```\n\n### For Development (Local)\n```bash\n# Clone and run locally\ngit clone https://github.com/yw0nam/MCP-A2A-Gateway.git\ncd MCP-A2A-Gateway\n\n# Run with uv\nuv run mcp-a2a-gateway\n\n# Run with uvx from local directory\nuvx --from . mcp-a2a-gateway\n\n# Run with custom environment for development\nMCP_TRANSPORT=streamable-http MCP_PORT=8080 uvx --from . mcp-a2a-gateway\n```\n\n### Demo\n\n#### 1, Run The hello world Agent in A2A Sample\n\n\n\n`also support cloud deployed Agent`\n\n\n\n#### 2, Use Claude or github copilot to register the agent.\n\n\n\n\n#### 3, Use Claude to Send a task to the hello Agent and get the result.\n\n\n\n#### 4, Use Claude to retrieve the task result.\n\n\n\n## Features\n\n- **Agent Management**\n - Register A2A agents with the bridge server\n - List all registered agents\n - Unregister agents when no longer needed\n\n- **Communication**\n - Send messages to A2A agents and receive responses\n - Asynchronous message sending for immediate server response.\n - Stream responses from A2A agents in real-time\n\n- **Task Management**\n - Track which A2A agent handles which task\n - Retrieve task results using task IDs\n - Get a list of all tasks and their statuses.\n - Cancel running tasks\n\n- **Transport Support**\n - Multiple transport types: stdio, streamable-http, SSE\n - Configure transport type using MCP_TRANSPORT environment variable\n\n## Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- Python 3.11+\n- [uv](https://github.com/astral-sh/uv) (for local development)\n\n## Installation\n\n### Option 1: Direct Run with uvx (Recommended)\n\nRun directly without installation using `uvx`:\n\n```bash\nuvx mcp-a2a-gateway\n```\n\nThis will automatically download and run the latest version from PyPI.\n\n### Option 2: Local Development\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/yw0nam/MCP-A2A-Gateway.git\ncd MCP-A2A-Gateway\n```\n\n2. Run using uv:\n\n```bash\nuv run mcp-a2a-gateway\n```\n\n3. Or use uvx with local path:\n\n```bash\nuvx --from . mcp-a2a-gateway\n```\n\n### Option 3: HTTP (For Web Clients)\n\n**Start the server with HTTP transport:**\n```bash\n# Using uvx\nMCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gateway\n```\n### Option 4: (Server-Sent Events)\n\n**Start the server with SSE transport:**\n```bash\n# Using uvx\nMCP_TRANSPORT=sse MCP_HOST=0.0.0.0 MCP_PORT=10000 uvx mcp-a2a-gateway\n```\n\n## Configuration\n\n### Environment Variables\n\nThe server can be configured using the following environment variables:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_TRANSPORT` | `stdio` | Transport type: `stdio`, `streamable-http`, or `sse` |\n| `MCP_HOST` | `0.0.0.0` | Host for HTTP/SSE transports |\n| `MCP_PORT` | `8000` | Port for HTTP/SSE transports |\n| `MCP_PATH` | `/mcp` | HTTP endpoint path |\n| `MCP_DATA_DIR` | `data` | Directory for persistent data storage |\n| `MCP_REQUEST_TIMEOUT` | `30` | Request timeout in seconds |\n| `MCP_REQUEST_IMMEDIATE_TIMEOUT` | `2` | Immediate response timeout in seconds |\n| `LOG_LEVEL` | `INFO` | Logging level: `DEBUG`, `INFO`, `WARNING`, `ERROR` |\n\n**Example .env file:**\n```bash\n# Transport configuration\nMCP_TRANSPORT=stdio\nMCP_HOST=0.0.0.0\nMCP_PORT=10000\nMCP_PATH=/mcp\n\n# Data storage\nMCP_DATA_DIR=/Users/your-username/Desktop/data/a2a_gateway\n\n# Timeouts\nMCP_REQUEST_TIMEOUT=30\nMCP_REQUEST_IMMEDIATE_TIMEOUT=2\n\n# Logging\nLOG_LEVEL=INFO\n```\n\n### Transport Types\n\nThe A2A MCP Server supports multiple transport types:\n\n1. **stdio** (default): Uses standard input/output for communication\n - Ideal for command-line usage and testing\n - No HTTP server is started\n - Required for Claude Desktop\n\n2. **streamable-http** (recommended for web clients): HTTP transport with streaming support\n - Recommended for production deployments\n - Starts an HTTP server to handle MCP requests\n - Enables streaming of large responses\n\n3. **sse**: Server-Sent Events transport\n - Provides real-time event streaming\n - Useful for real-time updates\n\n\n\n## TO connect github copilot\n\n### For HTTP/SSE Transport\nAdd below to VS Code settings.json for sse or http:\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"url\": \"http://0.0.0.0:10000/mcp\"\n }\n}\n```\n\n### For STDIO Transport\n\n**Using uvx (Published Package):**\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"mcp-a2a-gateway\"],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Copilot/a2a_gateway/\"\n }\n }\n}\n```\n\n**Using uvx (Local Development):**\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"--from\", \"/path/to/MCP-A2A-Gateway\", \"mcp-a2a-gateway\"],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Copilot/a2a_gateway/\"\n }\n }\n}\n```\n\n**Using uv (Local Development):**\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"type\": \"stdio\",\n \"command\": \"uv\",\n \"args\": [\n \"--directory\",\n \"/path/to/MCP-A2A-Gateway\",\n \"run\",\n \"mcp-a2a-gateway\"\n ],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Copilot/a2a_gateway/\"\n }\n }\n}\n```\n\n## To Connect claude desktop\n\n### Transport: STDIO (Recommended)\n\n**Using uvx (Published Package):**\nAdd this to claude_config.json\n\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"command\": \"uvx\",\n \"args\": [\"mcp-a2a-gateway\"],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Claude/a2a_gateway/\"\n }\n }\n}\n```\n\n**Using uvx (Local Development):**\nAdd this to claude_config.json\n\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"command\": \"uvx\",\n \"args\": [\"--from\", \"/path/to/MCP-A2A-Gateway\", \"mcp-a2a-gateway\"],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Claude/a2a_gateway/\"\n }\n }\n}\n```\n\n**Using uv (Local Development):**\nAdd this to claude_config.json\n\n```json\n\"mcpServers\": {\n \"mcp_a2a_gateway\": {\n \"command\": \"uv\",\n \"args\": [\"--directory\", \"/path/to/MCP-A2A-Gateway\", \"run\", \"mcp-a2a-gateway\"],\n \"env\": {\n \"MCP_TRANSPORT\": \"stdio\",\n \"MCP_DATA_DIR\": \"/Users/your-username/Desktop/data/Claude/a2a_gateway/\"\n }\n }\n}\n```\n\n\n## Available MCP Tools\n\nThe server exposes the following MCP tools for integration with LLMs like Claude:\n\n### Agent Management\n\n- **register_agent**: Register an A2A agent with the bridge server\n\n ```json\n {\n \"name\": \"register_agent\",\n \"arguments\": {\n \"url\": \"http://localhost:41242\"\n }\n }\n ```\n\n- **list_agents**: Get a list of all registered agents\n\n ```json\n {\n \"name\": \"list_agents\",\n \"arguments\": {\"dummy\": \"\" }\n }\n ```\n\n- **unregister_agent**: Remove an A2A agent from the bridge server\n\n ```json\n {\n \"name\": \"unregister_agent\",\n \"arguments\": {\n \"url\": \"http://localhost:41242\"\n }\n }\n ```\n\n### Message Processing\n\n- **send_message**: Send a message to an agent and get a task_id for the response\n\n ```json\n {\n \"name\": \"send_message\",\n \"arguments\": {\n \"agent_url\": \"http://localhost:41242\",\n \"message\": \"What's the exchange rate from USD to EUR?\",\n \"session_id\": \"optional-session-id\"\n }\n }\n ```\n\n### Task Management\n\n- **get_task_result**: Retrieve a task's result using its ID\n\n ```json\n {\n \"name\": \"get_task_result\",\n \"arguments\": {\n \"task_id\": \"b30f3297-e7ab-4dd9-8ff1-877bd7cfb6b1\",\n }\n }\n ```\n\n- **get_task_list**: Get a list of all tasks and their statuses.\n\n ```json\n {\n \"name\": \"get_task_list\",\n \"arguments\": {}\n }\n ```\n\n\n## Roadmap & How to Contribute\n\nWe are actively developing and improving the gateway! We welcome contributions of all kinds. Here is our current development roadmap, focusing on creating a rock-solid foundation first.\n\n### Core Stability & Developer Experience (Help Wanted! \ud83d\udc4d)\n\nThis is our current focus. Our goal is to make the gateway as stable and easy to use as possible.\n\n- [ ] **Implement Streaming Responses**: Full support for streaming responses from A2A agents.\n- [ ] **Enhance Error Handling**: Provide clearer error messages and proper HTTP status codes for all scenarios.\n- [ ] **Input Validation**: Sanitize and validate agent URLs during registration for better security.\n- [ ] **Add Health Check Endpoint**: A simple `/health` endpoint to monitor the server's status.\n- [ ] **Configuration Validation**: Check for necessary environment variables at startup.\n- [ ] **Comprehensive Integration Tests**: Increase test coverage to ensure reliability.\n- [ ] **Cancel Task**: Implement task cancellation\n- [ ] **Implement Streaming Update**: Implement streaming task update. So that user check the progress.\n\n\n### Community & Distribution\n\n- [x] **Easy Installation**: Add support for `uvx`\n- [ ] **Docker Support**: Provide a Docker Compose setup for easy deployment.\n- [ ] **Better Documentation**: Create a dedicated documentation site or expand the Wiki.\n\n---\n**Want to contribute?** Check out the issues tab or feel free to open a new one to discuss your ideas!\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Anthropic for the [Model Context Protocol](https://modelcontextprotocol.io/)\n- Google for the [Agent-to-Agent Protocol](https://github.com/google/A2A)\n- Contributors to the FastMCP library\n- Contributors of [A2A-MCP-Server](https://github.com/GongRzhe/A2A-MCP-Server) (This project highly inspired from this repo.)\n\n## Automated Publishing & Releases\n\nThis project uses automated publishing through GitHub Actions for seamless releases.\n\n### Automated Release Process\n\n#### Option 1: Using the Release Script (Recommended)\n\n```bash\n# Patch release (0.1.6 \u2192 0.1.7)\n./release.sh patch\n\n# Minor release (0.1.6 \u2192 0.2.0) \n./release.sh minor\n\n# Major release (0.1.6 \u2192 1.0.0)\n./release.sh major\n```\n\nThe script will:\n1. \u2705 Check you're on the main branch with clean working directory\n2. \ud83d\udcc8 Automatically bump the version in `pyproject.toml`\n3. \ud83d\udd28 Build and test the package locally\n4. \ud83d\udce4 Commit the version change and create a git tag\n5. \ud83d\ude80 Push to GitHub, triggering automated PyPI publishing\n\n#### Option 2: Manual Tag Creation\n\n```bash\n# Update version in pyproject.toml manually\n# Then create and push a tag\ngit add pyproject.toml\ngit commit -m \"chore: bump version to 0.1.7\"\ngit tag v0.1.7\ngit push origin main\ngit push origin v0.1.7\n```\n\n#### Option 3: GitHub Releases\n\n1. Go to https://github.com/yw0nam/MCP-A2A-Gateway/releases\n2. Click \"Create a new release\"\n3. Choose or create a tag (e.g., `v0.1.7`)\n4. Fill in release notes\n5. Publish the release\n\n### Setting Up Automated Publishing\n\nTo enable automated publishing, add your PyPI API token to GitHub Secrets:\n\n1. **Get PyPI API Token**:\n - Go to https://pypi.org/manage/account/token/\n - Create a new token with \"Entire account\" scope\n - Copy the token (starts with `pypi-`)\n\n2. **Add to GitHub Secrets**:\n - Go to your repository \u2192 Settings \u2192 Secrets and variables \u2192 Actions\n - Add a new repository secret:\n - **Name**: `PYPI_API_TOKEN`\n - **Value**: Your PyPI token\n\n3. **Test the Workflow**:\n - Push a tag or create a release\n - Check the Actions tab for publishing status\n\n### Manual Publishing\n\nFor emergency releases or local testing:\n\n```bash\n# Build and get manual publish instructions\n./publish.sh\n\n# Or publish directly (with credentials configured)\nuv build\nuv publish\n```",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A bridge server that connects Model Context Protocol (MCP) with Agent-to-Agent (A2A) protocol",
"version": "0.1.7",
"project_urls": {
"Bug Tracker": "https://github.com/yw0nam/mcp-a2a-gateway/issues",
"Documentation": "https://github.com/yw0nam/mcp-a2a-gateway/blob/main/README.md",
"Homepage": "https://github.com/yw0nam/mcp-a2a-gateway",
"Repository": "https://github.com/yw0nam/mcp-a2a-gateway"
},
"split_keywords": [
"a2a",
" ai",
" agent-to-agent",
" llm",
" mcp",
" model context protocol",
" uvx"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "abc94156b063e185fdeea01d626d6fcfa84de3a60d306598b1b5392c06ced1f4",
"md5": "7659234d91bf17dddb981790735b5476",
"sha256": "6e3f5f3fb6d36c0d7385374dd8c0ec0936c31eee53e3474312fa2a871b868279"
},
"downloads": -1,
"filename": "mcp_a2a_gateway-0.1.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7659234d91bf17dddb981790735b5476",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 23638,
"upload_time": "2025-07-11T00:01:35",
"upload_time_iso_8601": "2025-07-11T00:01:35.610102Z",
"url": "https://files.pythonhosted.org/packages/ab/c9/4156b063e185fdeea01d626d6fcfa84de3a60d306598b1b5392c06ced1f4/mcp_a2a_gateway-0.1.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "174e677e6dd19e4f0da26bb7527a8c53e90419579b9e87a435a711ac628b1158",
"md5": "1d45c0cdb5a31c179cecc5b74f2e59aa",
"sha256": "b6349138a5cb5514a4278e75c3470f6da89f46e8b2cbc52b68b0b49109d10122"
},
"downloads": -1,
"filename": "mcp_a2a_gateway-0.1.7.tar.gz",
"has_sig": false,
"md5_digest": "1d45c0cdb5a31c179cecc5b74f2e59aa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 726995,
"upload_time": "2025-07-11T00:01:36",
"upload_time_iso_8601": "2025-07-11T00:01:36.848050Z",
"url": "https://files.pythonhosted.org/packages/17/4e/677e6dd19e4f0da26bb7527a8c53e90419579b9e87a435a711ac628b1158/mcp_a2a_gateway-0.1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-11 00:01:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yw0nam",
"github_project": "mcp-a2a-gateway",
"github_not_found": true,
"lcname": "mcp-a2a-gateway"
}