Skip to main content
Glama

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.

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.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

Available Tools

3 tools
createPetD

Create a pet

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.6/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines1/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
petIdYespath parameter

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoquery parameter

TDQS

C2.7/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

C2.8/5.0
Disambiguation5/5

Each tool has a distinct purpose: create, get by ID, and list all pets. No ambiguity or overlap.

Naming Consistency5/5

All tools follow a consistent camelCase verb_noun pattern: createPet, getPet, listPets.

Tool Count4/5

Three tools is appropriate for a basic pet management scope, though slightly minimal.

Completeness3/5

Domain is pet management; missing update and delete operations are notable gaps for full lifecycle.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Automatically 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
  • A
    license
    A
    quality
    D
    maintenance
    Turn 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.
    2
    10
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Turns any OpenAPI specification into a fully working MCP server with a single command, enabling AI agents to call APIs without writing any glue code.
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Turns any OpenAPI REST or GraphQL API into an MCP server, allowing AI assistants like Claude to interact with APIs without writing code.
    165
    MIT

Latest Blog Posts

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