cloudflare-my-remote-mcp-server

endou-mame/cloudflare-my-remote-mcp-server

3.2

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

  1. echo

    Echo back input text

  2. get_time

    Get current timestamp

  3. random_number

    Generate random number between min and max