
SpecBridge
STDIOOpenAPI specifications converter that generates MCP tools from spec files automatically.
OpenAPI specifications converter that generates MCP tools from spec files automatically.
An MCP server that turns OpenAPI specifications into MCP tools. Scan a folder for OpenAPI spec files and automatically generate corresponding tools. No configuration files, no separate servers - just drop specs in a folder and get tools.
Built with FastMCP for TypeScript.
.env
file with {API_NAME}_API_KEY
patternpetstore_getPet
, github_getUser
)npm install -g specbridge
mkdir ~/mcp-apis
Drop any .json
, .yaml
, or .yml
OpenAPI specification files into your specs folder:
# Example: Download the Petstore spec curl -o ~/mcp-apis/petstore.json https://petstore3.swagger.io/api/v3/openapi.json
Create a .env
file in your specs folder:
# ~/mcp-apis/.env PETSTORE_API_KEY=your_api_key_here GITHUB_TOKEN=ghp_your_github_token OPENAI_API_KEY=sk-your_openai_key
For Claude Desktop or Cursor, add to your MCP configuration:
If installed on your machine:
{ "mcpServers": { "specbridge": { "command": "specbridge", "args": ["--specs", "/path/to/your/specs/folder"] } } }
Otherwise:
{ "mcpServers": { "specbridge": { "command": "npx", "args": ["-y", "specbridge", "--specs", "/absolute/path/to/your/specs"] } } }
That's it! Your OpenAPI specs are now available as MCP tools. ✅
# Default: stdio transport, current directory specbridge # Custom specs folder specbridge --specs ~/my-api-specs # HTTP transport mode specbridge --transport httpStream --port 8080
# List all loaded specifications and their tools specbridge list # List specs from custom folder specbridge list --specs ~/my-api-specs
The server automatically detects authentication from environment variables using these patterns:
Pattern | Auth Type | Usage |
---|---|---|
{API_NAME}_API_KEY | 🗝️ API Key | X-API-Key header |
{API_NAME}_TOKEN | 🎫 Bearer Token | Authorization: Bearer {token} |
{API_NAME}_BEARER_TOKEN | 🎫 Bearer Token | Authorization: Bearer {token} |
{API_NAME}_USERNAME + {API_NAME}_PASSWORD | 👤 Basic Auth | Authorization: Basic {base64} |
The {API_NAME}
is derived from the filename of your OpenAPI spec:
petstore.json
→ PETSTORE_API_KEY
github-api.yaml
→ GITHUB_TOKEN
my_custom_api.yml
→ MYCUSTOMAPI_API_KEY
Tools are automatically named using this pattern:
{api_name}_{operationId}
{api_name}_{method}_{path_segments}
Examples:
petstore_getPetById
(from operationId)github_get_user_repos
(generated from GET /user/repos
)your-project/
├── api-specs/ # Your OpenAPI specs folder
│ ├── .env # Authentication credentials
│ ├── petstore.json # OpenAPI spec files
│ ├── github.yaml #
│ └── custom-api.yml #
└── mcp-config.json # MCP client configuration
Here's a minimal example that creates two tools:
# ~/mcp-apis/example.yaml openapi: 3.0.0 info: title: Example API version: 1.0.0 servers: - url: https://api.example.com paths: /users/{id}: get: operationId: getUser summary: Get user by ID parameters: - name: id in: path required: true schema: type: string responses: '200': description: User found /users: post: operationId: createUser summary: Create a new user requestBody: required: true content: application/json: schema: type: object properties: name: type: string email: type: string responses: '201': description: User created
This creates tools named:
example_getUser
example_createUser
Check that your OpenAPI specs are valid:
specbridge list --specs /path/to/specs
Ensure files have correct extensions (.json
, .yaml
, .yml
)
Check the server logs for parsing errors
⚠️ Note: Specbridge works best when you use absolute paths (with no spaces) for the
--specs
argument and other file paths. Relative paths or paths containing spaces may cause issues on some platforms or with some MCP clients.
.env
file is in the specs directoryspecbridge list
# Clone and install git clone https://github.com/TBosak/specbridge.git cd specbridge npm install # Build npm run build # Test locally npm run dev -- --specs ./examples
Contributions are welcome! Please feel free to submit issues and pull requests.