mcp-hooker
Click on "Install 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-hookerload the OpenAPI spec from https://api.example.com/openapi.json"
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-hooker
Configurable FastMCP server that turns any OpenAPI spec (local or remote, JSON or YAML) into an MCP tool surface over HTTP.
Configuration is YAML via yayaya — layered files, dot-path lookups, and ${ENV_VAR} expansion for secrets.
Project layout
mcp-hooker/
pyproject.toml
config.yaml # default config (safe to commit)
config.local.yaml # optional overlay (gitignored)
Dockerfile
docker-compose.yml
.gitlab-ci.yml
docs/RUNBOOK.md
mcp_hooker/
settings.py # yayaya loader
spec_loader.py # fetch/parse OpenAPI
server.py # reloadable HTTP MCP serverRelated MCP server: ControlAPI-MCP
Quick start
cd mcp-hooker
python -m venv .venv
source .venv/bin/activate
pip install -e .
# Edit config.yaml (openapi.spec + api.base_url), then:
mcp-hookerThe server listens on server.host / server.port from config (default 0.0.0.0:8000).
Configuration
Loaded from config.yaml, with optional config.local.yaml merged on top. Override paths with:
export MCP_HOOKER_CONFIG_FILES=config.yaml,config.docker.yamlKeys
Path | Description |
| MCP server display name |
| Bind address |
| Bind port |
| Remote URL or local path to OpenAPI JSON/YAML |
| Timeout when downloading remote specs (seconds) |
| Upstream API base URL (falls back to |
| httpx timeout for tool calls |
| Extra request headers; values support |
| If set, |
| Auto-reload interval ( |
| Reload on |
Example api.headers with a secret from the environment:
api:
headers:
Authorization: "Bearer ${API_TOKEN}"HTTP endpoints
Endpoint | Method | Purpose |
| GET | Liveness + current spec/base URL |
| POST | Re-read config and OpenAPI spec |
| * | Streamable HTTP MCP (FastMCP default) |
Reloading
HTTP:
curl -X POST http://localhost:8000/admin/reloadSignal:
kill -HUP <pid>whenreload.on_sighupis trueInterval: set
reload.interval_secondsto poll remote specs
Each reload closes the previous httpx client, re-parses config via yayaya, fetches the spec, and rebuilds the FastMCP OpenAPI provider.
Docker
docker build -t mcp-hooker .
docker run --rm -p 8000:8000 -v "$PWD/config.yaml:/app/config.yaml:ro" mcp-hookerOr with Compose:
docker compose up --buildGitLab CI/CD
.gitlab-ci.yml mirrors zpl-mcp: build on a tagged runner, push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA, and tag latest on the default branch.
Register a runner with tag mcp-hooker (or change the tag in .gitlab-ci.yml to match your fleet).
Cursor / MCP client
Point your client at the streamable HTTP URL, for example:
{
"mcpServers": {
"my-api": {
"url": "http://localhost:8000/mcp"
}
}
}Development
pip install -e ".[dev]"
ruff check mcp_hookerOperations
See docs/RUNBOOK.md for architecture, deployment notes, and troubleshooting.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/KodzghlyCZ/mcp-hooker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server