An MCP proxy server that aggregates and serves multiple MCP resource servers through a single HTTP server.
An MCP proxy server that aggregates and serves multiple MCP resource servers through a single HTTP server.
stdio
and sse
) with customizable settings.git clone https://github.com/TBXark/mcp-proxy.git
cd mcp-proxy
go build -o mcp-proxy main.go
./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 8080:8080 -v /path/to/config.json:/config/config.json ghcr.io/tbxark/mcp-proxy:latest
The server is configured using a JSON file. Below is an example configuration:
{
"server": {
"baseURL": "http://localhost:8080",
"addr": ":8080",
"name": "MCP Proxy",
"version": "1.0.0"
},
"clients": {
"fetch": {
"type": "stdio",
"config": {
"command": "uvx",
"env": {},
"args": ["mcp-server-fetch"]
}
},
"amap": {
"type": "sse",
"config": {
"url": "https://router.mcp.so/sse/xxxxx"
}
}
}
}
Server Configuration:
baseURL
: The base URL for the SSE server.addr
: The address the server listens on.name
: The name of the server.version
: The version of the server.Clients Configuration:
type
: The type of the client (stdio
or sse
).config
: The specific configuration for the client type.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
http://localhost:8880/fetch/sse
).clients
such as fetch
to a random string, and then access it via /random-string/sse
.This project was inspired by the adamwattis/mcp-proxy-server project
This project is licensed under the MIT License. See the LICENSE file for details.