Turn any OpenAPI/REST API into an MCP server in one command.
Project description
mcpify
Turn any REST API into an MCP server in one command. Point mcpify at an OpenAPI
spec and every endpoint becomes a tool your AI agent (Claude, Cursor, Windsurf, …) can
call — no glue code, no per-endpoint wrappers.
mcpify https://api.example.com/openapi.json
That's it. Every operation in the spec is now a live MCP tool.
Why
MCP is how AI agents call real tools. But wiring an
existing API into MCP means hand-writing a tool wrapper for every endpoint — tedious and
stale the moment the API changes. Almost every API already publishes an OpenAPI spec.
mcpify reads that spec and generates the whole MCP server at runtime, so:
- Zero per-endpoint code — N endpoints → N tools, automatically.
- Always in sync — regenerate from the spec; no wrappers to maintain.
- Auth-aware — pass an API key / bearer token once, applied to every call.
Install
pipx install mcpify-cli # or: uvx mcpify-cli ...
Use
Preview the tools a spec produces (no server):
mcpify --list examples/petstore-mini.yaml
Run it as an MCP server (stdio):
mcpify https://petstore3.swagger.io/api/v3/openapi.json
mcpify ./openapi.yaml --base-url https://staging.internal.api
mcpify ./openapi.yaml --auth "Authorization: Bearer $TOKEN" # or set MCPIFY_AUTH
Plug it into Claude
Add to your MCP client config (Claude Desktop / Claude Code mcp.json):
{
"mcpServers": {
"petstore": {
"command": "mcpify",
"args": ["https://petstore3.swagger.io/api/v3/openapi.json"]
}
}
}
Restart the client and ask: "list the available pets" — Claude calls the API directly.
How it works
- Load the OpenAPI 3.x document (URL or file, JSON or YAML).
- Walk every path/method into an
Operationwith a generated JSON input schema. - Serve them over MCP; each tool call is mapped to a live HTTP request (path, query, header params and JSON bodies all handled) and the response is returned to the agent.
Supported
- OpenAPI 3.x, JSON or YAML, from a URL or local file
GET/POST/PUT/PATCH/DELETE- Path, query, and header parameters; JSON request bodies
- A single global auth header (API key or bearer token)
Roadmap
- Per-operation filtering (
--only,--tag) to expose a subset of a large API $refresolution for fully-expanded body schemas- Swagger 2.0 specs
- SSE / HTTP transport in addition to stdio
PRs welcome.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcpify_cli-0.1.0.tar.gz.
File metadata
- Download URL: mcpify_cli-0.1.0.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e4179477d00619831442f7e182d8b701bd8a910d0eb78562cc40052a5788351
|
|
| MD5 |
66ad8367981b277606c9df397c4d5680
|
|
| BLAKE2b-256 |
16fa09697d23a2a4b88d0b9a5d5794bd54e578b94c418d609e3e8a71ddd2b991
|
File details
Details for the file mcpify_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcpify_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63f9a5b39453a3d6a91773bef9f2713a7bc83ca4af01089487f8efdcf89d7924
|
|
| MD5 |
81f64fbf46f109df9559f7fd2344bf33
|
|
| BLAKE2b-256 |
dab2df58104afe3fad21ff4f66d54c99dec7164eee3d4a043b216e00c33a08fe
|