About MCP Server Proxy
MCP Server Proxy connects to multiple MCP servers and presents their tools through one interface. It supports named configuration profiles, server-prefixed tool names, and stdio or SSE operation.
Key features
- 01Connect to multiple MCP servers
- 02Manage configuration profiles
- 03Prefix tools with server names
- 04Run in stdio or SSE mode
- 05Configure SSE host and port
Use cases
- 01Combine tools from several MCP servers
- 02Switch between developer and personal configurations
- 03Expose aggregated tools over SSE
- 04Separate same-named tools by server
MCP support
The proxy connects to multiple MCP servers and exposes their tools through a unified MCP interface. It can run in stdio or SSE mode and selects server configurations by profile.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP Server Proxy
A proxy server that connects to multiple MCP servers and provides a unified interface for tool access.
Features
- Connect to multiple MCP servers simultaneously
- Support for multiple configuration profiles
- Tool name prefixing with server names
- Run in either stdio or SSE mode
- Profile-based configuration management
Configuration
Create configuration files for each profile in the format config.<profile>.json. For example:
// config.developer.json
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
// config.personal.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/mirilale/Desktop"
]
}
}
}
Installation
npm install
Usage
Command Line Options
The server can be started with various command-line options:
# Start with default settings
node dist/server.js
# Start with a specific profile
node dist/server.js --profile developer
# or
node dist/server.js -p developer
# Start in SSE mode
node dist/server.js --mode sse
# or
node dist/server.js -m sse
# Start in SSE mode with custom port and host
node dist/server.js --mode sse --port 8080 --host 0.0.0.0
# Combine options
node dist/server.js --profile developer --mode sse --port 8080
Available options:
-p, --profile <name>: Specify which profile to use (defaults to "default")-m, --mode <mode>: Choose between "stdio" or "sse" mode (defaults to "stdio")--port <number>: Set the port for SSE mode (defaults to 3000)--host <host>: Set the host for SSE mode (defaults to "localhost")
Get help:
node dist/server.js --help
Tool Naming Convention
Tools are prefixed with their server name. For example:
- A tool named
read_filefrom thefilesystemserver becomesfilesystem_read_file - A tool named
get_podsfrom thekubernetesserver becomeskubernetes_get_pods
SSE Mode Endpoints
When running in SSE mode, the server exposes the following endpoints:
GET /sse: Establishes an SSE connectionPOST /messages: Handles tool requests (requiressessionIdquery parameter)
Example SSE client usage:
const eventSource = new EventSource("http://localhost:3000/sse");
eventSource.onmessage = (event) => {
console.log("Received:", event.data);
};
Error Handling
The server provides detailed error messages including:
- Profile loading errors
- Server connection failures
- Tool not found errors
- Server disconnection errors
All errors include the current profile name for better context.
Development
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev:stdio:developer
# or
npm run dev:sse:developer
# Run with mpc inspector
npm run inspect
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.