Are you the author? Sign in to claim
MCP (Model Context Protocol) server for exposing Swagger/OpenAPI documentation to AI models like Claude. This tool allow
MCP (Model Context Protocol) server for exposing Swagger/OpenAPI documentation to AI models like Claude. This tool allows AI assistants to explore, understand, and interact with your API documentation seamlessly.
npm install -g @awssam/mcp-swagger
Add to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"swagger": {
"command": "npx",
"args": [
"@awssam/mcp-swagger",
"https://petstore.swagger.io/v2/swagger.json"
]
}
}
}
Option 1: Using claude mcp add command (Recommended)
claude mcp add swagger npx @awssam/mcp-swagger https://petstore.swagger.io/v2/swagger.json
Option 2: Manual Configuration
Add to your Claude CLI configuration file:
Location: ~/.config/claude/config.yaml
mcpServers:
swagger:
command: npx
args:
- "@awssam/mcp-swagger"
- "https://petstore.swagger.io/v2/swagger.json"
Or if installed globally:
mcpServers:
swagger:
command: mcp-swagger
args:
- "https://petstore.swagger.io/v2/swagger.json"
After adding the configuration, restart Claude CLI for the changes to take effect.
export API_URL=https://your-api.com/api-docs
npx @awssam/mcp-swagger
npx @awssam/mcp-swagger https://your-api.com/api-docs
listEndpointsLists all available API endpoints with their HTTP methods and tags.
Parameters:
tag (optional): Filter by specific tagExample:
{
"tag": "users"
}
getEndpointDetailsRetrieves complete details of a specific endpoint including parameters, request body, responses, and schemas.
Parameters:
path (required): Endpoint path (e.g., /users/{id})method (optional): HTTP method (get, post, put, delete, patch)Example:
{
"path": "/users/{id}",
"method": "get"
}
searchEndpointsSearches for endpoints by keyword in paths, descriptions, and tags. Results are sorted by relevance.
Parameters:
query (required): Search termExample:
{
"query": "authentication"
}
getSchemasRetrieves data schemas (DTOs) defined in the API. Without parameters, lists all available schemas.
Parameters:
schemaName (optional): Specific schema name to retrieveExample:
{
"schemaName": "User"
}
listTagsLists all tags used to categorize endpoints in the API.
getEndpointsByTagRetrieves all endpoints associated with a specific tag.
Parameters:
tag (required): Tag nameExample:
{
"tag": "authentication"
}
getApiInfoRetrieves API metadata including title, version, description, servers, contact info, and license.
getSecuritySchemesLists authentication/authorization schemes available (OAuth2, API keys, Bearer tokens, etc.).
getServerUrlsRetrieves available server URLs and their environments (dev, staging, prod, etc.).
validateEndpointPathChecks if an endpoint path exists. If not found, suggests similar paths to help with typos.
Parameters:
path (required): Endpoint path to validateExample:
{
"path": "/users/{id}"
}
getSchemaReferencesFinds all endpoints that use a specific schema. Useful for impact analysis when modifying schemas.
Parameters:
schemaName (required): Schema name to search forExample:
{
"schemaName": "User"
}
generateCurlExampleGenerates a curl command example for a specific endpoint, including headers and sample request body.
Parameters:
path (required): Endpoint pathmethod (required): HTTP methodExample:
{
"path": "/users",
"method": "post"
}
getDeprecatedEndpointsLists all endpoints marked as deprecated. Useful for migration planning.
executeEndpoint✨ NEW - Executes an API endpoint and returns the actual response. Automatically uses required headers from the Swagger spec. Perfect for testing endpoints and fetching real-time data.
Parameters:
path (required): Endpoint path (e.g., /users/{id})method (required): HTTP method (get, post, put, delete, patch)baseUrl (optional): Base server URL (uses Swagger default if not provided)pathParams (optional): Path parameters object (e.g., {"id": "123"})queryParams (optional): Query parameters object (e.g., {"page": 1, "perPage": 10})headers (optional): Custom headers object (e.g., {"Authorization": "Bearer token"})body (optional): Request body for POST/PUT/PATCHExample:
{
"path": "/admin/organizations",
"method": "get",
"baseUrl": "http://localhost:4000",
"queryParams": {
"page": 1,
"perPage": 10
},
"headers": {
"x-dev-code": "ILoveMom"
}
}
Response includes:
success: Boolean indicating if request succeededstatus: HTTP status codestatusText: HTTP status messagedata: Response body (parsed JSON or text)headers: Response headersurl: Full URL that was calledmethod: HTTP method usedsrc/
├── index.js # Entry point & server setup
├── config.js # Configuration management
├── swagger/
│ ├── fetcher.js # Swagger doc fetching & caching
│ └── parser.js # Endpoint, schema, and tag parsing
└── tools/
├── definitions.js # Tool schemas & definitions
└── handlers.js # Tool request handlers
The server accepts the API URL in three ways (in order of precedence):
npx @awssam/mcp-swagger <URL>export API_URL=<URL>http://localhost:3000/api-json# Clone the repository
git clone https://github.com/awssam/mcp-swagger.git
cd mcp-swagger
# Install dependencies
npm install
# Run locally
npm start https://petstore.swagger.io/v2/swagger.json
MIT
Contributions are welcome! Please open an issue or submit a pull request.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows