Skip to main content
Glama
README.md
# MCP Router

MCP Router is a service discovery and proxy for MCP (Model Control Protocol) services. It allows you to register, discover, and execute tools on remote MCP servers.

## Features

1. **Service Discovery**: Register and search for MCP services using vector-based similarity search
2. **Tool Execution Proxy**: Execute tools on remote MCP servers through the router
3. **MCP Compliance**: Fully compliant with the MCP protocol specification

## Architecture

The MCP Router consists of two core modules:

1. **MCP Data Plane**: The frontend that interacts with MCP clients, providing service discovery, registration, and tool execution proxying
2. **MCP Discovery Service**: The backend that uses Alibaba Cloud's vector database and embedding models for intelligent search and management of registered MCP services

## Prerequisites

- Python 3.11 or higher
- Access to Alibaba Cloud DashScope and DashVector services
- API keys for DashScope and DashVector

## Installation

1. Clone the repository:
   ```bash
   git clone <repository-url>
   cd mcp-router
   ```

2. Install dependencies using uv:
   ```bash
   uv add pydantic httpx dashscope dashvector python-dotenv
   ```

3. Set up environment variables in `.env`:
   ```env
   DASHSCOPE_API_KEY=your_dashscope_api_key
   DASHVECTOR_API_KEY=your_dashvector_api_key
   DASHVECTOR_ENDPOINT=your_dashvector_endpoint
   COLLECTION_NAME=mcp_services_collection
   EMBEDDING_DIMENSION=1024
   ```

## Usage

Run the MCP Router server:
```bash
uv run python mcp_router.py
```

## Tools

The MCP Router provides three tools:

1. **search_mcp_server**: Search for registered MCP servers based on a query
2. **add_mcp_server**: Register a new MCP server with the discovery service
3. **exec_mcp_tool**: Execute a tool on a target MCP server

## Development


### Code Structure

- `mcp_router.py`: Main MCP server implementation (Data Plane)
- `discovery_service.py`: Discovery service implementation (Discovery Service)
- `config.py`: Configuration management

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: add_mcp_server registers servers, exec_mcp_tool executes tools on servers, and search_mcp_server searches for servers. The descriptions reinforce these distinct roles, making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case: add_mcp_server, exec_mcp_tool, and search_mcp_server. This predictable naming scheme enhances readability and usability for agents.

Tool Count3/5

With only 3 tools, the server feels thin for a router's scope, which typically involves more operations like listing, updating, or removing servers. While the core functions are present, the count is borderline for comprehensive routing capabilities.

Completeness3/5

The tool set covers basic registration, execution, and search, but lacks operations for updating or deleting servers, which are common in lifecycle management. This creates notable gaps that agents might need to work around for full server management.

Maintenance

ActivityInactive
ResponsivenessNo issues