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.
The Cloudflare Remote MCP Server is a robust implementation of the Model Context Protocol (MCP) designed to operate on Cloudflare Workers, leveraging Durable Objects for stateful request processing. This server provides a remote MCP service accessible over the internet using HTTP Streamable transport, which is more compatible with proxies and firewalls compared to WebSocket. It supports Server-Sent Events (SSE) for real-time responses, making it ideal for stateless cloud environments. The server is equipped with sample tools and resources to demonstrate the MCP protocol's capabilities, and it includes pre-built prompts for AI interactions. With CORS support, it is web-friendly and can be easily integrated with various web clients. The server is configured using `wrangler.jsonc` and is developed with TypeScript, ensuring strict type checking and error handling through JSON-RPC error responses.
Features
- Remote MCP Server accessible over the internet
- Stateful request processing using Cloudflare Durable Objects
- Sample tools and resources for MCP protocol demonstration
- Pre-built prompts for AI interactions
- CORS support for web client compatibility
Usages
usage with cloudflare
# 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 ## Deployment 1. Install dependencies: bash npm install 2. Deploy to Cloudflare: bash npm run deploy 3. Access your MCP server at the deployed URL ## Development 1. Start local development: bash npm run dev 2. Test the server: bash # 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 capabilities - `POST /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 bash curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }' #### Call Tool bash 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 bash 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.
Tools
echo
Echo back input text
get_time
Get current timestamp
random_number
Generate random number between min and max