openapi-spec-mcp

puelpan/openapi-spec-mcp

3.3

If you are the rightful owner of openapi-spec-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The OpenAPI MCP Server provides tools for querying and exploring OpenAPI specifications, allowing users to search, retrieve, and list API endpoints.

Tools
3
Resources
0
Prompts
0

OpenAPI MCP Server

A Model Context Protocol (MCP) server that provides tools for querying and exploring OpenAPI specifications. This server allows you to search endpoints, get detailed endpoint information, and list all available API endpoints from OpenAPI/Swagger documentation.

Features

  • Search Endpoints: Find API endpoints by keyword matching in paths, summaries, descriptions, or tags
  • Get Endpoint Details: Retrieve complete information for a specific endpoint
  • List All Endpoints: Get an overview of all available API endpoints
  • Flexible Input: Supports both local files (YAML/JSON) and remote URLs
  • Auto-format Detection: Automatically detects JSON or YAML format

Installation

This script uses uv for dependency management. The required dependencies are defined inline:

  • mcp: Model Context Protocol library
  • pyyaml: YAML parsing support

Usage

Basic Usage

# Using a local OpenAPI spec file
./main.py /path/to/openapi.yaml

# Using a remote OpenAPI spec URL
./main.py https://api.example.com/openapi.json

# With custom log level
./main.py /path/to/openapi.yaml --log-level DEBUG

Command Line Arguments

  • docs_path (required): Path to OpenAPI specification file (YAML or JSON) or URL to remote spec
  • --log-level (optional): Set logging level (DEBUG, INFO, WARNING, ERROR). Default: INFO

Supported File Formats

  • Local files: .yaml, .yml, .json
  • Remote URLs: Any URL ending in .yaml, .yml, .json, or auto-detected format

Available Tools

When running as an MCP server, the following tools are available:

1. search_endpoints

Search for API endpoints using keywords.

Parameters:

  • query (string): Search term to match against paths, summaries, descriptions, or tags

Example Response:

[
  {
    "path": "/users/{id}",
    "method": "GET",
    "summary": "Get user by ID",
    "tags": ["users"]
  }
]

2. get_endpoint

Get detailed information for a specific endpoint.

Parameters:

  • path (string): The API path (e.g., "/users/{id}")
  • method (string): HTTP method (GET, POST, PUT, DELETE, PATCH)

Example Response:

{
  "path": "/users/{id}",
  "method": "GET",
  "details": {
    "summary": "Get user by ID",
    "description": "Retrieve a specific user by their unique identifier",
    "parameters": [...],
    "responses": {...}
  }
}

3. list_all_endpoints

List all available API endpoints.

Example Response:

[
  {
    "path": "/users",
    "method": "GET",
    "summary": "List all users"
  },
  {
    "path": "/users/{id}",
    "method": "GET",
    "summary": "Get user by ID"
  }
]

Integration with MCP Clients

This server implements the Model Context Protocol and can be used with any MCP-compatible client. The server communicates via stdio and provides structured access to OpenAPI documentation.

Claude code

{
  "mcpServers": {
    "myapidocs": {
      "command": "/path/to/main.py",
      "args": [
        "/path/to/project/openapi-spec.json"
      ]
    },
    "otherapidocs": {
      "command": "/path/to/main.py",
      "args": [
        "https://api.example.com/openapi.json"
      ]
    }
  }
}

Error Handling

  • Invalid file paths or URLs will be logged and handled gracefully
  • Unsupported file formats will raise clear error messages
  • Network issues with remote URLs are caught and reported
  • Missing or malformed OpenAPI specs return empty results with appropriate logging

Logging

The server provides comprehensive logging at multiple levels:

  • INFO: General operation status
  • DEBUG: Detailed operation information
  • ERROR: Error conditions and failures

Log output includes timestamps and structured information for debugging.