GitHub - adamwattis/mcp-proxy-server: An MCP proxy server that aggregates and serves multiple MCP resource servers through a single interface (original) (raw)

MCP Proxy Server

An MCP proxy server that aggregates and serves multiple MCP resource servers through a single interface. This server acts as a central hub that can:

Features

Resource Management

Tool Aggregation

Prompt Handling

Configuration

The server requires a JSON configuration file that specifies the MCP servers to connect to. Copy the example config and modify it for your needs:

cp config.example.json config.json

Example config structure:

{ "servers": [ { "name": "Server 1", "transport": { "command": "/path/to/server1/build/index.js" } }, { "name": "Server 2", "transport": { "command": "server2-command", "args": ["--option1", "value1"], "env": ["SECRET_API_KEY"] } }, { "name": "Example Server 3", "transport": { "type": "sse", "url": "http://localhost:8080/sse" } } ] }

The config file must be provided when running the server:

MCP_CONFIG_PATH=./config.json mcp-proxy-server

Development

Install dependencies:

Build the server:

For development with auto-rebuild:

For development with continuous run:

Stdio

npm run dev

SSE

npm run dev:sse

Installation

To use with Claude Desktop, add the server config:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.jsonOn Windows: %APPDATA%/Claude/claude_desktop_config.json

{ "mcpServers": { "mcp-proxy": { "command": "/path/to/mcp-proxy-server/build/index.js", "env": { "MCP_CONFIG_PATH": "/absolute/path/to/your/config.json", "KEEP_SERVER_OPEN": "1" } } } }

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:

The Inspector will provide a URL to access debugging tools in your browser.