MCP Manager

PythonYAMLCLIuv

A centralized Model Context Protocol server management and routing system built before Docker MCP Toolkit existed as an official solution. Manages multiple MCP servers through a single interface with fine-grained per-client access control.

Features

  • Centralized Management: Manage multiple MCP servers from a single YAML config
  • Access Control: Rule-based allow/deny permissions per client (VSCode, Claude Desktop, etc.)
  • Auto-Installation: Automatic discovery and installation from NPM, GitHub, or local sources
  • Hot Reload: Configuration changes without service restart
  • Health Monitoring: Automatic health checks and server restart
  • Request Routing: Intelligent routing to appropriate backend servers
  • Response Caching: Configurable TTL for performance
  • CLI: Full command-line interface for management operations

Quick Start

uv sync
cp mcp-manager.example.yaml mcp-manager.yaml
# edit mcp-manager.yaml
mcp-manager start --config mcp-manager.yaml

Connect your MCP clients (VSCode, Claude Desktop, etc.) to the manager instead of individual servers.

Configuration

manager:
  name: "central-mcp-manager"
  log_level: "info"

servers:
  weather:
    source: "npm:@weather/mcp-weather"
    transport: "stdio"
    auto_install: true

  filesystem:
    source: "github:anthropics/mcp-filesystem"
    transport: "stdio"
    config:
      allowed_paths: ["/home/user/documents"]

clients:
  vscode:
    identify_by:
      - client_info.name: "vscode-mcp"
    allow:
      - server: "filesystem"
        tools: ["read_file", "write_file"]
    deny:
      - server: "weather"

  claude_desktop:
    identify_by:
      - client_info.name: "claude-desktop"
    allow:
      - server: "weather"
        tools: ["get_weather"]
      - server: "filesystem"
        tools: ["read_file"]

Client Integration

VSCode

{
  "mcp.servers": {
    "manager": {
      "command": "python",
      "args": ["/path/to/MCP-manager/main.py", "/path/to/mcp-manager.yaml"],
      "transport": "stdio"
    }
  }
}