Labsco
TBosak logo

SpecBridge

โ˜… 7

from TBosak

Automatically generates MCP tools from OpenAPI specifications by scanning a folder for spec files. No configuration is needed and it supports authentication via environment variables.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredNeeds API keys

SpecBridge

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

๐Ÿ”‘ Authentication Patterns

The server automatically detects authentication from environment variables using these patterns:

PatternAuth TypeUsage
{API_NAME}_API_KEY๐Ÿ—๏ธ API KeyX-API-Key header
{API_NAME}_TOKEN๐ŸŽซ Bearer TokenAuthorization: Bearer {token}
{API_NAME}_BEARER_TOKEN๐ŸŽซ Bearer TokenAuthorization: Bearer {token}
{API_NAME}_USERNAME + {API_NAME}_PASSWORD๐Ÿ‘ค Basic AuthAuthorization: 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

๐Ÿท๏ธ 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

๐Ÿ› ๏ธ 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