MCP Simple Gateway logo

MCP Simple Gateway

by denwakeup

MCP Simple Gateway is a proxy server for Model Context Protocol (MCP) that allows you to aggregate and manage multiple MCP servers through a single interface. It simplifies the management of multiple MCP servers by providing a unified access point.

View on GitHub

Last updated: N/A

MCP Simple Gateway

MCP Simple Gateway is a proxy server for Model Context Protocol (MCP) that allows you to aggregate and manage multiple MCP servers through a single interface.

Key Features

  • 🚀 Aggregation of multiple MCP servers
  • 🔒 Token-based authentication support
  • 📝 Flexible JSON-based configuration
  • 🐳 Docker support
  • 🔌 SSE, stdio and StreamableHTTP MCP supported

Usage

Running via CLI

npx mcp-simple-gateway --config config.json

Running via Docker Compose

Example docker-compose.yml:

services:
  mcp-gateway:
    platform: linux/amd64 # For Apple Silicon Users
    image: ghcr.io/denwakeup/mcp-simple-gateway:latest
    volumes:
      - ./config.json:/app/config.json
    ports:
      - '3000:3000'
    environment:
      - CONFIG_PATH=/app/config.json

Configuration

Example configuration file (config.json):

{
  "proxyServer": {
    "logLevel": "debug",
    "logPretty": true,
    "authTokens": ["your-auth-token"],
    "cors": {
      "origin": true
    }
  },
  "mcpServers": {
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time", "--local-timezone=Europe/Moscow"],
      "proxyOptions": {
        "authTokens": ["server-specific-token"]
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/app/files"]
    },
    "echo": {
      "type": "streamableHttp",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Configuration Parameters

  • proxyServer.options:

    • logLevel: Logging level (debug, info, warn, error)
    • logPretty: Log formatting
    • authTokens: Array of authentication tokens (used as default for all servers)
    • cors: CORS configuration options (optional)
  • mcpServers: MCP servers configuration

    • [serverName]:
      • command: Command to start the server (for stdio servers)
      • args: Command arguments (for stdio servers)
      • url: URL of the server (for SSE and StreamableHTTP servers)
      • type: Server type (optional for stdio and SSE, required for StreamableHTTP)
      • proxyOptions: Proxy options for a specific server
        • authTokens: Array of authentication tokens (overrides proxyServer.options.authTokens for the specific server)

Based on the configuration above, the URLs for accessing MCP servers will be as follows:

http://localhost:3000/time/sse
http://localhost:3000/filesystem/sse
http://localhost:3000/echo/sse
  • localhost:3000 - proxy server address and port (default)
  • /time/sse, /filesystem/sse, and /echo/sse - paths to corresponding MCP servers that match the keys in the mcpServers configuration

Roadmap

  • [x] CORS support
  • [x] Streamable HTTP support

License

MIT