An MCP proxy server that aggregates and serves multiple MCP resource servers through a single HTTP server.
- Proxy Multiple MCP Clients: Connects to multiple MCP resource servers and aggregates their tools and capabilities.
- SSE Support: Provides an SSE (Server-Sent Events) server for real-time updates.
- Flexible Configuration: Supports multiple client types (
stdio
,sse
orstreamable-http
) with customizable settings.
git clone https://github.com/TBXark/mcp-proxy.git
cd mcp-proxy
make build
./build/mcp-proxy --config path/to/config.json
go install github.com/TBXark/mcp-proxy@latest
The Docker image supports two MCP calling methods by default:
npx
anduvx
.
docker run -d -p 9090:9090 -v /path/to/config.json:/config/config.json ghcr.io/tbxark/mcp-proxy:latest
# or
docker run -d -p 9090:9090 ghcr.io/tbxark/mcp-proxy:latest --config https://example.com/path/to/config.json
The server is configured using a JSON file. Below is an example configuration:
This is the format for the new version's configuration. The old version's configuration will be automatically converted to the new format's configuration when it is loaded.
You can use
https://tbxark.github.io/mcp-proxy
to convert the configuration ofmcp-proxy
into the configuration thatClaude
can use.
Common options for mcpProxy
and mcpServers
.
panicIfInvalid
: If true, the server will panic if the client is invalid.logEnabled
: If true, the server will log the client's requests.authTokens
: A list of authentication tokens for the client. TheAuthorization
header will be checked against this list.
In the new configuration, the
authTokens
ofmcpProxy
is not a global authentication token, but rather the default authentication token formcpProxy
. WhenauthTokens
is set inmcpServers
, the value ofauthTokens
inmcpServers
will be used instead of the value inmcpProxy
. In other words, theauthTokens
ofmcpProxy
serves as a default value and is only applied whenauthTokens
is not set inmcpServers
. Other fields are the same.
Proxy HTTP server configuration
baseURL
: The public accessible URL of the server. This is used to generate the URLs for the clients.addr
: The address the server listens on.name
: The name of the server.version
: The version of the server.options
: Default options for themcpServers
.
MCP server configuration, Adopt the same configuration format as other MCP Clients.
transportType
: The transport type of the MCP client. Except forstreamable-http
, which requires manual configuration, the rest will be automatically configured according to the content of the configuration file.stdio
: The MCP client is a command line tool that is run in a subprocess.sse
: The MCP client is a server that supports SSE (Server-Sent Events).streamable-http
: The MCP client is a server that supports HTTP streaming.
For stdio mcp servers, the command
field is required.
command
: The command to run the MCP client.args
: The arguments to pass to the command.env
: The environment variables to set for the command.options
: Options specific to the client.
For sse mcp servers, the url
field is required. When the current url
exists, sse
will be automatically configured.
url
: The URL of the MCP client.headers
: The headers to send with the request to the MCP client.
For http streaming mcp servers, the url
field is required. and transportType
need to manually set to streamable-http
.
url
: The URL of the MCP client.headers
: The headers to send with the request to the MCP client.timeout
: The timeout for the request to the MCP client.
Usage of mcp-proxy:
-config string
path to config file or a http(s) url (default "config.json")
-help
print help and exit
-version
print version and exit
- The server will start and aggregate the tools and capabilities of the configured MCP clients.
- You can access the server at
http(s)://{baseURL}/{clientName}/sse
. (e.g.,https://mcp.example.com/fetch/sse
, based on the example configuration) - If your MCP client does not support custom request headers., you can change the key in
clients
such asfetch
tofetch/{authToken}
, and then access it viafetch/{authToken}
.
- This project was inspired by the adamwattis/mcp-proxy-server project
- If you have any questions about deployment, you can refer to 《在 Docker 沙箱中运行 MCP Server》(@ccbikai)
This project is licensed under the MIT License. See the LICENSE file for details.