Skip to main content
Glama

CF-MCP: REST API + MCP Server on Cloudflare Workers

A single Cloudflare Worker that serves both a REST API and an MCP (Model Context Protocol) interface.

Architecture

┌─────────────────────────────────────┐ │ Cloudflare Worker (Edge) │ │ │ │ ┌────────────────────────────────┐ │ │ │ Hono Router │ │ │ │ │ │ │ │ /api/* ─── REST API │ │ │ │ │ │ │ │ /mcp ─── MCP Protocol │ │ │ │ (wraps REST) │ │ │ └────────────────────────────────┘ │ └─────────────────────────────────────┘

Features

REST API Endpoints

  • GET /api/products - List all products (with filtering)

  • GET /api/products/:id - Get a single product

  • POST /api/products - Create a new product

  • PUT /api/products/:id - Update a product

  • DELETE /api/products/:id - Delete a product

MCP Tools

The MCP endpoint wraps all REST operations as tools:

  • list_products - Query products with filters

  • get_product - Retrieve product details

  • create_product - Add new products

  • update_product - Modify existing products

  • delete_product - Remove products

Getting Started

Install Dependencies

npm install

Run Locally

npm run dev

The server will start at http://localhost:8787

Test REST API

# List all products curl http://localhost:8787/api/products # Get a specific product curl http://localhost:8787/api/products/1 # Filter by category curl http://localhost:8787/api/products?category=Electronics # Create a product curl -X POST http://localhost:8787/api/products \ -H "Content-Type: application/json" \ -d '{"name":"Laptop","price":999,"description":"Powerful laptop","category":"Electronics"}'

Test MCP Endpoint

# List available tools curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"method":"tools/list","params":{}}' # Call a tool curl -X POST http://localhost:8787/mcp \ -H "Content-Type: application/json" \ -d '{"method":"tools/call","params":{"name":"list_products","arguments":{"category":"Electronics"}}}'

Deploy to Cloudflare

npm run deploy

After deployment, your API will be available globally on Cloudflare's edge network!

Key Patterns Demonstrated

1. REST-to-MCP Translation

Each REST endpoint maps to an MCP tool:

  • REST parameters → MCP tool arguments

  • REST responses → MCP tool results

  • REST authentication → MCP tool context

2. Edge Deployment

  • Single worker serves both interfaces

  • Global distribution via Cloudflare's network

  • Low latency for both REST and MCP calls

3. Unified Codebase

  • Share business logic between REST and MCP

  • DRY principle: define operations once

  • Easy to maintain and extend

Project Structure

cf-mcp/ ├── src/ │ ├── index.ts # Main Hono app + routing │ ├── api.ts # REST API endpoints │ └── mcp.ts # MCP protocol handler ├── wrangler.toml # Cloudflare config ├── package.json └── tsconfig.json

Next Steps

  1. Add authentication (API keys, OAuth)

  2. Implement rate limiting

  3. Add caching with Cloudflare KV

  4. Connect to Cloudflare D1 for persistent storage

  5. Add streaming responses

  6. Implement pagination

Learn More

Course Title

"From the Edge and Back: Turn Any REST API into an MCP Server"

A practical, code-heavy session showing how to wrap any REST API with the Model Context Protocol and deploy it to Cloudflare Workers for lightning-fast, globally distributed access.

-
security - not tested
F
license - not found
-
quality - not tested

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/HeyGarrison/cf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server