Odel
mcp gateway

mcp gateway

Local
@mcpratingTypeScriptMITUpdated 1w ago

Discover, judge and safely run any MCP server: 57k+ scored servers, sandboxed.

@mcp-rating/gateway

MCP Gateway is a meta-MCP server that auto-discovers, connects, and proxies other MCP servers. Add one line to your AI desktop client config and get dynamic access to the entire MCP ecosystem.

How It Works

┌────────────────────┐       ┌──────────────┐       ┌──────────────────┐
│  Claude Desktop /  │ stdio │              │ stdio  │ MCP Server A     │
│  Cursor / Windsurf │◄─────►│  MCP Gateway │◄──────►│ (e.g. filesystem)│
│  (host client)     │       │              │◄──┐    └──────────────────┘
└────────────────────┘       └──────────────┘   │    ┌──────────────────┐
                                    │           └───►│ MCP Server B     │
                                    ▼                │ (e.g. github)    │
                             ┌──────────────┐        └──────────────────┘
                             │ MCP-Rating   │
                             │ Registry API │
                             └──────────────┘

Instead of manually configuring each MCP server in your client, the Gateway:

  1. Discovers servers via the MCP-Rating registry
  2. Connects to them on-demand (spawns as child processes)
  3. Proxies their tools through namespaced names (servername__toolname)
  4. Notifies your client when tools are added/removed

Quick Start

With Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "gateway": {
      "command": "npx",
      "args": ["-y", "@mcp-rating/gateway"]
    }
  }
}

Then ask Claude:

  • "Search for MCP servers that work with databases" (uses mcp_discover)
  • "Connect to the sqlite server" (uses mcp_connect)
  • "Query my database" (calls the proxied tool directly)

With Any MCP Client

{
  "command": "npx",
  "args": ["-y", "@mcp-rating/gateway"]
}

Meta-Tools

The gateway exposes 5 built-in tools:

ToolDescription
mcp_discoverSearch the MCP-Rating registry for servers
mcp_connectConnect to a server (by slug or explicit command)
mcp_disconnectDisconnect a server and remove its tools
mcp_list_activeList all connected servers
mcp_server_infoGet detailed info about a server

Trust Tiers

Every connected server is labeled with a trust tier based on its MCP-Rating quality score:

  • [Verified] — High quality + officially verified
  • [Trusted] — Good quality with repository and install command
  • [Community] — Listed in registry with basic quality
  • [Unverified] — Unknown origin (manually connected)

Configuration

The gateway reads config from ~/.mcp-gateway/config.json:

{
  "registryApiUrl": "https://mcp-rating.example.com/api/v1",
  "proxyTimeoutMs": 30000,
  "maxConnections": 10,
  "logLevel": "info"
}

Environment Variables

VariableDescriptionDefault
MCP_GATEWAY_REGISTRY_URLMCP-Rating API base URLhttps://mcprating.io/api/v1
MCP_GATEWAY_TIMEOUTProxy timeout (ms)30000
MCP_GATEWAY_MAX_CONNECTIONSMax simultaneous connections10
MCP_GATEWAY_LOG_LEVELLog level (debug/info/warn/error)info

Development

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

# Type check
pnpm typecheck

# Build
pnpm build

Architecture

The gateway is built on the MCP SDK and uses:

  • StdioServerTransport — communicates with the host client
  • StdioClientTransport — spawns and communicates with downstream servers
  • Dynamic tool registrationMcpServer.registerTool() + sendToolListChanged()
  • Tool namespacingslug__toolname pattern prevents collisions
  • Passthrough Zod schemas — preserves parameter names for host client UI while letting downstream servers validate

License

ISC