Skip to main content
Glama
mcp-gtw

MCP Gateway

by mcp-gtw

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

Related MCP server: mcpstead

๐Ÿš€ 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.

โ˜๏ธ One-click deploy

The image runs production-ready as a non-root process. Deploy it to any host that keeps a persistent server (the /provider WebSocket needs one โ€” serverless like Vercel does not work):

Deploy to Render

Render, Railway and Fly.io run the Dockerfile as-is (they inject PORT, which the gateway reads); on a VPS (Hostinger, โ€ฆ) use Docker Compose. Full guide, including reverse proxy and TLS: deployment.

๐Ÿงฉ 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()

Every behaviour is a swappable strategy with a secure default โ€” authentication, tokens, origins, expiry and the wire codec. Change one by setting a *_class attribute or injecting an instance, without touching the transport. See the Gateway library guide for every override point, Extensibility for the strategy contracts, and Auth recipes for token, username/password and client-supplied-token models.

๐Ÿ“š 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.

Extensibility

The swappable strategies, their contracts and the invariants.

Auth recipes

Token, username/password and client-supplied-token models.

Configuration

Every setting and environment variable.

Provider protocol

The private gateway โ‡„ provider message protocol.

Provider SDK

Writing the JavaScript provider and registering tools.

Browser console

Turn any open page into a provider from DevTools.

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.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    Enables centralized management and unified interface for multiple child MCP servers (filesystem, sqlite, etc.), allowing users to discover, launch, and execute tools across different MCP servers through a single gateway.
    Last updated
  • A
    license
    -
    quality
    D
    maintenance
    MCP Gateway that aggregates multiple upstream MCP servers into a single endpoint with persistent connections, tool registry, and authentication.
    Last updated
    29
    2
    MIT
  • F
    license
    -
    quality
    C
    maintenance
    A simple gateway that connects to multiple child MCP servers and forwards tool calls to them, enabling seamless client interactions with multiple tools.
    Last updated
    31

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.

  • MCP server for Argo RPG Platform โ€” connects AI assistants to campaign data via OAuth2

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcp-gtw/mcp-gtw'

If you have feedback or need assistance with the MCP directory API, please join our Discord server