Skip to main content
Glama
aaydin-tr

Swagger Navigator MCP Server

by aaydin-tr

πŸ” Swagger Navigator MCP Server

License: MIT Node.js TypeScript

An MCP server implementation that provides intelligent discovery and search capabilities for Swagger/OpenAPI endpoints. This tool enables AI assistants to dynamically explore, understand, and interact with REST APIs by parsing OpenAPI specifications and providing fuzzy search across endpoints.


πŸš€ How It Works

The Swagger Navigator MCP Server acts as an intelligent API knowledge hub, seamlessly connecting developers with their API specifications. When you ask Cursor/Claude/LLMs to generate API clients, anticorruption layers, or type definitions, Cursor/Claude/LLMs consults the MCP server to get accurate, structured API information and then generates perfect code based on the actual API schema.

flowchart TD A[πŸ‘¨β€πŸ’» Developer] -->|"πŸ’¬ Generate API client<br/>for /users endpoint"| B[🎯 Cursor/IDE/LLMs] B -->|"πŸ” Query: What is<br/>/users endpoint?"| C[πŸš€ Swagger Navigator MCP Server] C -->|"πŸ“Š Returns endpoint<br/>schema & structure"| B B -->|"✨ Here's your<br/>generated API client"| A style A fill:#74b9ff,stroke:#0984e3,stroke-width:2px,color:#fff style B fill:#a29bfe,stroke:#6c5ce7,stroke-width:2px,color:#fff style C fill:#ff6b6b,stroke:#333,stroke-width:4px,color:#fff linkStyle 0 stroke:#fd79a8,stroke-width:3px linkStyle 1 stroke:#00b894,stroke-width:3px linkStyle 2 stroke:#fdcb6e,stroke-width:3px linkStyle 3 stroke:#e17055,stroke-width:3px

✨ Features

  • πŸ” Dynamic API Discovery: Automatically parse and index Swagger/OpenAPI specifications from multiple sources

  • 🎯 Intelligent Search: Use fuzzy matching to find relevant endpoints based on natural language queries

  • πŸ”— Multi-source Support: Handle both local files and remote HTTP endpoints with authentication

  • ⚑ Real-time Updates: Monitor configuration changes and refresh API data automatically

  • πŸ”„ Hot-reload Configuration: Detect config file changes without server restart


πŸ› οΈ Tools

πŸ“‹ list_all_sources

Retrieves a comprehensive list of all available Swagger/OpenAPI sources in the system.

Purpose:

  • Provides overview of all loaded API specifications

  • Shows available APIs for search and exploration

  • Returns source names for use with other tools

Returns:

  • Array of sources with name, description, and OpenAPI info (title, version)

πŸ“„ list_endpoints_for_source

Retrieves all endpoints from a specific API source with pagination support.

Inputs:

  • name (string): The source name to list endpoints for

  • limit (number, optional): Maximum endpoints to return (1-100, default: 10)

  • offset (number, optional): Number of endpoints to skip (default: 0)

Returns:

  • Array of endpoints with path, method, description, and metadata

  • Pagination information with total count and navigation flags

πŸ”Ž search_endpoint

Intelligently searches endpoints using fuzzy matching across multiple attributes.

Inputs:

  • query (string): Search query using natural language (e.g., "create user", "authentication", "GET users")

Returns:

  • Ranked array of matching endpoints with relevance scores

  • Weighted search across descriptions, paths, methods, and tags


βš™οΈ Configuration

πŸ€– Usage with Cursor

Add this to your ~/.cursor/mcp.json:

Using npx

{ "mcpServers": { "swagger-navigator-mcp": { "command": "npx", "args": ["-y", "swagger-navigator-mcp"], "env": { "CONFIG_PATH": "path/to/swagger-navigator-mcp.config.yaml" } } } }

πŸ“ Configuration File

Create a swagger-navigator-mcp.config.yaml file:

# Swagger Navigator MCP Server Configuration sources: # Local file example - name: "petstore-local" source: "./specs/petstore.json" description: "Local Petstore API specification" # Remote HTTP source with authentication - name: "github-api" source: "https://api.github.com" description: "GitHub REST API v3" headers: Authorization: "token ${GITHUB_TOKEN}" Accept: "application/vnd.github.v3+json" # API with custom headers - name: "internal-api" source: "https://internal.company.com/api/swagger.json" description: "Internal company API" headers: X-API-Key: "${API_KEY}" # Optional: Search configuration search: fuzzyThreshold: 0.6 # 0-1, lower = more fuzzy matching # Optional: Refresh interval in seconds refreshInterval: 300 # Refresh every 5 minutes

πŸ” Environment Variable Substitution

The configuration file supports environment variable substitution using ${VARIABLE_NAME} syntax. This allows you to securely store sensitive information like API keys and tokens outside of your configuration file.

Examples:

  • ${GITHUB_TOKEN} - Substituted with the value of the GITHUB_TOKEN environment variable

  • ${API_KEY} - Substituted with the value of the API_KEY environment variable

  • ${DATABASE_URL} - Any environment variable can be used

Note: If an environment variable is not set, the substitution will result in an empty string.

🌍 Environment Variables

Set environment variables for configuration and authentication:

export CONFIG_PATH="./swagger-navigator-mcp.config.yaml" export GITHUB_TOKEN="your-github-token" export API_KEY="your-api-key"

πŸš€ Usage

πŸ“¦ Install Dependencies

npm install

πŸ”¨ Build the Project

npm run build

▢️ Start the Server

CONFIG_PATH=./swagger-navigator-mcp.config.yaml npm start

πŸ§ͺ Development Mode

npm run dev

πŸ“„ License

This project is licensed under the ISC License - see the LICENSE file for details.

-
security - not tested
A
license - permissive license
-
quality - not tested

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/aaydin-tr/swagger-navigator-mcp'

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