MCPHub
A centralized management platform that aggregates multiple Model Context Protocol (MCP) servers into a single unified endpoint for AI agents. It provides a web interface for hot-swappable tool management, proxying of existing servers, and AI-powered generation of custom MCP plugins.
README
MCPHub
<h3 align="center">π An MCP Tool Service Platform - One Connection, Infinite Possibilities for AI Agents</h3>
<p align="center"> <a href="#-key-features">Key Features</a> β’ <a href="#-quick-start">Quick Start</a> β’ <a href="#-feature-details">Feature Details</a> β’ <a href="#-api-documentation">API Documentation</a> β’ <a href="#-development-guide">Development Guide</a> </p>
<p align="center"> <img src="https://img.shields.io/badge/Python-3.10+-blue.svg" alt="Python"> <img src="https://img.shields.io/badge/FastMCP-2.14+-green.svg" alt="FastMCP"> <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License"> </p>
πΈ System Screenshots
Login Interface

Default credentials: username
admin, passwordadmin123
Module Management Interface

Manage all MCP modules with support for loading, unloading, and reloading operations
Tool Details & Control

Enable/disable each tool individually, edit tool descriptions in real-time
Proxy Server Management

Proxy existing MCP Servers without modification
Usage Statistics Dashboard

Visualize tool call counts, success rates, and response times
AI Code Generation

Generate MCP plugin code through natural language conversation
π― What is This?
MCPHub is a tool service platform based on the MCP (Model Context Protocol). It addresses a pain point in current AI Agent systems:
Each MCP Server needs to be configured separately on the client side. As the number of tools increases, configuration management becomes chaotic.
MCPHub's Solution:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Before: Scattered Configuration β
β Claude/Cursor needs to configure dozens of MCP Server addressesβ
β - mcp-server-filesystem β
β - mcp-server-github β
β - mcp-server-postgres β
β - mcp-server-python β
β - ... (configuration explosion) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β¬οΈ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β After: Unified Entry Point
β Claude/Cursor only needs to configure one address
β { "mcpServers": { "mcp-hub": { "url": "http://host:6081/mcp" } } }
β
β MCP Hub automatically aggregates all tools, providing:
β β
Centralized tool management
β β
Hot-pluggable enable/disable
β β
Unified monitoring and statistics
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β¨ Key Features
1οΈβ£ One Address, Infinite Tools
AI Agent clients only need to configure one MCP Server address to access all tools on the platform. Whether built-in tools, custom plugins, or proxied third-party MCP Servers, they are all transparent to clients.
2οΈβ£ Hot-Pluggable Tool Management
- Module-level Management: Load, unload, and reload modules without restarting the service
- Tool-level Control: Individual tools can be enabled/disabled independently
- Hot Configuration Updates: Tool description changes take effect immediately without restart
3οΈβ£ Proxy Existing MCP Servers
Already have MCP Servers? No modification needed - just configure a proxy to integrate:
{
"name": "my-existing-server",
"url": "http://existing-server:8080/mcp",
"transport": "streamable-http"
}
The platform automatically discovers and transparently proxies all tools from that server.
4οΈβ£ AI-Powered MCP Plugin Generation
Built-in AI code generation feature - generate compliant MCP module code through natural language conversation:
User: Help me create a weather query tool
AI: Generated t_weather module with get_current_weather and get_forecast tools...
Everyone can become an MCP tool developer!
5οΈβ£ Plugin Ecosystem: Install & Share
- One-click Install: Upload a ZIP package to install third-party plugins
- One-click Export: Package custom plugins as ZIP to share with other users
- Modular Isolation: Separate management of built-in tools (
tools/) and external plugins (tools_external/)
6οΈβ£ Comprehensive Usage Statistics
Intuitively view usage for each tool:
- Call count statistics
- Success rate tracking
- Response time analysis
- 24-hour trend charts
π οΈ Built-in Tools
The platform comes with core tool modules ready to use:
| Category | Module | Tools | Description |
|---|---|---|---|
| π₯οΈ CLI Execution | t_cli |
run_cli_command, list_directory, get_system_info, get_disk_usage, get_running_processes, find_files... |
Execute system commands, view processes, disk monitoring, network info |
| π Python Execution | t_python |
run_python_script, installPackage, run_python_script_async, get_script_status |
Safely execute Python scripts, install dependencies, async execution |
| π€ GUI Automation | t_autogui |
autogui_start_task, autogui_get_status, autogui_get_history, autogui_stop_task |
AI-driven desktop automation, automatic mouse and keyboard operations |
| π Notebook | t_notebook |
add_note, read_note |
Note creation and querying, persistent storage |
Featured: AI-Driven GUI Automation
The t_autogui module implements AI-driven desktop automation:
User: Help me open the browser and visit GitHub
Agent: [Calls autogui_start_task] β AI plans task steps β Executes mouse and keyboard operations
This is a killer feature of this platform: AI can operate the computer desktop like a human, completing complex GUI interaction tasks.
π¦ Extension Tools
Beyond built-in tools, the platform supports installing extension plugins. Here are some available extension tool examples:
| Category | Module | Tools | Description |
|---|---|---|---|
| π File Operations | t_file |
read_file_utf8, write_file_utf8, unzip |
Local file read/write, unzip |
| π FTP Transfer | t_ftp |
ftp_upload_file, ftp_download_file, ftp_create_directory |
FTP file transfer and management |
| 𧬠PDB Database | t_pdb |
download_structure, convert_cif_to_pdb |
Protein structure database query and format conversion |
| π¬ Foldseek | t_foldseek |
foldseek_sort_by_evalue, foldseek_sort_by_fident |
Protein structure similarity search result processing |
| π AlphaBio | t_alphabio |
get_project_info, get_enzyme_activity |
AlphaBio database integration |
| π§ͺ DNA Prediction | t_dna_predict |
predict_collection_threshold |
DNA base sequence collection threshold prediction |
| ποΈ Project Database | t_project_db |
query_project_db, get_project_db_schema |
PostgreSQL project management database query |
These extension tools are located in the
tools_external/directory and can be loaded on demand through the Web interface or API. You can also develop your own extension tools and install them on the platform.
π Quick Start
Requirements
- Python 3.10+
- (Optional) Node.js 18+ - for building the frontend
Installation
# Clone the project
git clone https://github.com/Jayden-Dong/MCPHub.git
cd MCPHub
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
Start the Service
cd app
python main.py
After starting, access:
- π Web Management Interface:
http://localhost:6080 - π API Documentation:
http://localhost:6080/docs - π MCP Endpoint:
http://localhost:6081/mcp
Configure MCP Client
Add the following in Claude Desktop / Cursor/Cherry Studio or other MCP clients:
{
"mcpServers": {
"general-tools": {
"url": "http://localhost:6081/mcp"
}
}
}
π Done! Your AI Agent can now use all enabled tools on the platform.
π Feature Details
Module Management
Manage modules through the Web interface or API:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Module List [Scan New Modules] [Install]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
t_cli Loaded [Details] [Reload] [Unload]
β β
t_python Loaded [Details] [Reload] [Unload]
β βΈοΈ t_autogui Paused [Details] [Load]
β π¦ t_weather Not Loaded [Details] [Load] [Export]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Tool-level Control
Enter module details to enable/disable each tool individually:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β t_cli Module Details
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π§ run_cli_command [β
Enabled]
β π§ list_directory [β
Enabled]
β π§ get_system_info [β Disabled]
β π§ kill_process [β Disabled] β οΈ Dangerous
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Proxy MCP Server
Connect existing MCP Servers to the platform:
Via Web Interface:
- Navigate to the "Proxy Management" page
- Click "Add Server"
- Fill in server name, URL, and transport type
- Click "Sync Tools" β Tools automatically appear in the platform
Via API:
curl -X POST http://localhost:6080/api/proxy/servers \
-H "Content-Type: application/json" \
-d '{
"name": "filesystem-server",
"url": "http://localhost:3000/mcp",
"transport": "streamable-http"
}'
AI Code Generation
Generate MCP plugins through conversation:
# Start conversation
curl -X POST http://localhost:6080/api/codegen/chat \
-H "Content-Type: application/json" \
-d '{"message": "Help me create a stock query tool that supports real-time prices and historical trends"}'
# Preview generated code
curl http://localhost:6080/api/codegen/preview/{task_id}
# Install directly to platform
curl -X POST http://localhost:6080/api/codegen/install/{task_id}
Usage Statistics
View tool call information:
# Overall overview
curl http://localhost:6080/api/stats/overview
# Statistics by tool
curl http://localhost:6080/api/stats/tools
# Recent call records
curl http://localhost:6080/api/stats/recent?limit=100
Response example:
{
"total_calls": 1523,
"success_rate": 0.98,
"top_tools": [
{"name": "run_python_script", "calls": 456, "avg_duration_ms": 1234},
{"name": "run_cli_command", "calls": 312, "avg_duration_ms": 567}
]
}
π API Documentation
Module Management /api/modules
| Method | Path | Description |
|---|---|---|
| GET | /api/modules |
Get all module list |
| GET | /api/modules/scan |
Scan unloaded modules |
| POST | /api/modules/load |
Load module |
| POST | /api/modules/{name}/unload |
Unload module |
| POST | /api/modules/{name}/reload |
Reload module |
| POST | /api/modules/tool/enable |
Enable tool |
| POST | /api/modules/tool/disable |
Disable tool |
| POST | /api/modules/install |
Install ZIP plugin |
| GET | /api/modules/{name}/export |
Export module as ZIP |
| DELETE | /api/modules/{name} |
Delete external module |
Proxy Management /api/proxy
| Method | Path | Description |
|---|---|---|
| GET | /api/proxy/servers |
Get proxy server list |
| POST | /api/proxy/servers |
Add proxy server |
| PUT | /api/proxy/servers/{id} |
Update configuration |
| DELETE | /api/proxy/servers/{id} |
Delete server |
| POST | /api/proxy/servers/{id}/sync |
Sync tool list |
| POST | /api/proxy/servers/{id}/enable |
Enable server |
| POST | /api/proxy/servers/{id}/disable |
Disable server |
Statistics Query /api/stats
| Method | Path | Description |
|---|---|---|
| GET | /api/stats/overview |
Overall statistics overview |
| GET | /api/stats/modules |
Statistics by module |
| GET | /api/stats/tools |
Statistics by tool |
| GET | /api/stats/recent |
Recent call records |
AI Code Generation /api/codegen
| Method | Path | Description |
|---|---|---|
| POST | /api/codegen/chat |
Conversational code generation |
| POST | /api/codegen/chat/stream |
Streaming conversation |
| GET | /api/codegen/preview/{task_id} |
Preview generated code |
| POST | /api/codegen/install/{task_id} |
Install to platform |
| POST | /api/codegen/download/{task_id} |
Download ZIP |
π§© Development Guide
Creating Custom Modules
For detailed module development specifications, please refer to MCP_MODULE_DEV_GUIDE.md.
Quick Start:
my_module/
βββ __init__.py # Package marker
βββ MODULE_INFO # Module metadata
βββ my_module_mcp.py # MCP tool registration
βββ my_module_tool.py # Business logic
βββ requirements.txt # Optional dependencies
MODULE_INFO:
{
"display_name": "My Tool",
"version": "1.0.0",
"description": "Tool description",
"author": "Your Name"
}
my_module_mcp.py:
from mcp_service import mcp
from config_py.config import settings
from config_py.prompt import prompt_manager
from utils import com_utils
from utils.com_utils import get_mcp_exposed_url
TOOL_NAME = "my_tool"
@mcp.tool(
name=f'{settings.MCP_TOOL_NAME_PREFIX}{TOOL_NAME}',
description=f'MCP Server URL: {get_mcp_exposed_url()}. {prompt_manager.get(TOOL_NAME)}',
enabled=com_utils.get_tool_enable(TOOL_NAME),
)
def my_tool(param: str) -> dict:
"""Tool description"""
return {"success": True, "data": "result"}
Package & Share
# Package
zip -r my_module.zip my_module/
# Install
curl -X POST http://localhost:6080/api/modules/install \
-F "file=@my_module.zip"
ποΈ System Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Client (Claude / Cursor) β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β MCP Protocol (HTTP Streamable)
βΌ :6081
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Service (FastMCP)
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Middleware Layer
β β β’ RequestMCPMiddleware (logging/statistics)
β β β’ ToolDescriptionCheckerMiddleware (description hot update)
β β β’ ToolEnabledCheckerMiddleware (tool filtering)
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βββββββββββββββ βββββββββββββββ βββββββββββββββ
β β Built-in β β External β β Proxy β
β β Tools β β Plugins β β Tools β
β β tools/ β β external/ β β proxy/ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REST API (FastAPI) :6080 β
β /api/modules /api/stats /api/proxy /api/codegen /api/auth β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Web Frontend (Vue 3) β
β Module Management | Tool Control | Proxy Config | Statistics β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data Layer (SQLite) β
β Module Status | Tool Config | Call Statistics | Proxy Config β
β User Authentication β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Project Structure
MCPHub/
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ MCP_MODULE_DEV_GUIDE.md # Module development guide
βββ config/
β βββ config.json # Main configuration file
β βββ mcp_hub.db # SQLite database
βββ app/
βββ main.py # FastAPI entry point
βββ mcp_service.py # MCP service initialization
βββ my_mcp_middleware.py # MCP middleware
βββ config_py/ # Configuration management
βββ managers/ # Core managers
β βββ module_manager.py # Module lifecycle
β βββ proxy_manager.py # Proxy servers
β βββ stats_manager.py # Statistics management
βββ api/ # REST API
βββ tools/ # Built-in modules
β βββ t_autogui/ # GUI automation
β βββ t_cli/ # CLI commands
β βββ t_python/ # Python execution
β βββ ...
βββ tools_external/ # External plugins
βββ toolsmcp/ # MCP tool wrappers
βββ web/ # Vue 3 frontend
βοΈ Configuration
Main configuration file: config/config.json
{
"api": {
"title": "MCPHub Service",
"version": "1.0.0"
},
"server": {
"host": "0.0.0.0",
"port": 6080
},
"mcp": {
"service_name": "mcphub",
"host": "0.0.0.0",
"port": 6081,
"path": "/mcp",
"tool_name_prefix": "",
"module_enable": [
{
"enable": true,
"module_name": "tools.t_cli.cli_mcp",
"disable_tool": [],
"config": {}
}
]
},
"database": {
"db_path": "./config/mcp_hub.db"
},
"auth": {
"secret_key": "your-secret-key",
"token_expire_hours": 24
}
}
| Configuration | Description |
|---|---|
mcp.tool_name_prefix |
Tool name prefix for distinguishing multi-instance deployments |
mcp.module_enable |
List of modules to auto-load on startup |
module_enable[].disable_tool |
List of disabled tool names in the module |
module_enable[].config |
Custom configuration passed to the module |
π€ Contributing
Contributions, bug reports, and suggestions are welcome!
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Create a Pull Request
π License
This project is licensed under the MIT License.
π Acknowledgments
- FastMCP - Framework for quickly building MCP Servers
- MCP Protocol - Model Context Protocol specification
- FastAPI - Modern high-performance Python web framework
<p align="center"> <strong>Empower AI Agents with Infinite Possibilities π</strong> </p>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.