Skip to main content

mcp-gateway

check

Make MCP servers easier for every MCP client to use. mcp-gateway is a local MCP proxy that lets you improve a backend's tool names, descriptions, parameters, prompts, resources, and server instructions without forking that backend. Calls still reach the original backend; the gateway improves the surface your client receives.

It runs one local HTTP service with an admin UI at http://127.0.0.1:9100/admin. Claude Code and Codex are supported equally as independent clients: each backend keeps its own /<backend>/mcp endpoint.

The admin UI's backend view — live status, grouped controls, stale-override repair, and inline tool editing (follows your system's light/dark theme)

At a glance

MCP client (Claude Code, Codex, or another MCP client)
                        │
                        ▼
          mcp-gateway — localhost:9100/<backend>/mcp
                        │
                        ▼
              remote or local MCP backend

The gateway is deliberately a proxy and editor, not a replacement MCP client or an identity provider. It can rewrite what a backend advertises and optionally validate or post-process calls; it does not silently change a backend's core behavior.

Start here

Install the public PyPI distribution with uv:

uv tool install mcp-local-gateway
mcp-gateway

The distribution is named mcp-local-gateway because the unrelated mcp-gateway name was already occupied on PyPI. The command and Python package remain mcp-gateway and mcp_gateway. Existing uv tool installs of v1.1.0 or earlier need the one-time renamed-distribution migration.

On macOS, the first interactive run offers to install the resident LaunchAgent; accepting is the entire service setup. On Linux and Windows, or with mcp-gateway --foreground, it runs in the current terminal. The application owns macOS service install, upgrade, status, and removal:

mcp-gateway --service-status
mcp-gateway --uninstall-service

Open http://127.0.0.1:9100/admin to import or edit backends. If the relevant client CLI is installed, the Admin UI can register independent endpoints in Claude Code and Codex; otherwise register /<backend>/mcp manually.

A fresh run normally creates ~/.config/mcp-gateway/config.toml. The bundled DeepWiki and Context7 examples make outbound requests while capturing their initial catalogs and when tools are called. The gateway also makes one lightweight PyPI version request at startup and daily; it never auto-applies an update, tolerates offline failure, and exposes an update_check toggle in Gateway settings. Remove the sample backends and disable that toggle before starting if the environment must be network-silent.

The installation guide covers the verified GitHub Release fallback, checkout development, configuration selection, and complete service lifecycle. See the Admin guide for client registration.

Running and updating

/health answers whether the gateway process is alive and identifies the code path it is running. /ready answers whether the gateway and every enabled backend are mounted; it returns 503 while any enabled backend is unavailable.

curl -s http://127.0.0.1:9100/health
curl -s http://127.0.0.1:9100/ready

For a normal installation, one command checks PyPI, installs the exact published version, restarts the resident service when present, and requires /health plus /ready before reporting success:

mcp-gateway update

Use the same path with an exact prior version for deterministic rollback:

mcp-gateway update --version X.Y.Z

An activation failure automatically attempts to reinstall and restart the old version. Config, logs, backups, and captured state are never part of the package swap. Contributors deploying a checkout can continue to use guarded just update from a clean main branch.

What you can change

  • Tool, parameter, resource, prompt, and server-instruction text.
  • Visibility, injected defaults, output budgets, and per-tool behavior hooks.
  • Backend configuration and independent client registrations.
  • Gateway-owned Virtual Tools that compose or route backend tools at /virtual/mcp.

The detailed configuration and security contracts live in the linked manuals; this README intentionally does not duplicate them.

Validation boundaries

just check is the repeatable local quality gate. CI runs that gate and a hermetic MCP conformance job using disposable fixtures; it does not contact your personal backends or exercise your installed daemon. Those stateful, local integration checks remain your responsibility. just verify is opt-in: it may call the public DeepWiki service, sends no bearer or OAuth credentials, and is only suitable for an equivalent unprotected test instance.

Documentation

  • Installation — foreground and macOS service paths, upgrades, moves, and uninstalling.
  • Releases — versioning, PyPI publishing, and verified fallback artifacts.
  • Admin guide — editing, registration, and Virtual Tools.
  • Configuration referenceconfig.toml, backends, secrets, and behavior hooks.
  • Operations — readiness, logs, recovery, and local verification boundaries.
  • Security — network exposure, bearer tokens, OAuth, and local trust boundaries.
  • Security policy — private vulnerability reporting and supported versions.
  • Admin API — scripting interface and API contracts.

Contributing

Work through pull requests, with CI as the shared baseline. Start with CONTRIBUTING.md and the repository's agent instructions; they define the development workflow, validation expectations, and where to record deferred work.

License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_local_gateway-1.3.2.tar.gz (151.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_local_gateway-1.3.2-py3-none-any.whl (167.4 kB view details)

Uploaded Python 3

File details

Details for the file mcp_local_gateway-1.3.2.tar.gz.

File metadata

  • Download URL: mcp_local_gateway-1.3.2.tar.gz
  • Upload date:
  • Size: 151.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mcp_local_gateway-1.3.2.tar.gz
Algorithm Hash digest
SHA256 3ee390d16d04104c22b3b0c5a5f09e488ade3090350e9de163921a8fe6c7169e
MD5 641aef6e8dd2f0255d3569a6631a62f6
BLAKE2b-256 b17384f5276cd474dd66347c4fbe91540fdfbed161f387e8b3a55f38ff23c5e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_local_gateway-1.3.2.tar.gz:

Publisher: release-please.yml on voidfreud/mcp-gateway

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_local_gateway-1.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_local_gateway-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4e3957ec101144f2df668f6bdcd8b95006effda1895de7638ad24bce829d430b
MD5 84ec80d7078d90162503049a883ac869
BLAKE2b-256 e178c3af371c150ef16c83842fdcbb87c2aa34a2b4d35f211200be066298b8e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_local_gateway-1.3.2-py3-none-any.whl:

Publisher: release-please.yml on voidfreud/mcp-gateway

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page