MCP Connector

Generate API Tools from OpenAPI Specs

Specbridge turns any OpenAPI spec dropped in a folder into ready-to-use MCP tools, with zero configuration and automatic authentication detection.


90
Spark score
out of 100
Updated 4 months ago
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Automatically convert OpenAPI specifications into executable MCP tools. This asset scans a folder of specification files and generates corresponding tools without requiring additional configuration.

Outcomes

What it gets done

01

Scan OpenAPI specifications from a specified folder.

02

Generate API tools based on detected specifications.

03

Support for multiple authentication methods via environment variables.

04

Debug and list loaded specifications and tools.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-specbridge | bash

Capabilities

Tools your agent gets

example_getUser

Get a user by ID (generated from OpenAPI specification)

example_createUser

Create a new user (generated from OpenAPI specification)

Overview

Specbridge MCP Server

Specbridge auto-generates MCP tools from OpenAPI specification files dropped into a folder, with automatic authentication detection from environment variables and namespace isolation so multiple APIs can coexist. Use it to give an AI assistant tool access to REST APIs that already have OpenAPI specs, without custom wrapper code. It only works for APIs with a valid OpenAPI spec - there's no tool generation without one.

What it does

Specbridge is an MCP server, built with FastMCP for TypeScript, that turns OpenAPI specifications into MCP tools automatically. It scans a folder for .json, .yaml, or .yml OpenAPI spec files and generates corresponding tools with no configuration files or separate server setup required - the filesystem is the interface. It supports namespace isolation so multiple APIs coexist cleanly (e.g. petstore_getPet, github_getUser), full OpenAPI handling of parameters, request bodies, authentication, and responses, both stdio and HTTP-streaming transports, and a built-in specbridge list command for debugging loaded specs and tools.

mkdir ~/mcp-apis
curl -o ~/mcp-apis/petstore.json https://petstore3.swagger.io/api/v3/openapi.json
specbridge --specs ~/mcp-apis

Tools are named automatically: {api_name}_{operationId} when the spec defines an operationId, or {api_name}_{method}_{path_segments} otherwise (e.g. github_get_user_repos from GET /user/repos). Authentication is auto-detected from environment variables in a .env file placed in the specs folder, using naming patterns derived from the spec's filename: {API_NAME}_API_KEY for an X-API-Key header, {API_NAME}_TOKEN or {API_NAME}_BEARER_TOKEN for a Bearer Authorization header, and {API_NAME}_USERNAME/{API_NAME}_PASSWORD for Basic Auth.

When to use - and when NOT to

Use it when you want to expose one or more existing REST APIs (that already have OpenAPI/Swagger specs) as MCP tools for an AI assistant without writing custom tool wrappers - just drop the spec files in a folder and point the server at it. It is not useful for APIs without an OpenAPI specification, since tool generation depends entirely on the spec's operations and schemas being present and valid; if no tools appear, the project's troubleshooting guidance is to run specbridge list to check for parsing errors and confirm the spec file extension is correct.

Inputs and outputs

Input is a folder of OpenAPI spec files (and an optional .env file for credentials). Output is one auto-generated MCP tool per API operation, callable by name (e.g. example_getUser, example_createUser), registered with the MCP client and ready to invoke with the parameters/request body defined in the spec.

How to install

npm install -g specbridge

Then register it in Claude Desktop or Cursor's MCP configuration, pointing --specs at your specs folder:

{
  "mcpServers": {
    "specbridge": {
      "command": "specbridge",
      "args": ["--specs", "/path/to/your/specs/folder"]
    }
  }
}

Or run it without a global install via npx -y specbridge --specs /absolute/path/to/your/specs. Use absolute paths without spaces for the --specs argument to avoid platform/client compatibility issues. Restart the MCP server after adding or changing spec files to reload tools.

Who it's for

Developers who want to give an AI assistant tool access to existing REST APIs with OpenAPI specs - internal services, third-party APIs like GitHub or a Petstore-style demo API - without writing and maintaining custom MCP tool code for each endpoint.

Source README

SpecBridge

Verified on MseeP

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.

✨ Features

  • 🎯 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

🚀 Quick Start

1️⃣ Install (optional)

npm install -g specbridge

2️⃣ Create a specs folder

mkdir ~/mcp-apis

3️⃣ 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.json

4️⃣ 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_key

5️⃣ 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_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.jsonPETSTORE_API_KEY
  • github-api.yamlGITHUB_TOKEN
  • my_custom_api.ymlMYCUSTOMAPI_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 from GET /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 created

This creates tools named:

  • example_getUser
  • example_createUser

🔧 Troubleshooting

❌ No tools appearing?

  1. Check that your OpenAPI specs are valid:

    specbridge list --specs /path/to/specs
    
  2. Ensure files have correct extensions (.json, .yaml, .yml)

  3. 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.

🔐 Authentication not working?

  1. Verify your .env file is in the specs directory
  2. Check the naming pattern matches your spec filename
  3. Use the list command to verify auth configuration:
    specbridge list
    

🔄 Tools not updating after spec changes?

  1. Restart the MCP server to reload the specs
  2. Check file permissions
  3. 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.

Specbridge MCP server

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.