Swagger Explorer MCP
by johnneerdael
# 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