mcpify
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.jsonThat'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.
Related MCP server: APIFold
Install
pipx install mcpify-cli # or: uvx mcpify-cli ...Use
Preview the tools a spec produces (no server):
mcpify --list examples/petstore-mini.yamlRun 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_AUTHPlug 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/DELETEPath, 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 schemasSwagger 2.0 specs
SSE / HTTP transport in addition to stdio
PRs welcome.
License
MIT
Available Tools
3 toolscreatePetD
Create a pet
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only says 'Create a pet'—no disclosure of side effects, authentication needs, rate limits, or any behavioral traits beyond the implied mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (3 words) but under-specified, omitting critical information. Conciseness should not sacrifice completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, one required nested parameter, and no annotations, the description fails to provide necessary context about return values, parameter semantics, or behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the single required parameter 'body' or its properties. No guidance on how to populate the nested object with 'tag' and 'name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb (create) and resource (pet), but essentially repeats the tool name without adding specificity. It does not distinguish from siblings like getPet or listPets, though the action is different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No context about prerequisites, conditions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPetB
Get a pet by ID
| Name | Required | Description | Default |
|---|---|---|---|
| petId | Yes | path parameter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the basic operation but does not disclose error handling (e.g., pet not found), required permissions, or return format. For a simple read operation, the lack of detail is acceptable but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool (1 param, no output schema, no annotations), the description is adequate but minimal. It could mention common behavioral details like edge cases or pagination, but given the simplicity, a score of 3 is fair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (petId described as 'path parameter'). The description adds no additional meaning beyond the schema; the parameter is self-explanatory. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a pet by ID' uses a specific verb and resource, clearly indicating a retrieval operation. It distinguishes itself from siblings 'createPet' (creation) and 'listPets' (listing all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings. The description does not mention alternatives or scenarios where this tool is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPetsC
List all pets
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | query parameter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'List all pets' but does not disclose read-only behavior, whether pagination occurs, rate limits, or any side effects. Minimal behavioral insight for a simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), front-loaded with the verb 'list'. However, it may be under-specified for the agent to use effectively, balancing conciseness with completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context (e.g., result structure, pagination, defaults). It is insufficient for the agent to understand the full behavior, especially with a single optional parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter 'limit', but its description is generic ('query parameter'). The tool description adds no additional meaning beyond the schema, fitting the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all pets' clearly states it retrieves a list of pets. It distinguishes from sibling tools 'createPet' and 'getPet' implicitly (creates vs. lists vs. individual get), but does not explicitly differentiate scope or filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives, no mention of pagination, filtering, or limitations. The description does not help the agent decide between listPets and getPet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: create, get by ID, and list all pets. No ambiguity or overlap.
All tools follow a consistent camelCase verb_noun pattern: createPet, getPet, listPets.
Three tools is appropriate for a basic pet management scope, though slightly minimal.
Domain is pet management; missing update and delete operations are notable gaps for full lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomatically converts Swagger/OpenAPI specifications into MCP servers, enabling AI agents to interact with any REST API through natural language by exposing endpoints as AI-friendly tools.3
- AlicenseAqualityDmaintenanceTurn any REST API into a hosted MCP server. 18 free public servers (GitHub, Stripe, Slack, OpenAI, Notion, and more) — no setup required, bring your own API key.210AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceTurns any OpenAPI specification into a fully working MCP server with a single command, enabling AI agents to call APIs without writing any glue code.13MIT
- AlicenseNot gradedqualityDmaintenanceTurns any OpenAPI REST or GraphQL API into an MCP server, allowing AI assistants like Claude to interact with APIs without writing code.165MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Amanbig/mcpify'
If you have feedback or need assistance with the MCP directory API, please join our Discord server