MCP Gateway
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Gatewaylist my Azure DevOps work items"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Gateway
A single MCP server for internal LLM services. Those services call only the gateway; the gateway routes to per-app MCPs (ADO, Oracle, and the rest of the estate).
Internal LLM → MCP Gateway (one MCP) → ADO MCP, Oracle MCP, … (~50 app MCPs)v1 also applies identity, redaction, authorization, and audit on that hop. Downstream MCP URLs and which caller may use which MCP live in static config (config/mcp-servers.yaml). IDE clients are out of scope.
This branch is initial scaffolding only. Registry load, routing, and governance are stubbed.
See docs/mcp-gateway.md for locked decisions and BDD.
Tech stack
Layer | Choice | Why |
Language | Python 3.12+ | Matches the team preference; strong libraries for HTTP proxies, policy, and data masking |
HTTP API | FastAPI + Uvicorn | Native async, typed request models, good fit for a JSON-RPC/MCP front door on port 8000 |
Settings | Pydantic Settings | Env-driven config ( |
Registry | Static YAML |
|
Audit store | SQLAlchemy 2 (asyncio) + aiosqlite | Local SQLite audit table; same engine can move to Postgres |
Downstream MCP | httpx | Async client for MCP JSON-RPC against registered app MCPs |
Tests | pytest + pytest-asyncio | FastAPI |
Lint | Ruff | Single tool for lint and import sorting |
Related MCP server: Multi-Provider LLM MCP Server
Layout
config/mcp-servers.yaml # Static registry (ADO, Oracle examples)
src/mcp_gateway/
main.py # FastAPI app factory and uvicorn entrypoint
config.py # Settings
api/ # HTTP: /health and JSON-RPC POST /
auth/ # Token → internal LLM caller (stub)
governance/ # Redaction + authorization (stubs)
audit/ # Append-only audit store (stub)
registry/ # Load static YAML catalog (stub)
proxy/ # MCP client to app MCPs (stub)
tests/
features/ # Gherkin aligned with the architecture docLocal run
Requires Python 3.12+ and uv.
uv sync --group dev
cp .env.example .env
uv run mcp-gatewayService listens on http://localhost:8000.
curl -s http://localhost:8000/health
curl -s -X POST http://localhost:8000/ \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'uv run pytestThis server cannot be deployed
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Connect MCP clients to 2,000+ AI models without managing provider API keys.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceActs as an intermediary between LLMs and other MCP servers, centralizing management, sanitizing sensitive information, and providing a unified interface for discovering and interacting with proxied MCPs.385MIT
- FlicenseAqualityBmaintenanceUnified MCP server for querying multiple LLM providers (Gemini, OpenAI, Anthropic, etc.) with advanced routing, cost optimization, and fallback resilience.26 npm-
- AlicenseAqualityAmaintenanceEnables AI harnesses to connect to a single MCP endpoint that routes to multiple downstream MCP servers, discovering and executing capabilities on demand while keeping tool schemas out of context.429 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and MCP clients to safely access upstream MCP servers through centralized policy enforcement, including allow/deny/approval decisions, schema pinning, circuit breakers, and audit logging.MIT