mcp-bridge-cf
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-bridge-cfwhat tools are available?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Bridge — Dynamic Tool Gateway
A generic bridge between any MCP client and any tool provider via Cloudflare Workers Durable Objects. Each room gets an isolated Durable Object instance. Tool providers connect via WebSocket, MCP clients connect via Streamable HTTP. Tools are registered dynamically and discovered automatically.
How It Works
┌─────────────────┐ WebSocket ┌──────────────────────┐ HTTP/SSE ┌──────────────┐
│ Tool Provider │ ───────────→ │ Cloudflare Worker │ ──────────→ │ MCP Client │
│ (Extension, │ │ (Durable Object) │ │ (VS Code, │
│ App, Script) │ register │ │ tools/list │ Claude, │
│ │ tools │ dynamic registry │ tools/call │ Cursor) │
│ execute │─────────────→│ + bridge │───────────→│ │
│ tools │←─────────────│ forward calls │←───────────│ AI agent │
│ │ callTool │ │ │ │
└─────────────────┘ └──────────────────────┘ └──────────────┘Related MCP server: Remote MCP Server on Cloudflare
Quick Start
1. Deploy
git clone https://github.com/kelvinzer0/mcp-bridge-cf
cd mcp-bridge-cf
npm install
npx wrangler login
npm run deploy2. Create a Room
curl https://mcp-bridge.<subdomain>.workers.dev/newResponse:
{
"room": "ab1fe4c7",
"extension_url": "https://mcp-bridge.<subdomain>.workers.dev/ws/extension?room=ab1fe4c7",
"mcp_url": "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7",
"health_url": "https://mcp-bridge.<subdomain>.workers.dev/health?room=ab1fe4c7"
}3. Connect Tool Provider
const { extension_url } = await fetch("https://mcp-bridge.<subdomain>.workers.dev/new").then(r => r.json())
const ws = new WebSocket(extension_url)
// Register tools
ws.send(JSON.stringify({
type: "registerTools",
tools: [{ name: "my_tool", description: "...", inputSchema: { ... } }]
}))
// Handle tool calls
ws.onmessage = (event) => {
const msg = JSON.parse(event.data)
if (msg.type === "callTool") {
const result = executeTool(msg.name, msg.params)
ws.send(JSON.stringify({ type: "toolResult", callId: msg.callId, result }))
}
}4. Connect MCP Client
Use the mcp_url from step 2. Setup per client:
OpenCode (opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"browser-bridge": {
"type": "remote",
"url": "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7",
"enabled": true
}
}
}Claude Desktop — Settings → Connectors → Add remote server URL:
https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7Or claude_desktop_config.json:
{
"mcpServers": {
"browser-bridge": {
"command": "npx",
"args": ["mcp-remote", "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7"]
}
}
}Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"browser-bridge": {
"url": "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7"
}
}
}OpenClaw:
openclaw mcp add browser-bridge --url "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7"Or openclaw.json:
{
"mcp": {
"servers": {
"browser-bridge": {
"transport": "sse",
"url": "https://mcp-bridge.<subdomain>.workers.dev/mcp?room=ab1fe4c7"
}
}
}
}Protocol
Tool Provider → Bridge (WebSocket)
Message | Description |
| Register tools |
| Unregister tools |
| Return tool result |
| Ping response |
Bridge → Tool Provider (WebSocket)
Message | Description |
| Execute tool |
| Keepalive |
MCP Client → Bridge (Streamable HTTP)
Standard MCP protocol on /mcp?room=<id>:
POST /mcp?room=<id>— JSON-RPC (initialize, tools/list, tools/call)GET /mcp?room=<id>— SSE stream
Endpoints
Endpoint | Protocol | Description |
| HTTP GET | Generate new room |
| WebSocket | Tool provider connects here |
| Streamable HTTP | MCP client connects here |
| HTTP GET | Room status + tool list |
Example: Browser Extension
See extension-example/ for a Chrome extension that:
Connects to a room via WebSocket
Detects page context (GitHub, Gmail, Notion, etc.)
Registers context-specific tools dynamically
Executes tools in the page DOM
Development
npm run dev # Local dev with wrangler
npm run typecheckSecurity
For production use, add OAuth:
import OAuthProvider from "@cloudflare/workers-oauth-provider"
export default new OAuthProvider({
apiRoute: "/mcp",
apiHandler: ...,
})License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityCmaintenanceA Cloudflare Workers-based MCP server that enables AI models to use custom tools without requiring authentication.
- Flicense-qualityDmaintenanceA template for deploying an authentication-free MCP server on Cloudflare Workers. Enables custom tool creation and connection from MCP clients like Claude Desktop or the Cloudflare AI Playground.
- Alicense-qualityAmaintenanceA hosted HTTP MCP server for Cloudflare Workers that exposes a bundle of tools via a remote /mcp endpoint, enabling Claude-compatible clients to connect without a local server.81BSD Zero Clause
- Flicense-qualityCmaintenanceA remote MCP server deployed on Cloudflare Workers without authentication. Enables connecting MCP tools from AI Playground or Claude Desktop.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kelvinzer0/mcp-bridge-cf'
If you have feedback or need assistance with the MCP directory API, please join our Discord server