Built with FastMCP for TypeScript.
- π― Zero Configuration: Filesystem is the interface - just drop OpenAPI specs in a folder
- π Auto Authentication: Simple
.env
file with{API_NAME}_API_KEY
pattern - π·οΈ Namespace Isolation: Multiple APIs coexist cleanly (e.g.,
petstore_getPet
,github_getUser
) - π Full OpenAPI Support: Handles parameters, request bodies, authentication, and responses
- π Multiple Transports: Support for stdio and HTTP streaming
- π Built-in Debugging: List command to see loaded specs and tools
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"]
}
}
}
# 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:
- With operationId:
{api_name}_{operationId}
- Without operationId:
{api_name}_{method}_{path_segments}
Examples:
petstore_getPetById
(from operationId)github_get_user_repos
(generated fromGET /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.
- Verify your
.env
file is in the specs directory - Check the naming pattern matches your spec filename
- Use the list command to verify auth configuration:
specbridge list
- Restart the MCP server to reload the specs
- Check file permissions
- Restart the MCP client if needed
# 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.