Edgeport

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 1, 2026

Zones, DNS, cache purge, Workers, KV, and R2 through the Cloudflare API.

Overview

AI-generated overview

Local MCP server that gives an assistant Cloudflare account access: zones, DNS records, cache purge, Workers, KV and R2.

What you can do
  • List accounts and zones, and get details for a single zone
  • List, create, update and delete DNS records in a zone
  • Purge cached content for a zone by file, tag, host or everything
  • List Worker scripts and read a script's metadata and shape, without its body
  • List Workers KV namespaces and R2 buckets in an account
When to use it
Useful when an assistant should inspect or edit Cloudflare DNS, clear a zone's cache, or inventory Workers, KV and R2 resources during operations or troubleshooting work. It is a core subset of the Cloudflare API, not a full replacement for it.
Requirements
Runs locally over stdio via npx or the Docker image. Needs a Cloudflare API token in the CLOUDFLARE_API_TOKEN environment variable; account-scoped tools fall back to CLOUDFLARE_ACCOUNT_ID when no account_id argument is given. Network access to the Cloudflare API is required.
Before you install
The token is sent as a Bearer token and its permissions decide what the assistant can reach. DNS create, update and delete and cache purge change live configuration, so a misdirected call can take a site offline or alter records. Scope the token narrowly and review write actions before they run.

Installation

In SourceWeft

  1. Open Edgeport in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

edgeport

edgeport is a small doorway into a Cloudflare account. From one bin an agent can see which accounts and zones a token can reach, read and change DNS records, purge cached content, and inventory the account's Worker scripts, KV namespaces, and R2 buckets. It runs from the command line or as an MCP server for agents.

A Cloudflare API token is required. Put it in the CLOUDFLARE_API_TOKEN environment variable; it is sent to the API as a Bearer token and never appears in output. Account-scoped tools (Worker scripts, KV, R2) take an account_id argument, and when that is omitted they fall back to CLOUDFLARE_ACCOUNT_ID. When a required variable is missing, the call fails with an error that names it.

This is a core subset of the Cloudflare API, not the whole surface: Workers bindings deep configuration, observability and Logpush, rulesets and firewall rules, Pages and deployments, Stream and Images, AI and Vectorize, and the hosted documentation search tool are out of scope.

Install

bash
npx @reneturcios/edgeport list-zones

Or run the container image:

bash
docker run -i -e CLOUDFLARE_API_TOKEN ghcr.io/cloudcorprecords/edgeport

The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.

CLI

bash
export CLOUDFLARE_API_TOKEN="your api token"export CLOUDFLARE_ACCOUNT_ID="your account id"   # optional fallback
edgeport list-accountsedgeport list-zones --name example.comedgeport get-zone --zone-id <zone id>edgeport list-dns --zone-id <zone id> --type Aedgeport purge-cache --zone-id <zone id> --everythingedgeport list-workersedgeport list-kvedgeport list-r2
edgeport --version

Exit codes: 0 on success, 1 when an API call fails (including a missing CLOUDFLARE_API_TOKEN or a success: false envelope), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

bash
npx -y @reneturcios/edgeport mcp

MCP client configuration:

json
{  "mcpServers": {    "edgeport": {      "command": "npx",      "args": ["-y", "@reneturcios/edgeport", "mcp"],      "env": { "CLOUDFLARE_API_TOKEN": "your api token" }    }  }}

Tools

ToolInputWhat it returns
list_accountsper_page (integer, optional)Accounts the token can access, from the envelope's result.
list_zonesaccount_id, name, per_page (all optional)Zones, optionally filtered by account or name.
get_zonezone_id (required)One zone's details.
list_dns_recordszone_id (required), type, name, per_page (optional)DNS records in the zone.
create_dns_recordzone_id, type, name, content (required), ttl, proxied, comment (optional)The created record.
update_dns_recordzone_id, record_id (required), any record field (optional)The updated record; only the fields given are sent.
delete_dns_recordzone_id, record_id (required)The delete result.
purge_cachezone_id (required), purge_everything, files, tags, hosts (optional)The purge result for the zone.
list_workers_scriptsaccount_id (optional)Worker scripts in the account.
get_worker_scriptscript_name (required), account_id (optional)A shape summary only: content type, byte size, body present. The script body is never returned.
list_kv_namespacesaccount_id (optional)Workers KV namespaces in the account.
list_r2_bucketsaccount_id (optional)R2 buckets in the account.

Every JSON response is unwrapped from Cloudflare's {success, errors, result} envelope. A success: false envelope is reported as a tool error carrying the API's own error entries.

Development

bash
npm installnpm run build   # tsc -> dist/npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Source: README.md at commit a3c8b4b

Tools

12

list_accounts

List Cloudflare accounts accessible with the API token.

Parametersper_page

list_zones

List zones, optionally filtered by account or name.

Parametersnameper_pageaccount_id

get_zone

Get one zone by its id.

Parameterszone_idrequired

list_dns_records

List DNS records in a zone, optionally filtered by type or name.

Parametersnametypezone_idrequiredper_page

create_dns_record

Create a DNS record in a zone.

Parametersttlnamerequiredtyperequiredcommentcontentrequiredproxiedzone_idrequired

update_dns_record

Update a DNS record in a zone.

Parametersttlnametypecommentcontentproxiedzone_idrequiredrecord_idrequired

delete_dns_record

Delete a DNS record from a zone.

Parameterszone_idrequiredrecord_idrequired

purge_cache

Purge cached content for a zone, by file, tag, host, or everything.

Parameterstagsfileshostszone_idrequiredpurge_everything

list_workers_scripts

List Worker scripts in an account.

Parametersaccount_id

get_worker_script

Get a Worker script's metadata and shape only, without its body.

Parametersaccount_idscript_namerequired

list_kv_namespaces

List Workers KV namespaces in an account.

Parametersaccount_id

list_r2_buckets

List R2 buckets in an account.

Parametersaccount_id

Version history

1
  1. v0.1.0LatestNov 1, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts