@abhishekkumar00019/swagger-mcp
README.md
# @abhishekkumar00019/swagger-mcp
[](https://www.npmjs.com/package/@abhishekkumar00019/swagger-mcp)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io)
> A dynamic [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that converts any Swagger 2.0 or OpenAPI 3.x specification into callable MCP tools on the fly.
Point it at any OpenAPI/Swagger JSON or YAML spec URL, and every API endpoint automatically becomes an interactive tool for Claude, Copilot, ChatGPT, Cursor, Windsurf, and other MCP-enabled clients.
---
## ⨠Features
- š **Dynamic Tool Generation** ā Automatically parses Swagger 2.0 & OpenAPI 3.x specs at startup.
- š ļø **Zero Boilerplate** ā Give it a spec URL and every endpoint is instantly exposed as an MCP tool.
- š **Flexible Auth Support** ā Bearer Tokens, API Keys, and Basic Auth configured effortlessly via env vars or CLI flags.
- š **Smart Base URL Resolution** ā Auto-derives base URL from config ā spec server definition ā spec origin URL.
- š **Hot Reloading** ā Re-fetch and re-parse the spec live at runtime using the `_swagger_mcp_reload` tool.
- š **Rich Schemas & Descriptions** ā Translates OpenAPI parameters and request bodies into strict JSON schemas for precise LLM tool calling.
- ā±ļø **Configurable Timeouts & Custom Headers** ā Easily set custom request headers and request timeout thresholds.
---
## š Quick Start
### Option A: Direct via `npx` (No Installation Required)
```bash
SWAGGER_MCP_SPEC_URL=https://petstore.swagger.io/v2/swagger.json npx @abhishekkumar00019/swagger-mcp
```
### Option B: Global NPM Installation
```bash
npm install -g @abhishekkumar00019/swagger-mcp
SWAGGER_MCP_SPEC_URL=https://petstore.swagger.io/v2/swagger.json swagger-mcp
```
### Option C: Local Repository Setup
1. **Clone & Install Dependencies:**
```bash
git clone https://github.com/itachiuchihadev/swagger-mcp.git
cd swagger-mcp
npm install
```
2. **Build the Project:**
```bash
npm run build
```
3. **Run locally:**
```bash
SWAGGER_MCP_SPEC_URL=https://petstore.swagger.io/v2/swagger.json node dist/index.js
```
---
## āļø MCP Client Configurations
Below are sample configurations for popular MCP clients using `npx @abhishekkumar00019/swagger-mcp`.
### 1. Claude Desktop
Add to your `claude_desktop_config.json`:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json",
"SWAGGER_MCP_BEARER_TOKEN": "your-api-token-here"
}
}
}
}
```
---
### 2. Claude Code (CLI)
Add directly via the Claude Code CLI:
```bash
claude mcp add swagger-mcp -- npx -y @abhishekkumar00019/swagger-mcp --spec-url https://petstore.swagger.io/v2/swagger.json
```
Or add to `.mcp.json` in your project root:
```json
{
"mcpServers": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
```
---
### 3. GitHub Copilot / VS Code
Add to `.vscode/mcp.json` in your workspace or global VS Code settings:
```json
{
"server": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json",
"SWAGGER_MCP_API_KEY": "your-api-key"
}
}
}
}
```
---
### 4. Cursor
Add to `.cursor/mcp.json` or configure in **Cursor Settings ā Features ā MCP**:
```json
{
"mcpServers": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
```
---
### 5. Windsurf
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
```
---
### 6. Roo Code / Cline (VS Code Extension)
Add to `cline_mcp_settings.json` (or `roo_code_mcp_settings.json`):
```json
{
"mcpServers": {
"swagger-mcp": {
"command": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"],
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
```
---
### 7. ChatGPT & OpenAI (Custom GPTs / Assistants / API)
**Direct OpenAPI Spec Import (Native Custom GPT Actions):**
ChatGPT Custom GPTs support OpenAPI specifications natively. You can directly import your Swagger/OpenAPI JSON/YAML spec URL in the **Actions** section of the Custom GPT Builder without needing an intermediate server.
**Via MCP HTTP/SSE Gateway:**
If connecting ChatGPT or OpenAI agents to this MCP server via an HTTP/SSE bridge (e.g., using `supergateway` or `mcp-remote`), start `swagger-mcp` with an SSE proxy:
```bash
npx supergateway --stdio "npx -y @abhishekkumar00019/swagger-mcp --spec-url https://petstore.swagger.io/v2/swagger.json" --port 8000
```
---
### 8. Zed Editor
Add to `~/.config/zed/settings.json`:
```json
{
"context_servers": {
"swagger-mcp": {
"command": {
"path": "npx",
"args": ["-y", "@abhishekkumar00019/swagger-mcp"]
},
"env": {
"SWAGGER_MCP_SPEC_URL": "https://petstore.swagger.io/v2/swagger.json"
}
}
}
}
```
---
## š§ Configuration Reference
All configuration parameters can be supplied via environment variables or CLI arguments. **`SWAGGER_MCP_SPEC_URL` is the only required parameter.**
| Environment Variable | CLI Argument | Required | Default | Description |
|---|---|---|---|---|
| `SWAGGER_MCP_SPEC_URL` | `--spec-url` | Yes | ā | Swagger/OpenAPI spec URL |
| `SWAGGER_MCP_BASE_URL` | `--base-url` | No | Auto-derived | Override target API base URL |
| `SWAGGER_MCP_BEARER_TOKEN` | `--bearer-token` | No | ā | Bearer token for `Authorization: Bearer <token>` |
| `SWAGGER_MCP_API_KEY` | `--api-key` | No | ā | API Key header value |
| `SWAGGER_MCP_API_KEY_HEADER` | `--api-key-header` | No | `X-API-Key` | Custom header name for API Key |
| `SWAGGER_MCP_BASIC_USER` | `--basic-user` | No | ā | Username for Basic Auth |
| `SWAGGER_MCP_BASIC_PASS` | `--basic-pass` | No | ā | Password for Basic Auth |
| `SWAGGER_MCP_TIMEOUT` | `--timeout` | No | `30000` | HTTP request timeout in milliseconds |
| `SWAGGER_MCP_HEADERS` | `--headers` | No | `{}` | Extra HTTP headers as JSON string |
---
### š Authentication Examples
Multiple authentication methods can be set simultaneously:
```bash
# Bearer Token
SWAGGER_MCP_BEARER_TOKEN=sk-your-token-here
# API Key (Custom Header)
SWAGGER_MCP_API_KEY=your-api-key
SWAGGER_MCP_API_KEY_HEADER=X-Custom-Key
# Basic Auth
SWAGGER_MCP_BASIC_USER=admin
SWAGGER_MCP_BASIC_PASS=secret123
```
> [!NOTE]
> If both Bearer and Basic Auth are specified, Basic Auth will overwrite the `Authorization` header. Combine Bearer Token with API Key headers if multiple headers are required.
---
## š·ļø Tool Naming Strategy
Endpoints from your OpenAPI spec are converted into MCP tools using the following priority order:
| Priority | Source | Example |
|---|---|---|
| **1st** | `operationId` defined in spec | `getUserById` |
| **2nd** | Tag + Method + Path | `users_get_by_id` |
| **3rd** | Method + Path | `get_api_v1_users_by_id` |
---
## š§° Built-in Meta Tools
| Tool | Description |
|---|---|
| `_swagger_mcp_reload` | Re-fetches and parses the Swagger spec live. Useful when developing or updating APIs without restarting the server. |
---
## š Project Structure
```text
swagger-mcp/
āāā package.json
āāā tsconfig.json
āāā src/
ā āāā index.ts # Entry point & CLI argument parser
ā āāā server.ts # MCP server initialization & tool registration
ā āāā swagger-parser.ts # OpenAPI 2.0/3.x spec fetcher & parser
ā āāā tool-builder.ts # Converts OpenAPI operations -> JSON Schema tools
ā āāā request-handler.ts # Proxies MCP tool calls to HTTP endpoints
ā āāā auth.ts # Authentication header builder
ā āāā config.ts # Environment & CLI configuration manager
ā āāā types.ts # Shared TypeScript interfaces
āāā dist/ # Compiled JavaScript output
```
---
## š License
[MIT](LICENSE)This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues