mcp-proxy
A thin MCP proxy. It allows clients to connect MCP servers via HTTP without streaming transport.
It enables to put it on a simple infrastructure.
How to install
go install github.com/ubie-oss/mcp-proxy
How to use
Prepare your mcp config file
Create a config file. The format is similar to Claude's. $VARNAME
will be replaced with environment variables. It supports both json
and yaml
.
{
"mcpServers": {
"server1": {
"command": "npx",
"args": ["module1"],
"env": {
"VAR1": "$SERVER1_VAR1",
"VAR2": "$SERVER1_VAR2"
}
},
"server2": {
"command": "npx",
"args": ["module2"],
"env": {
"VAR1": "$SERVER2_VAR1",
"VAR2": "$SERVER2_VAR2"
},
"_extensions": {
"tools": {
"allow": [
"tool1",
"tool2"
],
"deny": [
"tool11",
"tool12"
]
}
}
}
}
}
mcpServers:
server1:
command: "npx"
args:
- "module1"
env:
VAR1: $SERVER1_VAR1
VAR2: $SERVER1_VAR2
server2:
command: "npx"
args:
- "module2"
env:
VAR1: $SERVER2_VAR1
VAR2: $SERVER2_VAR2
_extensions:
tools:
allow:
- tool1
- tool2
deny:
- tool11
- tool12
You can control which tools are available to each MCP server using the _extensions.tools
configuration:
allow
: Only tools listed here will be allowed. If this list is empty or not specified, all tools are allowed (unless denied).
deny
: Tools listed here will be blocked, even if they are in the allow list.
When both allow
and deny
lists are specified, the deny list takes precedence. That is, tools in the deny list will be blocked even if they also appear in the allow list.
Run mcp-proxy with the config
go run . -config config.json -port 9090