A Python MCP server gateway for Claude Desktop, Claude Code, Cline and Roo. Instead of loading all MCP tools at startup, it loads them on demand.
Works with: Claude Desktop (app), Claude Code (terminal), Cline and Roo (VSCode extensions)
| Platform | Config File | Supported |
|---|---|---|
| Claude Desktop | claude_desktop_config.json |
Yes |
| Claude Code | .claude.json or .mcp.json |
Yes |
| Cline (VSCode) | cline_mcp_settings.json |
Yes |
When you connect multiple MCP servers to Claude:
- GitHub MCP server: 51 tools
- Slack MCP server: 20 tools
- Google Drive MCP: 15 tools
- Filesystem MCP: 12 tools
That's 100+ MCP tool definitions loaded before you even start. Each tool's JSON schema eats up tokens.
The gateway acts as a single MCP server with 3 tools:
list_available_mcps- shows configured MCP serversload_mcp_tools- loads tools from a specific MCP servercall_mcp_tool- executes the tool
Model Context Protocol servers only start when Claude actually needs them.
- Python 3.11+ (for MCP Python SDK)
- Claude Desktop, Claude Code, or Cline/Roo
- MCP servers you want to use
git clone https://github.com/bzsasson/claude-mcp-server-gateway.git
cd claude-mcp-server-gateway
python3.11 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install mcp python-dotenvcp .env.example .env
# Edit .env with your tokensAdd to your Claude Desktop config:
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"gateway": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/claude-mcp-server-gateway/dcl_wrapper.py"]
}
}
}Restart Claude Desktop.
Claude Code MCP server setup uses a similar config with one additional field.
Edit ~/.claude.json:
{
"mcpServers": {
"gateway": {
"type": "stdio",
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/claude-mcp-server-gateway/dcl_wrapper.py"]
}
}
}For project-specific MCP servers, create .mcp.json in your project root:
{
"mcpServers": {
"gateway": {
"type": "stdio",
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/claude-mcp-server-gateway/dcl_wrapper.py"]
}
}
}Claude Code will prompt for approval when using project-scoped servers.
# Add the gateway using CLI
claude mcp add gateway --scope user \
--command /path/to/.venv/bin/python \
-- /path/to/claude-mcp-server-gateway/dcl_wrapper.py
# Verify it's added
claude mcp listFor Cline and Roo (VSCode extensions), the MCP server gateway configuration goes in:
Mac: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Windows: %APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
"mcpServers": {
"gateway": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/claude-mcp-server-gateway/dcl_wrapper.py"],
"disabled": false
}
}
}Restart VSCode after updating.
- Claude starts - sees gateway (3 tools)
- You ask about GitHub - Claude calls
list_available_mcps - Claude sees GitHub available - calls
load_mcp_tools("github") - Gateway returns GitHub's tool list
- Claude picks the right tool - calls
call_mcp_tool("github", "search_repositories", {...}) - Gateway spins up GitHub MCP, runs the tool, returns results
Edit dcl_wrapper.py and add to the MCP_SERVERS dict:
MCP_SERVERS = {
"your-server": {
"command": "npx",
"args": ["-y", "your-mcp-package"],
"env": {
"API_KEY": os.getenv("YOUR_API_KEY", "")
},
"description": "What it does"
}
}- github
- slack
- google-drive
- filesystem
- postgres
- memory
- brave-search
(Check dcl_wrapper.py for the full list)
- Small delay on first tool use (server startup)
- Each MCP server connection is temporary
- No persistence between calls
- Check Python path in config points to virtual environment
- Verify
dcl_wrapper.pypath is correct - Restart Claude Desktop/Code/VSCode completely
- Check API keys in
.envfile - Verify MCP server package is installed
- Check gateway logs for errors
- Make sure to include
"type": "stdio"in config - For project configs, approve when prompted
- Use
claude mcp listto verify installation
dcl_wrapper.py- The gateway server.env- Your API keysrequirements.txt- Python dependencies
MIT