Unified MCP gateway server that aggregates multiple backend providers into a single connection point for AI assistants.
startmcp is an MCP gateway server that connects AI assistants (like Claude) to multiple data sources through a single, unified interface.
AI assistants need to connect to multiple MCP servers (Atlassian, GitHub, databases, etc.), requiring separate configurations for each provider.
startmcp acts as a gateway that aggregates all your providers into one MCP server:
Before (Multiple Connections): After (Single Gateway):
βββββββββββββββ βββββββββββββββ
β AI Assistantβ β AI Assistantβ
ββββββββ¬βββββββ ββββββββ¬βββββββ
β β
βββββ΄ββββ¬ββββββββ¬ββββββββ β
β β β β β
ββββΌββ βββΌβββ βββΌβββ βββΌβββ βββββΌβββββββββ
βAtl.β βGH β β DB β β etcβ β startmcp β
βMCP β βMCP β βMCP β βMCP β β Gateway β
ββββββ ββββββ ββββββ ββββββ ββββββ¬ββββββββ
β
βββββββββββΌβββββββββ¬ββββββ
β β β β
ββββΌββ ββββΌβββ ββββΌββ βββΌβββ
βAtl.β β GH β β DB β βetc β
βMCP β β MCP β βMCP β βMCP β
ββββββ βββββββ ββββββ ββββββ
- π― Single MCP Server - One connection for all your providers
- π Smart Routing - Tools route to the correct backend automatically
- π·οΈ Hybrid Namespacing - Natural names when unique, prefixed only on conflicts
- π OAuth 2.1 Support - Browser-based authentication
- π§ Interactive Wizard - Beautiful CLI setup experience
- π¦ Plugin Architecture - Easy to add custom providers
- β‘ Near-Native Performance - Minimal routing overhead (~5ms)
# Clone the repository
git clone https://github.com/yourusername/startmcp.git
cd startmcp
# Install with pip
pip install -e .
# Verify installation
mcp --helpRun the interactive wizard:
mcp initThe wizard will:
- Show available providers by category
- Guide you through authentication (browser opens for OAuth)
- Verify the connection works
- Save configuration to
config.yaml
mcp serve --stdioThe gateway will:
- Load your
config.yaml - Connect to all enabled providers
- Aggregate tools from each provider
- Start the stdio MCP server
- Listen for requests from your AI assistant
For Claude Desktop, add to ~/.config/claude/config.json:
{
"mcpServers": {
"startmcp": {
"command": "mcp",
"args": ["serve", "--stdio"]
}
}
}Restart Claude Desktop, and you'll have access to all your providers' tools!
startmcp implements a gateway pattern for MCP:
- Tool Aggregation - Collects tools from all providers
- Conflict Detection - Identifies tool name collisions
- Hybrid Namespacing - Keeps natural names when possible:
search_issuesβ Routes to Atlassian (unique name)create_prβ Routes to GitHub (unique name)atlassian:list_projectsβ Explicit routing (conflict with GitHub)github:list_projectsβ Explicit routing (conflict with Atlassian)
- Smart Routing - Directs each tool call to the correct provider
- Helpful Errors - Suggests correct tool names on ambiguity
See Architecture Overview for details.
- Atlassian Suite - Jira, Confluence, Compass (OAuth via mcp-remote)
- GitHub - Repositories, issues, PRs
- GitLab - Projects, merge requests
- PostgreSQL - Database queries
- MongoDB - Document operations
- And more...
# Interactive setup wizard
mcp init
# List all available providers
mcp providers list
# List only enabled providers
mcp providers list --enabled
# Start the gateway server
mcp serve --stdio
# Reconfigure setup
mcp init --reconfigurestartmcp/
βββ mcp/ # Core framework
β βββ protocol.py # MCP protocol models
β βββ client.py # MCP client
β βββ provider.py # Provider base class
β βββ transport/ # SSE and stdio transports
β βββ server/ # MCP server implementation
β βββ gateway.py # Gateway orchestrator
β βββ aggregator.py # Tool aggregation
β βββ router.py # Tool/resource routing
β βββ conflict_resolver.py # Conflict detection
β βββ registry.py # Provider discovery
β βββ cli/ # CLI and wizard
βββ provider_mcps/ # Provider implementations
β βββ enterprise/ # Atlassian, etc.
β βββ dev_tools/ # GitHub, GitLab, etc.
β βββ data/ # Databases
β βββ cloud/ # AWS, GCP, Azure
β βββ web/ # Web services
βββ tests/ # Unit and integration tests
βββ docs/ # Documentation
βββ config.yaml # Your configuration
After running mcp init, your config.yaml will look like:
enabled_providers:
- atlassian
logging:
level: INFO
format: json
timeouts:
connection: 30
request: 60Provider-specific settings can be added:
atlassian:
default_project: "PROJ"
cloud_id: "your-cloud-id"Create a new provider by extending MCPProvider:
# provider_mcps/custom/my_provider/provider.py
from mcp.provider import MCPProvider
from mcp.categories import ProviderCategory
class MyProvider(MCPProvider):
name = "my_provider"
display_name = "My Custom Provider"
category = ProviderCategory.CUSTOM
transport_type = "sse" # or "stdio"
async def create_transport(self):
# Return configured transport
passSee Creating Providers Guide for details.
- Getting Started
- Architecture
- Guides
- Reference
- Project Background
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
See CHANGELOG.md for version history and release notes.
MIT License - see LICENSE for details.
- Built on the Model Context Protocol specification
- Atlassian provider uses mcp-remote
- Inspired by the need for unified AI-to-data integration
Made with β€οΈ for the AI engineering community