ACP-MCP-Server
# ACP-MCP-Server

[](https://badge.fury.io/py/acp-mcp-server)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
A bridge server that connects **Agent Communication Protocol (ACP)** agents with **Model Context Protocol (MCP)** clients, enabling seamless integration between ACP-based AI agents and MCP-compatible tools like Claude Desktop.
## ⨠Features
- š **Protocol Bridge**: Seamlessly connects ACP agents with MCP clients
- š **Multiple Transports**: Supports STDIO, SSE, and Streamable HTTP
- š¤ **Agent Discovery**: Automatic discovery and registration of ACP agents
- š§ **Smart Routing**: Intelligent routing of requests to appropriate agents
- š **Async Support**: Full support for synchronous and asynchronous operations
- š¬ **Interactive Sessions**: Support for multi-turn agent interactions
- š **Multi-Modal**: Handle text, images, and other content types
## š Quick Start
### Installation
```bash
# Install from PyPI
pip install acp-mcp-server
# Or use uvx for isolated execution
uvx acp-mcp-server
```
### Basic Usage
```bash
# Run with STDIO (default, for Claude Desktop)
acp-mcp-server
# Run with SSE transport
acp-mcp-server --transport sse --port 8000
# Run with HTTP transport
acp-mcp-server --transport streamable-http --host 0.0.0.0 --port 9000
# Connect to different ACP server
acp-mcp-server --acp-url http://localhost:8001
```
### Using with Claude Desktop
Add to your Claude Desktop configuration:
```json
{
"mcpServers": {
"acp-bridge": {
"command": "uvx",
"args": ["acp-mcp-server"]
}
}
}
```
## š Requirements
- Python 3.11+
- Running ACP server with agents
- FastMCP for protocol implementation
## š§ Configuration
### Environment Variables
- `ACP_BASE_URL`: ACP server URL (default: `http://localhost:8000`)
### Command Line Options
```
usage: acp-mcp-server [-h] [--transport {stdio,sse,streamable-http}] [--host HOST] [--port PORT] [--path PATH] [--acp-url ACP_URL] [--version]
options:
-h, --help show this help message and exit
--transport {stdio,sse,streamable-http}
Transport protocol (default: stdio)
--host HOST Host address for HTTP transports (default: 127.0.0.1)
--port PORT Port number for HTTP transports (default: 8000)
--path PATH URL path for HTTP transports (default: /mcp)
--acp-url ACP_URL ACP server URL (default: http://localhost:8000)
--version show program's version number and exit
```
## š ļø Available Tools
The bridge server provides several MCP tools:
### Agent Management
- `discover_acp_agents`: Discover available ACP agents
- `get_agent_info`: Get detailed information about specific agents
### Agent Execution
- `run_acp_agent`: Execute agents in sync/async modes
- `get_async_run_result`: Retrieve results from async executions
- `list_active_runs`: List all active agent runs
### Smart Routing
- `smart_route_request`: Intelligently route requests to best agents
- `test_routing`: Test routing logic without execution
- `add_routing_rule`: Add custom routing rules
- `list_routing_strategies`: View all routing strategies
### Interactive Sessions
- `start_interactive_agent`: Start interactive agent sessions
- `provide_user_input`: Provide input to waiting agents
- `list_pending_interactions`: View pending interactions
### Message Processing
- `convert_acp_message`: Convert between ACP and MCP formats
- `analyze_message_content`: Analyze message structure and content
## šļø Architecture
```
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā MCP Client ā ā ACP-MCP Bridge ā ā ACP Agents ā
ā (Claude Desktop)āāāāāŗā Server āāāāāŗā (echo, chat, ā
ā ā ā ā ā translate...) ā
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā ā ā
MCP Protocol Protocol Bridge ACP Protocol
(STDIO/SSE/HTTP) (FastMCP + aiohttp) (HTTP/WebSocket)
```
## š Transport Modes
### STDIO (Default)
Perfect for Claude Desktop integration:
```bash
acp-mcp-server
```
### SSE (Server-Sent Events)
For web applications and streaming:
```bash
acp-mcp-server --transport sse --port 8000
```
### Streamable HTTP
For REST API integration:
```bash
acp-mcp-server --transport streamable-http --port 9000
```
## š³ Docker
### Quick Start with Docker
```bash
# Build the image
docker build -t acp-mcp-server .
# Run with Streamable HTTP transport
docker run -p 9000:9000 acp-mcp-server
# Run with SSE transport
docker run -p 8000:8000 acp-mcp-server \
--transport sse --host 0.0.0.0 --port 8000
# Connect to custom ACP server
docker run -p 9000:9000 -e ACP_BASE_URL=http://my-acp-server:8001 acp-mcp-server
```
### Using Docker Compose
```bash
# Run HTTP transport service
docker-compose up acp-mcp-http
# Run SSE transport service
docker-compose up acp-mcp-sse
# Run both services
docker-compose up
# Run development mode with live code reload
docker-compose --profile dev up acp-mcp-dev
```
### Production Docker Image
For production deployments, use the multi-stage Dockerfile:
```bash
# Build production image
docker build -f Dockerfile.prod -t acp-mcp-server:prod .
# Run production container
docker run -d \
--name acp-mcp-server \
--restart unless-stopped \
-p 9000:9000 \
-e ACP_BASE_URL=http://your-acp-server:8000 \
acp-mcp-server:prod
```
## š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## š License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## š Related Projects
- [FastMCP](https://github.com/jlowin/fastmcp) - Fast, Pythonic MCP server framework
- [ACP SDK](https://github.com/i-am-bee/acp) - Agent Communication Protocol SDK
- [Claude Desktop](https://claude.ai/desktop) - AI assistant with MCP support
## š Support
- š [Report Issues](https://github.com/GongRzhe/ACP-MCP-Server/issues)
- š¬ [Discussions](https://github.com/GongRzhe/ACP-MCP-Server/discussions)
- š [Documentation](https://github.com/GongRzhe/ACP-MCP-Server#readme)
TDQS
Scored across 16 tools
Most tools have distinct purposes, but there is some potential overlap between 'smart_route_request' and 'test_routing' as both involve routing decisions, which could cause confusion. The other tools are clearly differentiated by their specific actions on agents, runs, interactions, or routing components.
All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as 'add_routing_rule', 'analyze_message_content', and 'run_acp_agent'. This uniformity makes the tool set predictable and easy to navigate.
With 16 tools, the count is slightly high but reasonable for an ACP-MCP bridge server covering discovery, routing, execution, and interaction management. It might feel a bit heavy, but each tool appears to serve a specific function in this domain.
The tool set provides comprehensive coverage for the ACP agent domain, including agent discovery, information retrieval, execution (synchronous and asynchronous), routing management, interaction handling, and message conversion. There are no obvious gaps, supporting full lifecycle management.