Skip to main content
Glama

Universal MCP Gateway

One local MCP entry point for multiple coding agents. It proxies configured upstream MCP tools, keeps upstream sessions warm, serializes calls for exclusive services, reports process resources, and exposes small SQLite-backed task, lock, and memory tools.

Quick start

python -m pip install -e '.[dev]'
cp config.example.toml config.toml
mcp-gateway serve --config config.toml

Connect an MCP client to:

http://127.0.0.1:8000/mcp

Clients that only support stdio can run one gateway bridge process:

{
  "command": "mcp-gateway",
  "args": ["serve", "--config", "/absolute/path/config.toml", "--transport", "stdio"]
}

Related MCP server: Green MCP Toolbox

Configuration

[gateway]
host = "127.0.0.1"
port = 8000
database = "gateway.db"
auth_token_env = "MCP_GATEWAY_TOKEN"

[servers.example]
transport = "stdio"
command = "npx"
args = ["-y", "some-mcp-server"]
mode = "exclusive"
max_in_flight = 1
queue_limit = 32

[servers.remote]
transport = "streamable_http"
url = "http://127.0.0.1:9000/mcp"
mode = "pool"
max_connections = 2
queue_limit = 64

Upstream tools are exposed as <server_id>__<tool_name>. Gateway coordination tools use the gateway__ prefix. per_agent is process-scoped in v0.1; run one stdio gateway bridge per agent when separate upstream sessions are required. The first release proxies tools only; resources, prompts, sampling, and distributed scheduling are deliberately deferred.

Operations

mcp-gateway status
mcp-gateway start example
mcp-gateway stop example
mcp-gateway restart example

The admin API is loopback-only by default:

GET  /health
GET  /v1/status
POST /v1/servers/{id}/start
POST /v1/servers/{id}/stop
POST /v1/servers/{id}/restart

Set the configured token environment variable to require Authorization: Bearer ... for MCP and admin HTTP requests. Commands and arguments are read from TOML only; the gateway never executes a shell string received from an agent.

Shared work tools

The gateway provides task leases, optimistic task updates, resource locks, and project-scoped text memory through gateway__* tools. SQLite uses WAL mode and short transactions. Locks and task leases expire, so a disconnected agent does not hold work forever.

Do not store credentials, raw transcripts, or production data in the local memory store.

Development

python -m pytest -q
python -m compileall -q universal_mcp_gateway
git diff --check

See SPEC.md and tasks/plan.md for the current contract and deferred work.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Runs multiple upstream MCP servers behind one local process, keeping sessions persistent and exposing a compact, policy-aware surface for tools, resources, and prompts via HTTP, CLI, and MCP-native clients.
    4
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a centralized, deterministic MCP endpoint with routing, logging, and browser automation, enabling multiple LLMs to share a consistent set of tools including jq, ripgrep, Git, Python, and headless Chromium.
    MIT
  • A
    license
    C
    quality
    F
    maintenance
    This MCP server gives an AI coding host controlled, client-agnostic access to a local machine's developer capabilities: transactional file edits, shell and PTY execution, Git and project inspection, language-server operations, isolated browser automation, Windows UI automation, VS Code state, durable jobs, and checkpoints, all bounded by filesystem root allowlisting and resource admission controls. It speaks standard MCP over stdio, Streamable HTTP, and legacy HTTP+SSE, and can also run headless as a long-lived job runner without any hosted model vendor.
    114
    ISC