Skip to main content
Glama
Afstkla

OpenAPI to MCP Server

by Afstkla

openapi-to-mcp

PyPI Python CI codecov License

Convert any OpenAPI/Swagger spec into an MCP server, instantly exposing your REST API as tools for Claude.

uvx openapi-to-mcp serve ./spec.json --base-url https://api.example.com -a bearer --bearer-token $TOKEN

Installation

No installation needed — just use uvx:

uvx openapi-to-mcp --help

Or install globally:

uv tool install openapi-to-mcp

Related MCP server: Swagger MCP

Quick Start

# See what tools will be generated
uvx openapi-to-mcp list-endpoints ./openapi.json

# Run MCP server
uvx openapi-to-mcp serve ./openapi.json --base-url https://api.example.com

Authentication

Supports all OpenAPI/Swagger security schemes:

# HTTP Basic
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a basic -u user -p pass

# Bearer Token
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a bearer --bearer-token $TOKEN

# API Key (header, query, or cookie)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a api-key-header --api-key $KEY --api-key-name X-API-Key

# OAuth2 Password (cookie-based login)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a oauth2-password -u user -p pass --login-url /auth/login

# OAuth2 Password (token-based)
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a oauth2-password -u user -p pass --token-url /oauth/token

# OAuth2 Client Credentials
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  -a oauth2-client --client-id $ID --client-secret $SECRET --token-url /oauth/token

Adding to Claude Code

Add to ~/.claude.json or .mcp.json:

{
  "mcpServers": {
    "my-api": {
      "command": "uvx",
      "args": [
        "openapi-to-mcp",
        "serve",
        "/path/to/spec.json",
        "--base-url", "https://api.example.com",
        "--auth-type", "bearer",
        "--bearer-token", "your-token"
      ]
    }
  }
}

Or generate a config:

uvx openapi-to-mcp generate-config ./spec.json \
  --base-url https://api.example.com \
  --server-name my-api \
  -a bearer --bearer-token $TOKEN

Filtering Endpoints

Large APIs can expose hundreds of tools. Use tag filters:

# Only include specific tags
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  --include-tag Users --include-tag Orders

# Exclude tags
uvx openapi-to-mcp serve spec.json -b https://api.example.com \
  --exclude-tag Admin --exclude-tag Internal

Commands

Command

Description

serve

Run MCP server for an OpenAPI spec

list-endpoints

Preview endpoints and generated tool names

inspect

Show full tool definitions as JSON

generate-config

Generate Claude Code MCP config

Tool Naming

Endpoints are converted to clean tool names:

Method

Path

Tool Name

GET

/users

list_users

POST

/users

create_user

GET

/users/{id}

get_user

PATCH

/users/{id}

update_user

DELETE

/users/{id}

delete_user

How It Works

  1. Parse — Reads OpenAPI 3.x spec (JSON or YAML, file or URL)

  2. Generate — Converts each endpoint to an MCP tool with proper input schema

  3. Authenticate — Handles login flows, stores tokens/cookies

  4. Serve — Runs stdio MCP server, executes HTTP calls on tool invocation

License

MIT

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Afstkla/openapi-to-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server