Any OpenAPI REST API,
now an MCP server.

Point mcpify at an OpenAPI document — JSON or YAML, Swagger 2.0 or OpenAPI 3.x — and every endpoint becomes a typed MCP tool. Validation, auth, and error handling included. No codegen, no boilerplate, no maintenance.

One job: OpenAPI in, MCP server out. Everything else is opt-in and stays out of the way.

Read the launch story: how a live weather API broke this tool (and made it better)

mcpify demo: listing and serving OpenAPI endpoints as MCP tools

Built for the part nobody tells you about

Every "connect your API to Claude" tutorial ends at "now write a custom MCP server." That's the part mcpify deletes.

Safe for agents

Read-only mode

--read-only exposes only GET operations — let agents look without letting them touch.

Context budgets

--tag, --include, --exclude scope the surface; --lazy replaces the whole listing with three meta tools. Your context window will notice.

Secret masking & projection

--redact password,token masks secret-looking fields in every response; --fields id,name trims payloads to what the task needs.

Seconds to a server

Zero boilerplate

Schemas, descriptions, and validation come from the spec at serve time. A 40-endpoint API takes seconds, not a day of wrapping — and 1,200-endpoint specs load too (see below).

Try it in your terminal

mcpify try is an interactive REPL: pick a tool, fill the arguments, see the real response — no agent client required.

Two transports, one server

mcpify serve speaks stdio to your local agent; serve --http 8080 --http-token $T shares the same tools with your team over MCP Streamable HTTP.

Ready for production

Auth out of the box

--auth-env API_KEY injects credentials from the environment; OAuth2 client-credentials are fetched, cached, and self-healed on a 401. Secrets never touch your config file or CLI history.

Doctor

mcpify doctor inspects a spec before you serve it: missing operationIds, untyped parameters, dead servers, agent-unfriendly summaries.

Proven, not promised

506 tests across 28 suites: protocol end-to-end on both transports, a hostile-spec corpus, live-CI checks against api.weather.gov. Typed end-to-end (mypy strict), CodeQL scanned, Linux + Windows CI. Listed in the official MCP Registry.

# the context price tag — measured on the real GitHub REST spec (1,222 tools)
$ mcpify list github-api.json --cost --lazy
surface cost: ~289,706 tokens — paid in every tools/list by every agent
lazy surface:    ~291 tokens — three meta tools (search / schema / call) replace the full list

# big specs are the norm here, not the edge case
# GitHub REST, 1,222 tools ...... 0.5s   Kubernetes Swagger 2.0, 1,190 ...... 0.2s
# Stripe YAML, 6 MB, 594 tools .. 2.6s   Twilio, 197 ...................... 0.1s

Three commands, start to finish

# 1. install
$ pipx install mcpify-openapi

# 2. preview what your agent will see
$ mcpify list ./openapi.json --read-only
mcpify: 8 tools from ./openapi.json
  findpetsbystatus   GET   /pet/findByStatus
  getpetbyid         GET   /pet/{petId}
  ...

# 3. serve — your API is now an MCP server
$ mcpify serve ./openapi.json --read-only \
    --auth-env API_TOKEN --auth-style bearer
✓ MCP server ready — 8 tools on stdio

+ no agent at hand? try the tools right in your terminal
$ mcpify try ./openapi.json

Works with your client

Standard MCP over stdio. Point any MCP client at the mcpify serve command.

ClientConfig
Claude Desktop"command": "mcpify", "args": ["serve", "./openapi.json"]
Claude Codeclaude mcp add myapi -- mcpify serve ./openapi.json
CursorSame JSON as Claude Desktop, in .cursor/mcp.json
Anything MCPAny client that speaks MCP stdio
Team-shared (HTTP)mcpify serve ./openapi.json --http 0.0.0.0:8080 --http-token $TOKEN, then point HTTP-capable clients at the URL