Skip to content

ubie-oss/mcp-proxy

Repository files navigation

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

Tool filtering with allow/deny lists

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