Skip to main content

A generic MCP gateway whose tools are registered and executed asynchronously by browser applications over WebSocket.

Project description

MCP Gateway

A generic, subclassable Model Context Protocol gateway whose tools are registered and executed asynchronously by connected providers over WebSocket.

MCP Client ⇄ Streamable HTTP ⇄ Gateway ⇄ WebSocket ⇄ Provider

CI PyPI Python License: MIT


The gateway never knows the capabilities ahead of time. A provider — typically a browser app — connects, publishes its own MCP tools, resources, prompts and more, and executes them when an MCP client calls them. The gateway only registers, publishes and routes, staying completely domain agnostic.

It is a small, installable library. You build a real application by subclassing Gateway and overriding hooks. The handlers themselves are written in JavaScript. This library never prescribes a specific frontend — the Provider SDK guide teaches the JS side generically.

📦 Install

pip install mcp-gtw
# or
uv add mcp-gtw

🚀 The smallest gateway

from mcp_gtw.gateway import Gateway

app = Gateway().create_app()
uv run python -m mcp_gtw.main

This publishes a real MCP endpoint at /mcp, a private provider WebSocket at /provider and a health check at /health. It exposes whatever capabilities the connected provider registers.

🧩 Extending it

Subclass Gateway and override the hooks to attach your own domain logic:

from mcp_gtw.channel import Channel
from mcp_gtw.gateway import Gateway

class MyGateway(Gateway):
    mcp_server_name = "my-app"

    async def on_provider_connected(self, channel: Channel) -> None:
        ...  # a provider session just came online

    def register_routes(self, app) -> None:
        super().register_routes(app)
        ...  # add your own HTTP and WebSocket routes

app = MyGateway().create_app()

See the Gateway library guide for every override point and a worked example of building your own extension.

📚 Documentation

Guide What it covers
Architecture Components, transports and request flows.
Quick start Install, run and connect an MCP client.
Gateway library The Gateway class and every override point.
Configuration Every setting and environment variable.
Provider protocol The private gateway ⇄ provider message protocol.
Provider SDK Writing the JavaScript provider and registering tools.
MCP clients Connecting Claude Code, generic clients and the Inspector.
Admin dashboard The optional monitoring dashboard and its stats API.
Security The security model, tokens, origins and hardening.
Testing Running the suite and the 100% coverage gate.
Deployment Docker, reverse proxies and scaling.

🗂️ Layout

.
├── src/mcp_gtw/     # the library
├── tests/               # unit and integration tests (100% coverage)
└── docs/                # the guides linked above

✅ Requirements

  • Python 3.12+ — tested on 3.12, 3.13 and 3.14 in CI (3.12 is the pinned local and Docker version)
  • Any MCP client (Claude Code, Cursor, the MCP Inspector, …)

💜 Support

If this project saved you time, consider supporting it: GitHub Sponsors · Ko-fi.

Made with care by Paulo Coutinho.

Licensed under MIT.

Project details


Download files

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

Source Distribution

mcp_gtw-0.0.1.tar.gz (335.7 kB view details)

Uploaded Source

Built Distribution

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

mcp_gtw-0.0.1-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file mcp_gtw-0.0.1.tar.gz.

File metadata

  • Download URL: mcp_gtw-0.0.1.tar.gz
  • Upload date:
  • Size: 335.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcp_gtw-0.0.1.tar.gz
Algorithm Hash digest
SHA256 36ccfebec27efed6fbd726a097794081edbb4ec482e67e36c9cc421cac800c75
MD5 e0c022e6b6afbedbd92206e210e88a32
BLAKE2b-256 672becb9b88b63addd4ae2e92cefd3a6f13d7c95153479e5ad7791c35bd8daa7

See more details on using hashes here.

File details

Details for the file mcp_gtw-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_gtw-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcp_gtw-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 950e673b050519de30b94afe85595c77324e1da7f6fbb67e525f4392b3d405cf
MD5 36a43f1f617bae682d46dc7414b550e0
BLAKE2b-256 b56b47b197b6bb69b93a984d1b308962fb0b495290ddcea2f5674608c1cacb53

See more details on using hashes here.

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