
Specbridge
An MCP server that automatically converts OpenAPI specifications into MCP tools by scanning a folder for spec files, requiring no configuration files or separate servers.
README
<h1 align="center">SpecBridge <p> <a href="https://glama.ai/mcp/servers/@TBosak/specbridge"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@TBosak/specbridge/badge" alt="Specbridge MCP server" /> </a> </p> </h1>
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
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:
{
"mcpServers": {
"specbridge": {
"command": "specbridge",
"args": ["--specs", "/path/to/your/specs/folder"]
}
}
}
6️⃣ Restart your MCP client
That's it! Your OpenAPI specs are now available as MCP tools. ✅
💻 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.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 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 created
This creates tools named:
example_getUser
example_createUser
🔧 Troubleshooting
❌ No tools appearing?
-
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
--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?
- Verify your
.env
file is in the specs directory - Check 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.