mcpfabric
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., "@mcpfabricinspect api.json and show me the available tools"
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.
mcpfabric
Turn an OpenAPI document into a working MCP server.
Most APIs already describe themselves in OpenAPI. MCP clients — Claude Desktop, and the growing set of agent runtimes that speak the protocol — want tools. The gap between the two is mechanical: names have to be legal, parameters have to be merged into one input schema, path placeholders have to be filled and encoded, and errors have to come back as tool results rather than killing the process. This does that, with no dependencies.
pip install -e ".[dev]"
mcpfabric inspect api.json # see the tools before wiring anything up
mcpfabric serve api.json # run the MCP server on stdioWiring it into a client
Add to the client's MCP configuration:
{
"mcpServers": {
"shop": {
"command": "python3",
"args": ["-m", "mcpfabric", "serve", "/absolute/path/to/openapi.json"]
}
}
}If the document has no servers block, pass --base-url https://api.example.com.
To check the request shapes without touching the network, add --dry-run: every
tool call returns the request that would have been sent.
Related MCP server: Contex
What it handles, and why each part matters
Names. MCP requires ^[a-zA-Z0-9_-]{1,64}$. Operation ids containing dots or
slashes are sanitised; a missing id falls back to method_path_slug
(GET /pets/{id}/toys → get_pets_id_toys). Two operations that sanitise to the
same name get _1, _2 suffixes — the compiler counts collisions rather than
overwriting a tool.
Input schemas. Path, query, header, and cookie parameters all have to arrive
in one object. Path and query parameters keep their own names; query and header
parameters are namespaced (query_limit, header_X-Trace) so a path parameter
id and a query parameter id can coexist. Path parameters are always required,
whatever the document claims, because the URL cannot be built without them.
References. Local $refs are expanded. Cycles are not followed forever: a
schema that refers to itself (Node.child -> Node) resolves to a marked
placeholder instead of hanging or inventing a depth limit. Remote $refs are
rejected rather than fetched — no network call is made while parsing a document
you were handed.
Requests. Path values are percent-encoded, so a caller cannot traverse out of
the documented route with ../. List query values become repeated keys; booleans
render lowercase. A missing required argument, or a path placeholder the document
never declared, raises instead of sending a malformed URL.
Failures. An HTTP 4xx/5xx, an unreachable host, or a malformed call comes back
as an isError: true tool result. The server keeps running; one bad call does not
take down a session.
Protocol
Newline-delimited JSON-RPC 2.0 over stdin/stdout, protocol version 2024-11-05.
Supports initialize, tools/list, tools/call, ping, the notifications/*
messages, and batches. Malformed JSON produces a -32700 parse error and the
stream continues. Logs go to stderr so they cannot corrupt the protocol stream.
Tests
python3 -m pytest -v70 tests. The suite includes a real http.server fixture and a full
initialize → tools/list → tools/call session driven through serve(), so the
transport is exercised rather than mocked.
Limits worth knowing
Local
$refonly. Documents that split schemas across files need to be bundled first.application/jsonrequest bodies only; multipart and form encodings are not built.Response schemas are not validated — whatever the API returns is passed through.
No authentication handling. Put a token into an argument, or front the API with something that adds credentials.
Licence
MIT. Copyright (c) 2026 Konain Sultan Khan.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Convert, lint and generate LLM tool schemas for OpenAI, Anthropic, Gemini and MCP
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomatically converts any OpenAPI specification into an MCP server, exposing all HTTP endpoints as callable tools with support for various authentication methods and request types.2-
- AlicenseNot gradedqualityDmaintenanceConverts any OpenAPI 3.x specification into a fully functional MCP server with OAuth 2.1 support and a purely functional architecture.4 npmMIT
- AlicenseNot gradedqualityBmaintenanceDynamically converts any OpenAPI v3 specification into a fully-functional Model Context Protocol (MCP) server.7Mozilla Public 2.0
- AlicenseNot gradedqualityDmaintenanceConverts any OpenAPI/Swagger spec into an MCP server, exposing REST API endpoints as tools for Claude.MIT