Handles environment variables through .env files for storing and managing API credentials securely
Enables interaction with GitHub's API, allowing for operations like retrieving user repositories through tools like 'github_getUser'
Provides access to OpenAI's API services through automatic tool generation from OpenAPI specifications
Integrates with Swagger/OpenAPI specifications to automatically convert API definitions into usable MCP tools
Supports parsing of YAML-formatted OpenAPI specifications for tool generation
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Specbridgelist all available API tools from my specs folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Built with FastMCP for TypeScript.
β¨ Features
π― Zero Configuration: Filesystem is the interface - just drop OpenAPI specs in a folder
π Auto Authentication: Simple
.envfile with{API_NAME}_API_KEYpatternπ·οΈ 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
Related MCP server: Emcee
π Quick Start
1οΈβ£ Install (optional)
npm install -g specbridge2οΈβ£ Create a specs folder
mkdir ~/mcp-apis3οΈβ£ Add OpenAPI specs
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.json4οΈβ£ Configure authentication (optional)
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_key5οΈβ£ Add to MCP client configuration
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"]
}
}
}π» CLI Usage
π Start the server
# Default: stdio transport, current directory
specbridge
# Custom specs folder
specbridge --specs ~/my-api-specs
# HTTP transport mode
specbridge --transport httpStream --port 8080π List loaded specs and tools
# List all loaded specifications and their tools
specbridge list
# List specs from custom folder
specbridge list --specs ~/my-api-specsπ Authentication Patterns
The server automatically detects authentication from environment variables using these patterns:
Pattern | Auth Type | Usage |
| ποΈ API Key |
|
| π« Bearer Token |
|
| π« Bearer Token |
|
| π€ Basic Auth |
|
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_KEY
π·οΈ Tool Naming
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)
π File Structure
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π Example OpenAPI Spec
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 createdThis creates tools named:
example_getUserexample_createUser
π§ Troubleshooting
β No tools appearing?
Check that your OpenAPI specs are valid:
specbridge list --specs /path/to/specsEnsure 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.
π Authentication not working?
Verify your
.envfile is in the specs directoryCheck the naming pattern matches your spec filename
Use the list command to verify auth configuration:
specbridge list
π Tools not updating after spec changes?
Restart the MCP server to reload the specs
Check file permissions
Restart the MCP client if needed
π οΈ Development
# 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π€ Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.