Built with FastMCP for TypeScript.
- π― 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
 
npm install -g specbridgemkdir ~/mcp-apisDrop 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.jsonCreate 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_keyFor 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-specsThe 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_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 createdThis creates tools named:
example_getUserexample_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--specsargument and other file paths. Relative paths or paths containing spaces may cause issues on some platforms or with some MCP clients.
- Verify your 
.envfile 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 ./examplesContributions are welcome! Please feel free to submit issues and pull requests.