Skip to main content

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

  1. Load the OpenAPI 3.x document (URL or file, JSON or YAML).
  2. Walk every path/method into an Operation with a generated JSON input schema.
  3. 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
  • $ref resolution for fully-expanded body schemas
  • Swagger 2.0 specs
  • SSE / HTTP transport in addition to stdio

PRs welcome.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpify_cli-0.1.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpify_cli-0.1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

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

Hashes for mcpify_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8e4179477d00619831442f7e182d8b701bd8a910d0eb78562cc40052a5788351
MD5 66ad8367981b277606c9df397c4d5680
BLAKE2b-256 16fa09697d23a2a4b88d0b9a5d5794bd54e578b94c418d609e3e8a71ddd2b991

See more details on using hashes here.

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

Hashes for mcpify_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 63f9a5b39453a3d6a91773bef9f2713a7bc83ca4af01089487f8efdcf89d7924
MD5 81f64fbf46f109df9559f7fd2344bf33
BLAKE2b-256 dab2df58104afe3fad21ff4f66d54c99dec7164eee3d4a043b216e00c33a08fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page