Skip to main content
Glama

MCP Server on Cloudflare Workers & Azure Functions

by TedTschopp
README.md•5.15 kB
# MCP Server on Cloudflare Workers & Azure Functions A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that can be deployed to **Cloudflare Workers** or **Azure Functions**. This server provides tools, prompts, and resources that can be accessed via the MCP protocol, enabling AI assistants to interact with your deployed services. ## Features - šŸš€ Deployed on Cloudflare Workers (edge computing) - šŸ”§ Example tools: `get_time`, `echo`, `add` - 🌐 HTTP endpoints for health checks and MCP requests - šŸ“¦ TypeScript with full type safety - šŸ”„ Local development with Wrangler ## Prerequisites - Node.js 18+ installed - A Cloudflare account (free tier works) - npm or yarn package manager ## Installation Install dependencies: ```bash npm install ``` ## Development Run the development server locally: ```bash npm run dev ``` This will start a local Cloudflare Workers environment at `http://localhost:8787` ## Available Endpoints ### Health Check ```bash GET http://localhost:8787/health ``` Returns server status and version information. ### MCP Protocol Endpoint ```bash POST http://localhost:8787/mcp Content-Type: application/json { "method": "tools/list" } ``` ### Available Capabilities #### Tools The server includes three example tools with change notifications: 1. **get_time**: Returns the current server time 2. **echo**: Echoes back your message 3. **add**: Adds two numbers together #### Prompts The server includes five prompt templates with change notifications: 1. **code_review**: Get assistance reviewing code 2. **explain_concept**: Get explanations of technical concepts 3. **debug_helper**: Get help debugging issues 4. **api_design**: Get guidance on API design 5. **refactor_suggestion**: Get suggestions for refactoring code #### Resource Access The server provides contextual information through resources: 1. **config://server/info**: Server metadata and configuration 2. **config://server/status**: Current server status and metrics 3. **docs://mcp/getting-started**: Getting started guide Resources support: - **Subscriptions**: Clients can subscribe to resource changes - **Templates**: Parameterized resources (e.g., `log://{level}/{message}`) - **Multiple MIME types**: JSON and Markdown content #### Logging Configurable logging with support for standard log levels: - debug, info, notice, warning, error, critical, alert, emergency ## Deployment ### Option 1: Cloudflare Workers (Recommended for Edge) #### 1. Login to Cloudflare ```bash npx wrangler login ``` #### 2. Deploy to Cloudflare Workers ```bash npm run deploy ``` Your MCP server will be deployed and you'll receive a URL like: `https://mcp-server.<your-subdomain>.workers.dev` ### Option 2: Azure Functions (Recommended for Azure Ecosystem) For detailed Azure deployment instructions, see [AZURE_DEPLOYMENT.md](./AZURE_DEPLOYMENT.md). #### Quick Start ```bash # Install dependencies npm install # Login to Azure az login # Deploy to Azure Functions npm run deploy:azure ``` Your MCP server will be available at: `https://<your-function-app>.azurewebsites.net` ## Testing Deployed Server ```bash # Health check curl https://mcp-server.<your-subdomain>.workers.dev/health # Test MCP endpoint curl -X POST https://mcp-server.<your-subdomain>.workers.dev/mcp \ -H "Content-Type: application/json" \ -d '{"method": "tools/list"}' ``` ## Project Structure ``` . ā”œā”€ā”€ src/ │ └── index.ts # Main server implementation ā”œā”€ā”€ .github/ │ └── copilot-instructions.md ā”œā”€ā”€ package.json # Dependencies and scripts ā”œā”€ā”€ tsconfig.json # TypeScript configuration ā”œā”€ā”€ wrangler.toml # Cloudflare Workers config └── README.md # This file ``` ## Adding New Tools To add a new tool, edit `src/index.ts`: 1. Add tool definition in `ListToolsRequestSchema` handler 2. Add tool implementation in `CallToolRequestSchema` handler Example: ```typescript // In ListToolsRequestSchema handler { name: 'my_tool', description: 'Description of what it does', inputSchema: { type: 'object', properties: { param1: { type: 'string', description: 'Parameter description', }, }, required: ['param1'], }, } // In CallToolRequestSchema handler case 'my_tool': return { content: [ { type: 'text', text: `Result: ${args.param1}`, }, ], }; ``` ## Configuration ### Cloudflare Workers Settings Edit `wrangler.toml` to configure: - Worker name - Compatibility date - KV namespaces (for storage) - D1 databases (for SQL) - Environment variables ## Troubleshooting ### Build Errors Check TypeScript types: ```bash npm run types ``` ### Deployment Issues View deployment logs: ```bash npx wrangler tail ``` ## Resources - [Model Context Protocol](https://modelcontextprotocol.io) - [Cloudflare Workers Docs](https://developers.cloudflare.com/workers/) - [Wrangler CLI Docs](https://developers.cloudflare.com/workers/wrangler/) - [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) ## License MIT

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/TedTschopp/MCP-Server-on-CloudFlare'

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