A MindsDB-powered, all-in-one Model Context Protocol (MCP) server hub that provides unified access to 25+ services through a single endpoint. Connect once, access everything from any IDE or platform.
┌─────────────────────────────────────────────────────────────┐
│ MCP Unified Gateway │
│ http://localhost:3100 │
│ │
│ Single endpoint for all MCP capabilities │
│ • Notion • MongoDB • PostgreSQL • Neon • Redis │
│ • Stripe • Playwright • Apify • AWS • Kubernetes │
│ • Discord • Google Maps • Hugging Face • LinkedIn │
│ • Reddit • Obsidian • Postman • Heroku • Docker │
│ • Filesystem • Memory • LLM Text • Markdownify │
│ • Handwriting OCR • Sequential Thinking • And more... │
└───────────────────┬─────────────────────────────────────────┘
│
┌───────────┴───────────┐
│ │
┌───────▼────────┐ ┌────────▼────────┐
│ MindsDB │ │ Databases │
│ (AI/ML Core) │ │ • PostgreSQL │
│ Port: 47334 │ │ • MongoDB │
└────────────────┘ │ • Redis │
└─────────────────┘
- Single Unified Endpoint: One gateway (
http://localhost:3100) for all MCP services - MindsDB Integration: Leverage MindsDB's AI/ML capabilities across all data sources
- 25+ Service Integrations: Access databases, APIs, AI models, and tools
- Multi-IDE Support: Connect from Claude Code, VSCode, Cursor, or any MCP-compatible platform
- Docker-Based: Fully containerized, portable, and easy to deploy
- HTTP Transport: Simple HTTP-based MCP protocol (no stdio complexity)
- Monitoring: Built-in Prometheus metrics for observability
- Docker Desktop installed and running
- At least 4GB RAM allocated to Docker
- API keys for services you want to use (optional, configured per service)
-
Clone or navigate to the MCP Hub directory:
cd C:\Users\momo-\mcp-hub
-
Configure environment variables:
# Windows copy .env.template .env notepad .env # Linux/Mac cp .env.template .env nano .env
-
Start the MCP Hub:
# Windows start.bat # Linux/Mac chmod +x start.sh ./start.sh
-
Verify it's running:
# Check health curl http://localhost:3100/health # List available tools curl http://localhost:3100/tools
Add to your Claude Code configuration:
claude mcp add --transport http mcp-hub http://localhost:3100/mcpOr manually add to .mcp.json:
{
"mcpServers": {
"mcp-unified-hub": {
"transport": "http",
"url": "http://localhost:3100/mcp",
"description": "Unified access to all MCP services"
}
}
}Add to your settings.json:
{
"mcp.servers": {
"unified-hub": {
"type": "http",
"url": "http://localhost:3100/mcp"
}
}
}Configuration in Cline settings:
{
"mcpServers": {
"mcp-hub": {
"command": "node",
"args": ["-e", "require('http').get('http://localhost:3100/mcp')"],
"env": {}
}
}
}Replace localhost with your server's IP address:
claude mcp add --transport http mcp-hub http://YOUR_SERVER_IP:3100/mcp- PostgreSQL - Relational database operations
- MongoDB - Document database operations
- Neon - Serverless Postgres
- Redis - Cache and pub/sub operations
- MindsDB - AI/ML queries and predictions
- Hugging Face - Access to HF models
- LLM Text - Text processing with various LLMs
- Notion - Workspace management
- Obsidian - Note-taking and PKM
- Discord - Bot operations and messaging
- LinkedIn - Professional networking
- Reddit - Social media integration
- GitHub - Repository management
- Postman - API testing and collections
- Docker - Container management
- Kubernetes - Cluster operations
- AWS - S3, Lambda, DynamoDB, and more
- Heroku - App deployment and management
- Playwright - Browser automation
- Apify - Web scraping
- ExecuteAutomation Playwright - Advanced browser testing
- Stripe - Payment processing
- Google Maps - Maps and geolocation
- Handwriting OCR - Text extraction from images
- Filesystem - File operations
- Memory - Persistent context storage
- Markdownify - HTML to Markdown conversion
- Sequential Thinking - Reasoning and logic chains
curl -X POST http://localhost:3100/execute \
-H "Content-Type: application/json" \
-d '{
"handler": "notion",
"tool": "search",
"params": {
"query": "project notes"
}
}'curl -X POST http://localhost:3100/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "notion.search",
"params": {
"query": "project notes"
},
"id": 1
}'curl -X POST http://localhost:3100/mindsdb/api/sql/query \
-H "Content-Type: application/json" \
-d '{
"query": "SELECT * FROM my_model WHERE input='\''analyze this'\''"
}'# Start the hub
start.bat # Windows
./start.sh # Linux/Mac
# Stop the hub
stop.bat # Windows
./stop.sh # Linux/Mac
# Check status
status.bat # Windows
docker-compose ps # Linux/Mac
# View logs
docker-compose logs -f
# View specific service logs
docker-compose logs -f mcp-gateway
docker-compose logs -f mindsdb-core
# Restart services
docker-compose restart
# Rebuild after code changes
docker-compose up -d --build| Service | Port | URL |
|---|---|---|
| MCP Gateway | 3100 | http://localhost:3100 |
| MindsDB HTTP | 47334 | http://localhost:47334 |
| MindsDB MySQL | 47335 | localhost:47335 |
| PostgreSQL | 5432 | localhost:5432 |
| MongoDB | 27017 | localhost:27017 |
| Redis | 6379 | localhost:6379 |
| Prometheus | 9090 | http://localhost:9090 |
-
Create a new handler file:
cd gateway/handlers # Copy the template cp base.js mynewservice.js
-
Implement your handler (see
handlers/README.mdfor template) -
Register in
gateway/server.js:const MyNewServiceHandler = require('./handlers/mynewservice'); // ... handlers.set('mynewservice', new MyNewServiceHandler());
-
Add required environment variables to
.env.template -
Rebuild:
docker-compose up -d --build
# Check if port 3100 is already in use
netstat -ano | findstr :3100 # Windows
lsof -i :3100 # Linux/Mac
# Check Docker logs
docker-compose logs mcp-gateway# Verify environment variables
docker-compose exec mcp-gateway env | grep API_KEY
# Check handler initialization
docker-compose logs mcp-gateway | grep "initialized"# Test MindsDB directly
curl http://localhost:47334/api/status
# Check MindsDB logs
docker-compose logs mindsdb-core- Never commit
.envfile - It contains API keys - Use strong passwords for database services
- Restrict port access in production environments
- Use HTTPS when exposing to the internet
- Rotate API keys regularly
- Allocate at least 4GB RAM to Docker
- Use Redis for caching frequently accessed data
- Monitor with Prometheus at
http://localhost:9090 - Scale individual services as needed:
docker-compose up -d --scale mcp-gateway=3
# Backup data volumes
docker-compose down
docker run --rm -v mcp-postgres-data:/data -v $(pwd):/backup alpine tar czf /backup/postgres-backup.tar.gz /data
# Restore
docker run --rm -v mcp-postgres-data:/data -v $(pwd):/backup alpine tar xzf /backup/postgres-backup.tar.gzTo add a new service integration:
- Create handler in
gateway/handlers/ - Add configuration to
.env.template - Update
docker-compose.ymlif new containers needed - Update this README
- Test thoroughly
- Submit PR
MIT License - See LICENSE file for details
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
MCP Unified Hub - Your one-stop solution for MCP integrations