规范桥接器
STDIO将OpenAPI规范自动转换为MCP工具
将OpenAPI规范自动转换为MCP工具
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"] } } }
# 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_KEYgithub-api.yaml → GITHUB_TOKENmy_custom_api.yml → MYCUSTOMAPI_API_KEYTools 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_getUserexample_createUserCheck 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
--specsargument 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.