MCP Multi-Server System
A multi-server system for the Model Context Protocol (MCP), featuring a unified frontend and two specialized backend servers for different toolsets.
🏗️ Architecture
The system consists of three main components:
Frontend API (Port 3000): A FastAPI application that serves the web interface for managing agents and tools, and acts as a gateway to the backend MCP servers.
MCP Server A (Port 3001): A FastAPI application that provides finance-related tools.
MCP Server B (Port 3002): A FastAPI application that provides general utility tools.
PostgreSQL Database: A central database for storing information about servers, tools, and agents.
🚀 Getting Started
1. Prerequisites
Python 3.8+
PostgreSQL
2. Installation
Clone the repository.
Install the required Python packages:
pip install -r requirements.txt
3. Configuration
Create a
.envfile in the root directory of the project.Add the following environment variables to the
.envfile, adjusting the values as needed:# Database Configuration DATABASE_URL=postgresql://user:password@localhost/mcp_config # Server Ports PORT_A=3001 PORT_B=3002
4. Running the System
You can run the entire system with a single command:
This will start the Frontend API on port 3000, MCP Server A on port 3001, and MCP Server B on port 3002.
You can access the web interface by navigating to http://localhost:3000 in your web browser.
Alternatively, you can run each server individually:
🔗 API Endpoints
Frontend API (Port 3000)
/: The main web interface for managing agents and tools./servers: Get a list of all available MCP servers./agents: Manage agents (create, list, update, delete)./manage-tools/{server_name}: A web interface for managing the tools of a specific server.
MCP Servers (Ports 3001 & 3002)
/health: Check the health of the server./tools: List all available tools on the server./check-tools: A simplified endpoint to check the available tools./tools/call: Execute a tool on the server.
Example: Check the tools on Server A
Example: Execute the get_stock_price tool on Server A
🛠️ Development
Adding a New Tool
Add the tool's logic to the appropriate server (
app/server_a.pyorapp/server_b.py).Register the tool in the database using the web interface or by calling the
/toolsendpoint.
Database
The database schema is defined by the SQLAlchemy models in app/database.py. The database is initialized with some default data when the system starts up.
📝 License
This project is licensed under the MIT License.
This server cannot be installed