endou-mame/cloudflare-my-remote-mcp-server
If you are the rightful owner of cloudflare-my-remote-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server implementation running on Cloudflare Workers with Durable Objects.
Cloudflare Remote MCP Server
A Model Context Protocol (MCP) server implementation running on Cloudflare Workers with Durable Objects.
Features
- Remote MCP Server: HTTP Streamable transport-based MCP server accessible over the internet
- Durable Objects: Stateful request processing using Cloudflare Durable Objects
- Sample Tools: Demonstration tools for MCP protocol
- Sample Resources: Static data resources accessible via MCP
- Sample Prompts: Pre-built prompts for AI interactions
- CORS Support: Web-friendly with Cross-Origin Resource Sharing
Architecture
βββββββββββββββββββ HTTP POST + SSE ββββββββββββββββββββ
β MCP Client β ββββββββββββββββΊ β Cloudflare β
β (AI/Claude) β β Worker β
βββββββββββββββββββ βββββββββββ¬βββββββββ
β
βΌ
ββββββββββββββββββββ
β MCPServerObject β
β (Durable Object) β
β β
β β’ MCP Protocol β
β β’ HTTP Processingβ
β β’ Request State β
ββββββββββββββββββββ
Available Capabilities
Tools
- echo: Echo back input text
- get_time: Get current timestamp
- random_number: Generate random number between min and max
Resources
- cloudflare://worker-info: Information about the Cloudflare Worker
- cloudflare://sample-data: Sample JSON data for testing
Prompts
- explain_code: Generate prompts to explain code
- debug_help: Generate prompts for debugging assistance
Deployment
-
Install dependencies:
npm install
-
Deploy to Cloudflare:
npm run deploy
-
Access your MCP server at the deployed URL
Development
-
Start local development:
npm run dev
-
Test the server:
# Get server info curl http://localhost:8787/ # Test MCP endpoint with a simple request curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Usage
HTTP API
GET /
- Server information and capabilitiesPOST /mcp
- MCP HTTP Streamable endpoint
MCP Connection
Connect MCP clients to the HTTP endpoint:
- Local:
http://localhost:8787/mcp
- Production:
https://your-worker.your-subdomain.workers.dev/mcp
Protocol Details
The server uses HTTP Streamable transport:
- Request: HTTP POST with JSON-RPC message in body
- Response: Server-Sent Events (SSE) stream with
text/event-stream
content type - Format: Each response is sent as
data: {JSON}\n\n
Example MCP Messages
List Tools
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
Call Tool
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "echo",
"arguments": {
"text": "Hello, MCP!"
}
}
}'
List Resources
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "resources/list"
}'
Configuration
The server is configured in wrangler.jsonc
:
- Durable Objects:
MCPServerObject
handles stateful MCP request processing - Compatibility Date: Set to current date for latest Cloudflare Workers features
Development Notes
- Uses
@modelcontextprotocol/sdk
for MCP protocol implementation - HTTP requests are processed by Durable Objects for state management
- Responses are streamed using Server-Sent Events (SSE)
- CORS is enabled for web client compatibility
- Error handling includes JSON-RPC error responses
- TypeScript with strict mode enabled
Transport Protocol
This implementation uses HTTP Streamable transport instead of WebSocket:
- More compatible with proxies and firewalls
- Uses standard HTTP semantics
- Supports Server-Sent Events for real-time responses
- Better suited for stateless cloud environments
License
This is a sample implementation for educational purposes.