Skip to content
MCP Server Directory logo
automation-scripting

Cloudflare Api Mcp

Lightweight MCP server to give your Cursor Agent access to the Cloudflare API.

Reviewed overview

MCP server overview

# cloudflare-api-mcp

This is a lightweight Model Control Protocol (MCP) server bootstrapped with [create-mcp](https://github.com/zueai/create-mcp) and deployed on Cloudflare Workers.

This MCP server allows agents (such as Cursor) to interface with the [Cloudflare REST API](https://developers.cloudflare.com/api/).

It’s still under development, I will be adding more tools as I find myself needing them.

Available Tools

See [src/index.ts](src/index.ts) for the current list of tools. Every method in the class is an MCP tool.

Installation

  1. Run the automated install script to clone this MCP server and deploy it to your Cloudflare account:

```bash bun create mcp --clone https://github.com/zueai/cloudflare-api-mcp ```

  1. Open `Cursor Settings -> MCP -> Add new MCP server` and paste the command that was copied to your clipboard.

  2. Upload your Cloudflare API key and email to your worker secrets:

```bash bunx wrangler secret put CLOUDFLARE_API_KEY bunx wrangler secret put CLOUDFLARE_API_EMAIL ```

Local Development

Add your Cloudflare API key and email to the `.dev.vars` file:

```bash CLOUDFLARE_API_KEY=<your-cloudflare-api-key> CLOUDFLARE_API_EMAIL=<your-cloudflare-api-email> ```

Deploying

  1. Run the deploy script:

```bash bun run deploy ```

  1. Reload your Cursor window to see the new tools.

How to Create New MCP Tools

To create new MCP tools, add methods to the `MyWorker` class in `src/index.ts`. Each function will automatically become an MCP tool that your agent can use.

Example:

```typescript /** * Create a new DNS record in a zone. * @param zoneId {string} The ID of the zone to create the record in. * @param name {string} The name of the DNS record. * @param content {string} The content of the DNS record. * @param type {string} The type of DNS record (CNAME, A, TXT, or MX). * @param comment {string} Optional comment for the DNS record. * @param proxied {boolean} Optional whether to proxy the record through Cloudflare. * @return {object} The created DNS record. */ createDNSRecord(zoneId: string, name: string, content: string, type: string, comment?: string, proxied?: boolean) { // Implementation } ```

The JSDoc comments are important:

  • First line becomes the tool’s description
  • `@param` tags define the tool’s parameters with types and descriptions
  • `@return` tag specifies the return value and type

Learn More