Manage many Cloudflare accounts from one MCP connection. Built for agencies, consultancies, and platforms that operate dozens of client accounts. Vault-stored scoped API tokens, default read-only, audit log per call. wmcp.sh is not affiliated with Cloudflare Inc.
Connect at https://wmcp.sh/mcp/cloudflare · register many accounts per connection · default read-only
Cloudflare ships an excellent official MCP server at cloudflare/mcp-server-cloudflare — actively developed with sub-servers for Workers, R2, DNS, Browser Rendering, AutoRAG and more. For a single developer with one Cloudflare account, that's the right answer.
The gap is multi-account. Agencies, consultancies, and platforms that operate Cloudflare on behalf of multiple clients end up running N copies of the official server — one per client account — and switching between them in the IDE. The agent has no way to reason about "do this on client A's account, that on client B's".
wmcp.sh adds the multi-account layer: register many Cloudflare accounts (each with its own scoped API token) under one connection profile. Every tool call accepts an account_id parameter, and wmcp.sh routes to the matching token. One MCP endpoint, N client accounts, default read-only, full audit log.
Ten read-focused tools spanning zones, DNS, Workers, R2, and analytics.
cloudflare.list_accountsAll accounts registered to this wmcp.sh connection.cloudflare.list_zonesZones for an account, with plan + status.cloudflare.list_dns_recordsDNS records for a zone with type + content + proxied flag.cloudflare.list_workersWorker scripts for an account.cloudflare.get_workerWorker metadata: routes, bindings, last-deployed.cloudflare.list_r2_bucketsR2 buckets with location + creation date.cloudflare.list_kv_namespacesKV namespaces with id + title.cloudflare.list_d1_databasesD1 databases with size + version.cloudflare.zone_analyticsRequests / bandwidth / threat counts for a zone.cloudflare.list_page_rulesPage rules for a zone (active + paused).// npm i @modelcontextprotocol/sdk @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const WMCP = "https://wmcp.sh/mcp/cloudflare";
const token = process.env.WMCP_TOKEN!;
const mcp = new Client({ name: "cf-agency", version: "1.0" });
await mcp.connect(new StreamableHTTPClientTransport(new URL(WMCP), {
requestInit: { headers: { Authorization: `Bearer ${token}` } }
}));
const { tools } = await mcp.listTools();
const anthropic = new Anthropic();
const msg = await anthropic.messages.create({
model: "claude-opus-4-5",
max_tokens: 2048,
tools: tools.map(t => ({ name: t.name, description: t.description, input_schema: t.inputSchema })),
messages: [{ role: "user", content: "For every account I have, list zones with their plan and SSL mode." }],
});
// agent calls list_accounts first, then loops list_zones per account_id
| Capability | cloudflare/mcp-server-cloudflare | wmcp.sh-routed |
|---|---|---|
| Single-account flow | Excellent | Equivalent |
| Cross-account routing | Run one server per account | N accounts in one connection, account_id per call |
| API token storage | OAuth / env var | Encrypted vault, per-account namespacing |
| Default mode | Read + write | Read-only; writes opt-in |
| Audit log | Cloudflare-side | wmcp.sh per-call + Cloudflare-side preserved |
| Worker / R2 / KV / D1 coverage | Full | Read-only subset, common 80% |
| Transport | Streamable HTTP + OAuth | Streamable HTTP + OAuth 2.1 |
cloudflare/mcp-server-cloudflare, actively developed with multiple sub-servers. For a single-account dev that's the right answer. wmcp.sh is not affiliated with Cloudflare and offers a hosted alternative with cross-account routing for agencies.account_id parameter, and wmcp.sh routes to the right scoped API token. One endpoint, many client accounts.Production multi-account Cloudflare MCP: scoped API tokens per client with read-only or fine-grained write perms, audit retention, SSO, per-account billing tagging in your dashboard. Starter $499 one-time, Managed Retainer $999/mo, Enterprise $4,999+/mo.