The admin tools expose bucket and account metadata by calling the Cloudflare API on behalf of the MCP client. All ten tools are strictly read-only — they surface configuration and metrics but never create, update, or delete any account resource. This constraint is intentional: read-only access limits the blast radius of a compromised session to information disclosure only. The tools are disabled by default and require a Cloudflare API token with a narrowly scoped R2 permission. See Tools Overview for the full tool surface and Deployment Configuration for API token setup details.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/XxYouDeaDPunKxX/cloudflare-r2-remote-mcp-worker/llms.txt
Use this file to discover all available pages before exploring further.
Enabling Admin Tools
Add the following to thevars block of your wrangler.jsonc:
Use the narrowest readable R2 scope available when creating the API token. A token scoped to R2 Read (or equivalent) is sufficient for all ten admin tools. Never use a global or zone-level token — if the token is ever compromised, the damage is contained to read-only R2 data.
All Admin Tools
Every admin tool carriesreadOnlyHint: true in its MCP annotations, signalling to clients that no state will be mutated.
| Tool | Description |
|---|---|
r2_bucket_list | List R2 buckets in the configured Cloudflare account. |
r2_bucket_get | Get metadata for one R2 bucket. |
r2_cors_get | Get CORS rules for one R2 bucket. |
r2_lifecycle_get | Get lifecycle rules for one R2 bucket. |
r2_domain_custom_list | List custom domains attached to one R2 bucket. |
r2_domain_custom_get | Get custom domain settings for one R2 bucket. |
r2_domain_managed_get | Get r2.dev managed domain settings for one R2 bucket. |
r2_notifications_list | List event notification rules for one R2 bucket. |
r2_notifications_get | Get one event notification queue configuration for an R2 bucket. |
r2_metrics_get | Get account-level R2 storage metrics. |
Tool Reference
r2_bucket_list
List R2 buckets in the configured Cloudflare account. Supports pagination and server-side filtering by name.Pagination cursor returned by a previous
r2_bucket_list response. Omit for the first page.Sort direction for the bucket list. Accepted values:
"asc" or "desc".Filter results to buckets whose names contain this substring.
Maximum number of buckets to return per page. Must be between
1 and 1000.r2_bucket_get
Get metadata for one R2 bucket, including creation time and location hint.Name of the bucket to inspect. Defaults to the value of
R2_BUCKET_NAME when omitted.r2_cors_get
Get CORS rules for one R2 bucket. Useful for verifying that browser-origin restrictions are set correctly before enabling presigned URL flows.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.r2_lifecycle_get
Get lifecycle rules for one R2 bucket, including expiration and transition policies.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.r2_domain_custom_list
List custom domains attached to one R2 bucket.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.r2_domain_custom_get
Get custom domain settings for one R2 bucket. Returns the configuration for a specific custom domain attached to the bucket.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.The custom domain name to look up (e.g.,
"assets.example.com").r2_domain_managed_get
Get r2.dev managed domain settings for one R2 bucket, including whether public access is enabled.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.r2_notifications_list
List event notification rules for one R2 bucket. Each rule maps bucket events (such as object creation or deletion) to a Cloudflare Queue.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.r2_notifications_get
Get one event notification queue configuration for an R2 bucket. Returns the full configuration for the specified queue.Name of the target bucket. Defaults to
R2_BUCKET_NAME when omitted.The Queue ID of the notification configuration to retrieve.
r2_metrics_get
Get account-level R2 storage metrics, including total object count and storage bytes consumed across all buckets in the account. This tool takes no parameters. Example call:Intentional Omissions
All admin tools are annotated with
readOnlyHint: true. No tool in this surface will ever mutate account state.| Category | Omitted operations |
|---|---|
| Buckets | Create bucket, delete bucket |
| CORS | Put CORS rules, delete CORS rules |
| Lifecycle | Put lifecycle rules, delete lifecycle rules |
| Custom domains | Attach domain, update domain, remove domain |
| Managed domain | Enable/disable r2.dev public access |
| Notifications | Create notification rule, update notification rule, delete notification rule |
- A compromised MCP session or API token cannot alter bucket configuration, destroy data pipelines, or expose buckets publicly.
- The blast radius of any incident is limited to information disclosure of account metadata.
- Operators can safely enable admin tools in production without gating them behind additional change-control workflows.