MCP Gateway is an Streamable HTTP proxy server that bridges HTTP/JSON-RPC requests to multiple MCP (Model Context Protocol) servers running as stdio processes.
- HTTP proxy for MCP servers (stdio → Streamable HTTP)
- Web UI for configuration management
- Auto-start MCP servers on first request
- Support for tools, resources, and prompts
- Docker support
# Create your mcp.json configuration
cp sample.mcp.json mcp.json
# Start the server
docker compose up --buildAccess the web UI at http://localhost:8080
# Build frontend
cd frontend
bun install
bun run build
cd ..
# Run server
go run . --addr :8080 --config mcp.jsonCreate mcp.json with your MCP server definitions:
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"env": {
"API_KEY": "your-api-key"
},
"disabled": false
}
}
}| Field | Type | Description |
|---|---|---|
command |
string | Executable command |
args |
string[] | Command arguments |
env |
object | Environment variables |
disabled |
boolean | Disable the server |
POST /v1/proxy/{server-name}
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
Supported methods:
initializetools/listtools/callresources/listresources/readprompts/listprompts/getping
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/config |
Get configuration |
| PUT | /api/config |
Save configuration |
| POST | /api/config/reload |
Reload and restart servers |
| GET | /api/servers |
List server statuses |
| POST | /api/servers/{name}/start |
Start a server |
| POST | /api/servers/{name}/stop |
Stop a server |
Configure your MCP client to use HTTP transport pointing to the gateway:
http://localhost:8080/v1/proxy/{server-name}
go run . --addr :8080 --config mcp.jsoncd frontend
bun install
bun run dev # Starts on port 3000MIT
