Skip to main content
Glama

MCP Multi-Server System

by ohm41321

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

  1. Clone the repository.

  2. Install the required Python packages:

    pip install -r requirements.txt

3. Configuration

  1. Create a .env file in the root directory of the project.

  2. Add the following environment variables to the .env file, 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:

python app/main.py

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:

# Terminal 1: Start the Frontend API uvicorn app.frontend_api:app --port 3000 --reload # Terminal 2: Start MCP Server A uvicorn app.server_a:app --port 3001 --reload # Terminal 3: Start MCP Server B uvicorn app.server_b:app --port 3002 --reload

🔗 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

curl http://localhost:3001/check-tools

Example: Execute the get_stock_price tool on Server A

curl -X POST http://localhost:3001/tools/call \ -H "Content-Type: application/json" \ -d { "name": "get_stock_price", "arguments": { "symbol": "AAPL" } }

🛠️ Development

Adding a New Tool

  1. Add the tool's logic to the appropriate server (app/server_a.py or app/server_b.py).

  2. Register the tool in the database using the web interface or by calling the /tools endpoint.

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.

-
security - not tested
-
license - not tested
-
quality - not tested

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ohm41321/MCPSERVER'

If you have feedback or need assistance with the MCP directory API, please join our Discord server