Swagger Explorer MCP

# Swagger Explorer MCP A Management Control Plane (MCP) server for exploring and analyzing Swagger/OpenAPI specifications through Claude. ## Quick Start Install and run globally using npx: ```bash npx -y @johnneerdael/swagger-mcp ``` Or install with environment variables: ```bash npx -y @johnneerdael/swagger-mcp \ --env BASE_URL=/api \ --env AUTH_TOKEN=your-token \ --env PORT=3000 ``` ## Installation for Claude Desktop 1. Open Claude Desktop 2. Click on Settings (gear icon) 3. Select "Tools & Integrations" 4. Click "Add MCP Server" 5. Enter the following: ``` Name: Swagger Explorer Command: npx -y @johnneerdael/swagger-mcp Arguments: --swagger-url=$SWAGGER_URL ``` 6. Click "Install" ## Usage with Claude Here are some example interactions with Claude: ### Basic Swagger Exploration ``` Human: Can you explore the Swagger documentation at http://localhost:8080/docs? Claude: I'll help you explore that Swagger documentation using the Swagger Explorer MCP. Let me analyze the API endpoints and schemas for you: [Claude would then use the MCP to fetch and analyze the Swagger documentation] ``` ### Analyzing Specific Endpoints ``` Human: What are the available response schemas for the /pets POST endpoint? Claude: I'll check the response schemas for that endpoint using the MCP. [Claude would use the MCP to fetch specific endpoint details] ``` ### Schema Analysis ``` Human: Can you show me the detailed structure of the Pet schema? Claude: I'll retrieve the detailed schema information using the MCP. [Claude would use the MCP to analyze the schema structure] ``` ## Features 1. **Authentication Support** - Bearer token authentication - Configurable through environment variables 2. **Custom Response Formatting** - Minimal format: Removes null/empty values - Detailed format: Includes metadata and timestamps - Raw format: Unmodified response 3. **Schema Analysis** - Detailed property exploration - Response schema analysis - Schema relationships 4. **API Exploration** - Path listing - Method filtering - Response format analysis ## Configuration Environment Variables: - `BASE_URL`: Base path for the API (default: '') - `AUTH_TOKEN`: Bearer token for authentication - `PORT`: Server port (default: 3000) - `SWAGGER_URL`: Default Swagger documentation URL ## API Endpoints ### Explore API ```bash curl -X POST http://localhost:3000/api/explore \ -H "Authorization: Bearer your-token" \ -H "Content-Type: application/json" \ -d '{ "url": "http://your-swagger-url", "options": { "paths": true, "schemas": true } }' ``` ### Get Schema Details ```bash curl -X POST http://localhost:3000/api/schema-details \ -H "Authorization: Bearer your-token" \ -H "Content-Type: application/json" \ -d '{ "url": "http://your-swagger-url", "schemaName": "Pet" }' ``` ### Get Response Schemas ```bash curl -X POST http://localhost:3000/api/response-schemas \ -H "Authorization: Bearer your-token" \ -H "Content-Type: application/json" \ -d '{ "url": "http://your-swagger-url", "path": "/pets", "method": "post" }' ``` ## Response Formats ### Minimal Format ```json { "status": "success", "data": { // Only non-null values } } ``` ### Detailed Format ```json { "status": "success", "timestamp": "2025-01-29T10:00:00.000Z", "data": { // Full response }, "metadata": { "version": "1.0", "format": "detailed" } } ``` ## Common Use Cases 1. **API Documentation Review** ``` Human: Can you summarize all the available endpoints and their purposes? ``` 2. **Schema Validation** ``` Human: What fields are required for creating a new pet? ``` 3. **Response Analysis** ``` Human: What are the possible error responses for the login endpoint? ``` 4. **Integration Planning** ``` Human: How should I structure my request to create a new order? ``` ## Troubleshooting 1. **Connection Issues** - Ensure the Swagger URL is accessible - Check if authentication token is correct - Verify port is not in use 2. **Authorization Errors** - Verify AUTH_TOKEN is set correctly - Ensure bearer token is included in requests 3. **Schema Not Found** - Check if schema name is exact match - Verify Swagger spec is loaded correctly ## Security Notes 1. The MCP requires authentication if AUTH_TOKEN is set 2. All requests are logged for debugging 3. Sensitive information is not cached 4. Rate limiting is applied to prevent abuse ## Development To contribute or modify: 1. Clone the repository 2. Install dependencies: ```bash npm install ``` 3. Build: ```bash npm run build ``` 4. Run locally: ```bash npm start ``` ## License MIT License - See LICENSE file for details