Cloudflare logo — MCP server on Gumloop

Cloudflare

Manage your Cloudflare account, DNS, and Workers.

Talk to Sales

Installation

Get StartedGet Started
1

Create a Gumloop Account

To use this MCP, you need a Gumloop account. If you don't have one yet, you can create one for free.

2

Copy Your Server URL

Copy your MCP server URL and add it to your client. You'll be prompted to authorize on first use.

Tools (3)

  • Docs

    Search the Cloudflare documentation. This tool should be used to answer any question about Cloudflare products or features, including: - Workers, Pages, R2, Images, Stream, D1, Durable Objects, KV, Workflows, Hyperdrive, Queues - AI Search, Workers AI, Vectorize, AI Gateway, Browser Rendering - Zero Trust, Access, Tunnel, Gateway, Browser Isolation, WARP, DDOS, Magic Transit, Magic WAN - CDN, Cache, DNS, Zaraz, Argo, Rulesets, Terraform, Account and Billing Results are returned as semantically similar chunks to the query.

  • Search

    Search the Cloudflare OpenAPI spec. All $refs are pre-resolved inline. Products: ai, cloudforce-one, access, magic, workers, dlp, realtime, devices, email-security, ai-gateway, gateway, intel, email, stream, ai-search, brand-protection, dex, api_gateway, browser-rendering, builds, addressing, rulesets, security-center, settings, logpush, vectorize, firewall, load_balancers, logs, artifacts... (146 total) Types: interface OperationInfo { summary?: string; description?: string; tags?: string[]; parameters?: Array<{ name: string; in: string; required?: boolean; schema?: unknown; description?: string }>; requestBody?: { required?: boolean; content?: Record<string, { schema?: unknown }> }; responses?: Record<string, { description?: string; content?: Record<string, { schema?: unknown }> }>; } interface PathItem { get?: OperationInfo; post?: OperationInfo; put?: OperationInfo; patch?: OperationInfo; delete?: OperationInfo; } declare const spec: { paths: Record<string, PathItem>; }; Examples: // Find endpoints by product async () => { const results = []; for (const [path, methods] of Object.entries(spec.paths)) { for (const [method, op] of Object.entries(methods)) { if (op.tags?.some(t => t.toLowerCase() === 'workers')) { results.push({ method: method.toUpperCase(), path, summary: op.summary }); } } } return results; } // Get endpoint with requestBody schema (refs are resolved) async () => { const op = spec.paths['/accounts/{account_id}/d1/database']?.post; return { summary: op?.summary, requestBody: op?.requestBody }; } // Get endpoint parameters async () => { const op = spec.paths['/accounts/{account_id}/workers/scripts']?.get; return op?.parameters; }

  • Execute

    Execute JavaScript code against the Cloudflare API. First use the 'search' tool to find the right endpoints, then write code using the cloudflare.request() function. Available in your code: interface CloudflareRequestOptions { method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; path: string; query?: Record<string, string | number | boolean | undefined>; body?: unknown; contentType?: string; // Custom Content-Type header (defaults to application/json if body is present) rawBody?: boolean; // If true, sends body as-is without JSON.stringify } interface CloudflareResponse<T = unknown> { success: boolean; status: number; result: T; errors: Array<{ code: number; message: string }>; messages: Array<{ code: number; message: string }>; result_info?: { page: number; per_page: number; total_pages: number; count: number; total_count: number; }; } declare const cloudflare: { request<T = unknown>(options: CloudflareRequestOptions): Promise<CloudflareResponse<T>>; }; declare const accountId: string; // accountId is pre-set to "b968f3db90c2b97603172e1d528b0538" (Revecitycrypto@gmail.com's Account) — use it directly in API paths. Your code must be an async arrow function that returns the result. Example: Worker with bindings (requires multipart/form-data): async () => { const code = `addEventListener('fetch', e => e.respondWith(MY_KV.get('key').then(v => new Response(v || 'none'))));`; const metadata = { body_part: "script", bindings: [{ type: "kv_namespace", name: "MY_KV", namespace_id: "your-kv-id" }] }; const b = `--F${Date.now()}`; const body = [`--${b}`, 'Content-Disposition: form-data; name="metadata"', 'Content-Type: application/json', '', JSON.stringify(metadata), `--${b}`, 'Content-Disposition: form-data; name="script"', 'Content-Type: application/javascript', '', code, `--${b}--`].join("\r\n"); return cloudflare.request({ method: "PUT", path: `/accounts/${accountId}/workers/scripts/my-worker`, body, contentType: `multipart/form-data; boundary=${b}`, rawBody: true }); }

Ship Cloudflare agents in minutes

Connect any AI agent to 100+ MCP servers, zero setup.
Talk to Sales
Gradient