LABSCO SUMMARY
Search the spec, then call the API.
The decision that matters here is chunking by endpoint instead of by document: a match comes back with its full parameter list rather than a fragment, which is what lets a model construct a correct call on the first attempt. Authentication stays yours — the request tool takes headers, and the README's own project prompt tells the model to add the bearer token itself.
What it is
An MCP server for API specifications too large to hand a model directly. It indexes one endpoint per chunk with a MiniLM embedding model, keeps the index in memory with FAISS, and answers a natural-language query with the full documentation for the matching endpoints — then executes the request you build from it.
What you get
- Endpoint schemas matched by intent and returned whole — path, method, parameters and response format —
{prefix}_api_request_schema - HTTP requests executed against the API with method, URL, headers, query parameters and body, returning status code, headers and body —
{prefix}_make_request - One instance per API: the tool namespace comes from
MCP_API_PREFIX, so several specs can be served side by side without name collisions - A sentence prepended to every tool description via
GLOBAL_TOOL_PROMPT— how you tell the model which API this instance covers - A base URL taken from the spec automatically, or overridden with
API_REQUEST_BASE_URLwhen you point at staging
Requirements
No account and no key of its own: the spec URL goes in OPENAPI_JSON_DOCS_URL and any API credentials travel as headers on the request tool. MCP_API_PREFIX defaults to any_openapi. Runs from the Docker image buryhuang/mcp-server-any-openapi:latest on linux/amd64 and linux/arm64. The README also gives a pip line for mcp-server-any-openapi, the pyproject name at 0.1.0, which PyPI does not have. Outside the Docker image the embedding model is fetched on first launch, which the README puts at roughly 15s of cold start. linux/arm/v7 is not supported.
Setup effort
Run a container — pull the image and point your client at it
USE CASES
01
Working with an API spec too big to paste
Describe what you want to do in plain language and get back the matching endpoints with their complete parameter documentation.
02
Making the call once the endpoint is known
Send method, URL, headers, query parameters and body, and read back the status code, response headers and body.
03
Serving several APIs to one client
Run one instance per spec with a different MCP_API_PREFIX each, so finance and healthcare tools never collide by name.
04
Testing against staging before production
Keep the production spec as the source of documentation but send the traffic elsewhere by setting API_REQUEST_BASE_URL.
BEFORE YOU INSTALL
What to know first
Requires
docker on PATH
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
MCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"any_openapi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPENAPI_JSON_DOCS_URL=<YOUR_SERVER_URL>/openapi.json",
"-e",
"MCP_API_PREFIX=finance",
"buryhuang/mcp-server-any-openapi:latest"
]
}
}
}<YOUR_SERVER_URL>/openapi.json is the URL of the OpenAPI JSON spec you want to search, and finance is a sample short prefix for this instance's tool names (the default is any_openapi). Optional: GLOBAL_TOOL_PROMPT adds a sentence to the start of every tool description so the model knows which API this instance covers — add it as another "-e", "GLOBAL_TOOL_PROMPT=…" pair before the image name, describing your own API.