<p align="center"> <img src="./docs/assets/mcp-bridge-mark.svg" alt="MCP Bridge" width="120" height="120" /> </p>
<h1 align="center">MCP Bridge</h1>
<p align="center"><strong>Turn internal APIs and cURL workflows into local MCP tools for AI agents.</strong></p>
<p align="center"> MCP Bridge helps teams convert existing HTTP operations into structured, local-first MCP tools that Claude Desktop, Cursor, Zed, and other MCP clients can safely call. </p>
<p align="center"> <a href="./README.md">English</a> · <a href="./README.zh-CN.md">简体中文</a> </p>
<p align="center"> <a href="https://github.com/ainativeera/mcp-bridge/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/ainativeera/mcp-bridge/ci.yml?branch=main&label=CI&style=flat-square"></a> <a href="https://github.com/ainativeera/mcp-bridge/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/ainativeera/mcp-bridge?style=flat-square"></a> <a href="https://github.com/ainativeera/mcp-bridge/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/ainativeera/mcp-bridge?style=flat-square"></a> <a href="https://github.com/ainativeera/mcp-bridge/issues"><img alt="Issues" src="https://img.shields.io/github/issues/ainativeera/mcp-bridge?style=flat-square"></a> </p>
<p align="center"> <a href="https://github.com/ainativeera/mcp-bridge">GitHub</a> · <a href="#getting-started">Getting Started</a> · <a href="#suggested-mcp-client-config">MCP Config</a> · <a href="./CONTRIBUTING.md">Contributing</a> · <a href="./SECURITY.md">Security</a> </p>
MCP Bridge is designed for real-world office automation scenarios where teams already have working cURL commands and want to convert them into safer, reusable, and agent-friendly tools without rebuilding integrations from scratch.
Why MCP Bridge
- Import existing cURL commands instead of rebuilding integrations from scratch
- Define MCP-friendly parameter schemas and response descriptions
- Run a local MCP SSE server for desktop AI clients
- Test, debug, and iterate on tools before exposing them to agents
- Package the experience as a desktop app for non-technical users
Core Capabilities
- cURL import: parse common request shapes into editable MCP tools
- Tool editor: configure method, URL, headers, body, parameters, and output fields
- Response shaping: extract the useful parts of large JSON responses
- Local persistence: store tools and logs in SQLite
- MCP transport: expose tools through a local SSE endpoint
- Desktop packaging: ship as an Electron app for macOS and Windows
Use Cases
- Turn internal approval or CRM APIs into agent-callable tools
- Wrap repetitive office workflows behind stable MCP actions
- Prototype agent integrations against existing APIs quickly
- Give AI assistants safe, structured access to business operations
Screenshots
cURL to MCP workflow
Local MCP configuration
Architecture
React UI
-> Electron desktop shell
-> Local Express server
-> SQLite storage
-> MCP SSE endpoint
-> External APIs imported from cURL definitions
Key entry points:
src/App.tsx: main application UIserver.ts: local Express server and MCP SSE implementationelectron-main.ts: Electron main process and desktop bridgesrc/db.ts: SQLite persistence layer
Getting Started
Prerequisites
- Node.js 20 or newer
- npm 10 or newer recommended
- macOS for mac desktop packaging
- Windows for native Windows validation, or macOS with Electron Builder cross-packaging support
Install
npm install
Run The Web App
npm run dev
Open:
http://localhost:3000
Run The Desktop App In Development
npm run electron:dev
Build
npm run build
Create Desktop Packages
npm run dist:mac
npm run dist:win
Quality Checks
npm run check
Environment Variables
Copy .env.example to .env and adjust as needed.
Important values:
PORT: local HTTP and SSE portNODE_ENV: development or productionDB_PATH: SQLite database locationAPI_KEY: optional API key for protecting local MCP accessRATE_LIMIT_WINDOW_MS: API rate limiting windowRATE_LIMIT_MAX_REQUESTS: max requests allowed in the windowCORS_ORIGINS: comma-separated originsLOG_LEVEL: logger verbosity
MCP Endpoint
When the server is running locally, the SSE endpoint is:
http://localhost:3000/sse
In the packaged desktop app, the UI surfaces the detected local network address to make client setup easier across devices on the same LAN.
Suggested MCP Client Config
{
"mcpServers": {
"mcp-bridge": {
"url": "http://localhost:3000/sse"
}
}
}
If you enable an API key:
{
"mcpServers": {
"mcp-bridge": {
"url": "http://localhost:3000/sse",
"headers": {
"X-API-Key": "your-secret-api-key"
}
}
}
}
Roadmap
- Safer write-action confirmation for high-risk tools
- Better auth templates for API keys, cookies, and OAuth-style flows
- More robust cURL parsing coverage
- Tool publishing workflow with validation and risk levels
- Richer audit logs, replay, and observability
- Reusable connector templates for office SaaS products
Contributing
Contributions are welcome. Start here:
- Read CONTRIBUTING.md
- Review CODE_OF_CONDUCT.md
- Check SECURITY.md for sensitive reports
Community Standards
- Be respectful and constructive
- Prefer small, focused pull requests
- Include reproduction steps for bugs
- Keep office automation and agent safety in mind when proposing features
License
This project is licensed under the MIT License. See LICENSE.











