Skip to main content
Glama
swagger-api-mcp-server

swagger-api-mcp-server

by NekoTarou

Swagger API MCP Server

License Build & Test npm version npm downloads Node.js Version MCP Badge

English | 中文

An MCP (Model Context Protocol) server that parses Swagger 2.0 and OpenAPI 3.x specifications, exposing API structure through MCP tools. Features a local file-cache architecture that reduces token usage by 85-95% compared to inline responses.

Features

  • Swagger 2.0 & OpenAPI 3.x — Full dual-format support

  • Smart Caching — Spec parsed once, stored as local JSON files; tools return compact summaries + file paths (~200 chars vs 5-20KB)

  • 11 MCP Tools — Load, browse, search, call APIs, and manage auth dynamically

  • 3 MCP Prompts — Guided workflows for exploring, searching, and integrating APIs

  • 3 MCP Resources — Direct access to cached API info, endpoints, and schemas

  • Two Transport Modes — stdio (for CLI/IDE integration) and HTTP (for multi-session web use)

  • 2-Phase API Calls — Preview requests before executing them

  • Zero External Parsers — Custom $ref resolver with circular reference protection

Related MCP server: OpenAPI MCP Server

Prerequisites

  • Node.js >= 24

Quick Start

Install from npm

npm install -g swagger-api-mcp-server

Or clone and build

git clone https://github.com/NekoTarou/swagger-api-mcp-server.git
cd swagger-api-mcp-server
npm install
npm run build

Run

# stdio mode (default) — for MCP clients like Claude Desktop
npm start

# Auto-load a spec on startup
SWAGGER_URL=https://petstore.swagger.io/v2/swagger.json npm start

# HTTP mode — multi-session with Express
npm run start:http

MCP Client Configuration

Claude Desktop

Add to your Claude Desktop config file (claude_desktop_config.json):

{
  "mcpServers": {
    "swagger-api": {
      "command": "npx",
      "args": ["-y", "swagger-api-mcp-server"],
      "env": {
        "SWAGGER_URL": "https://petstore.swagger.io/v2/swagger.json"
      }
    }
  }
}

Cursor / VS Code

Add to your MCP settings:

{
  "mcpServers": {
    "swagger-api": {
      "command": "npx",
      "args": ["-y", "swagger-api-mcp-server"],
      "env": {
        "SWAGGER_URL": "https://your-api.example.com/openapi.json"
      }
    }
  }
}

Tools

Tool

Description

swagger_load_spec

Load a Swagger/OpenAPI spec from URL, parse and cache it

swagger_update_cache

Re-fetch spec and rebuild cache

swagger_get_info

Get API metadata (title, version, servers, auth schemes)

swagger_list_tags

List all tags with endpoint counts

swagger_list_paths

List endpoints with filtering (tag, method, keyword) and pagination

swagger_get_endpoint

Get endpoint summary + cached file path for full details

swagger_list_schemas

List schema definitions with filtering and pagination

swagger_get_schema

Get schema summary + cached file path for full definition

swagger_search

Search across endpoints and schemas by keyword

swagger_call_api

Execute HTTP requests with 2-phase confirmation

swagger_set_auth

Dynamically set or clear the Authorization header at runtime

Prompts

Prompt

Arguments

Description

swagger_explore_api

url

Guided workflow to load and fully explore an API spec

swagger_find_endpoint

keyword

Search for endpoints by keyword and view full details

swagger_integrate_api

url, task

Find the right endpoint for a task and execute an API call

Resources

Resource

URI

Description

api-info

swagger://api/info

API basic information (title, version, servers, auth)

api-endpoints

swagger://api/endpoints

Index of all API endpoints

api-schemas

swagger://api/schemas

Index of all schema/model definitions

Cache Architecture

When a spec is loaded, it's parsed once and stored as structured JSON files:

.swagger-cache/
├── meta.json              # Cache metadata (URL, counts, timestamp)
├── info.json              # Full API info (title, servers, auth)
├── tags.json              # Tag list with endpoint counts
├── paths-index.json       # Endpoint index for fast lookup
├── schemas-index.json     # Schema index for fast lookup
├── endpoints/             # One file per endpoint (deep-resolved)
│   └── GET__users__{id}.json
└── schemas/               # One file per schema (deep-resolved)
    └── User.json

Tools return brief summaries with file paths. The LLM reads full details on demand via the Read tool — saving 85-95% of tokens per call.

Environment Variables

Variable

Default

Description

SWAGGER_URL

(empty)

Auto-load spec on startup

TRANSPORT

stdio

Transport mode: stdio or http

MCP_PORT

3000

HTTP server port

MCP_HOST

0.0.0.0

HTTP server host

API_BASE_URL

(empty)

Override API base URL for calls

API_AUTH_TOKEN

(empty)

Initial Authorization header value (can be updated at runtime via swagger_set_auth)

CACHE_DIR

.swagger-cache

Custom cache directory path

SESSION_TIMEOUT_MS

1800000

HTTP session timeout (30 min)

MAX_SESSIONS

100

Max concurrent HTTP sessions

Development

npm run dev            # Dev mode with auto-reload (tsx watch)
npm test               # Run tests
npm run build          # TypeScript compilation → dist/
npm run clean          # Remove dist/

License

MIT

Available Tools

11 tools
swagger_call_apiCall API EndpointA
Destructive

Execute an actual HTTP request to an API endpoint. Uses a 2-phase confirmation: first call shows a preview of the request, second call with confirmed=true executes it. Uses the base URL from the spec, API_BASE_URL env var, or the base_url parameter.

Inputs: path (required), method (required), body, headers, +4 more.

swagger_get_endpointGet Endpoint DetailsA
Read-onlyIdempotent

Get a brief summary of a specific API endpoint and the path to its cached JSON file containing complete details (parameters, request body, responses, security). Use the Read tool on the returned file path to see the full endpoint definition.

Inputs: path (required), method (required).

swagger_get_infoGet API InfoA
Read-onlyIdempotent

Get general metadata about the loaded API specification. Returns a brief summary and the path to info.json which contains full details (title, version, description, servers, authentication schemes, contact info). Use the Read tool on the file path to see complete information.

Inputs: no named parameters.

swagger_get_schemaGet Schema DetailsA
Read-onlyIdempotent

Get a brief summary of a specific schema/model and the path to its cached JSON file containing the complete deep-resolved definition (all properties, types, required fields, enums, defaults, nested structures). Use the Read tool on the returned file path to see the full schema.

Inputs: name (required).

swagger_list_pathsList API EndpointsA
Read-onlyIdempotent

List all API endpoints with method, path, summary, and tags. Supports filtering by tag, HTTP method, and keyword search. Use pagination (limit/offset) for large APIs. Each entry includes a cacheFile path for detailed info.

Inputs: tag, limit, method, offset, +1 more.

swagger_list_schemasList Schema DefinitionsA
Read-onlyIdempotent

List all model/schema definitions in the API spec. Shows schema name, type, description, and property count. Supports keyword filtering and pagination.

Inputs: limit, offset, keyword.

swagger_list_tagsList API TagsA
Read-onlyIdempotent

List all tags defined in the API spec. Tags are used to group related endpoints. Also shows how many endpoints belong to each tag.

Inputs: no named parameters.

swagger_load_specLoad Swagger/OpenAPI SpecA
Read-onlyIdempotent

Load and parse a Swagger 2.0 or OpenAPI 3.x specification from a URL. Supports both JSON and YAML formats. The loaded spec is parsed, cached to local JSON files, and used by all subsequent tools. Must be called first before using other tools (unless SWAGGER_URL env var is set).

Inputs: url (required), headers.

swagger_set_authSet Auth TokenA
Idempotent

Dynamically set or clear the Authorization header used by swagger_call_api. The token value is used as-is for the Authorization header (no automatic Bearer prefix). Pass clear=true to remove the current token.

Inputs: clear, token.

swagger_update_cacheUpdate Spec CacheA
Idempotent

Re-fetch the Swagger/OpenAPI spec and rebuild the local file cache. Use this when the upstream spec has changed. Optionally provide a new URL.

Inputs: url, headers.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool targets a distinct resource or action: loading/updating the spec, metadata, lists of paths/tags/schemas, detailed endpoint/schema lookups, search, API execution, and auth management. No two tools overlap; even similar get_endpoint and get_schema differ clearly by target resource.

    Naming Consistency5/5

    All tools use a consistent snake_case pattern with the swagger_ prefix and a clear verb_noun structure (load_spec, list_paths, get_schema, call_api, set_auth). No mixed conventions or vague verbs.

    Tool Count5/5

    11 tools is well-scoped for a Swagger/OpenAPI explorer, covering spec loading, introspection, search, and API invocation without redundancy. Each tool earns its place.

    Completeness5/5

    The toolset covers the full lifecycle of working with an API spec: load/update, metadata, path/tag/schema enumeration, deep details, search, auth setup, and making real calls. No obvious gaps for the intended purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers