LABSCO SUMMARY
The tool list is yours to write.
There is no fixed set of capabilities here — what an agent sees is exactly what you put in config.yaml, which makes this useful for internal APIs nobody is going to publish a server for. The cost is that quality is on you: an argument with a vague description is a tool the model will call wrongly.
What it is
A Python gateway that reads a config.yaml and exposes every entry in its tools list as an MCP tool. Each entry declares a name, a description and its arguments, a requestTemplate that maps the call onto an HTTP request, and a responseTemplate that formats the reply.
What you get
- Any HTTP endpoint reachable as a tool, with URL, method and headers built from templates that interpolate
{{.args.address}}and{{.config.apiKey}} - Argument definitions the model sees — name, description, and whether it is required — so a tool is described without writing code
- Response formatting: the raw HTTP body rendered through a template into the text the model reads
- A choice of transport: SSE by default, or
--transport=stdiofor clients that launch the process themselves
Requirements
No account and no key of its own — credentials for the target API go in the YAML config block and are referenced from the templates. Copy config.example.yaml to config.yaml and map your endpoints. Launch with uv run mcp-gateway; SSE listens on 3001 unless --port= says otherwise.
Setup effort
Build from source — git clone https://github.com/Timandes/mcp-gateway.git
USE CASES
01
Exposing an internal API without shipping code
Describe the endpoints in YAML and restart the gateway; the agent sees them as tools with no build step in between.
02
Keeping an API key out of the model's reach
Put the key in the config block and reference it from the URL or header template, so the model only ever supplies business arguments.
03
Trimming a large API down to what an agent should touch
List only the operations you want available; anything absent from tools simply does not exist as far as the model is concerned.
04
Making a raw JSON response readable
Write a responseTemplate that renders the fields that matter into text, instead of handing the model the whole payload.
BEFORE YOU INSTALL
What to know first
Requires
uv on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
TERMINAL
git clone https://github.com/Timandes/mcp-gateway.git
cd mcp-gateway
cp config.example.yaml config.yamlEdit config.yaml and map the HTTP APIs you want to expose as MCP tools
MCP Clients
Cursor, Cline
JSON
{
"mcpServers": {
"mcp-gateway": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_MCP_GATEWAY>",
"run",
"mcp-gateway",
"--transport=stdio"
]
}
}
}