Skip to content

Support EU-jurisdiction R2 buckets in Cloudflare MCP #278

Open

Description

@NCA-recruitment2024

Problem

The Cloudflare MCP connector currently does not expose a way to send the cf-r2-jurisdiction: eu header when accessing an R2 bucket located in the European Union.

As a result, we cannot read the bucket configuration or verify data residency and isolation for a staging environment.

This blocks our pre-production security validation, even though Cloudflare authentication is working. No permission-denied response has been observed; the required jurisdiction header cannot be supplied through the available connector action.

Proposed Solution

Please add support for EU-jurisdiction R2 operations in the Cloudflare MCP connector.

Ideally, the connector should automatically pass cf-r2-jurisdiction: eu for EU-jurisdiction buckets, or expose an optional jurisdiction parameter supporting eu.

The solution should allow read-only access to bucket metadata and configuration with the existing Workers R2 Storage Read permission, without requiring additional write permissions.

Alternatives Considered

Using the Cloudflare REST API directly with the cf-r2-jurisdiction: eu header, or using a separate Cloudflare-compatible client.

These alternatives require an additional authentication workflow outside the existing MCP connector.

Additional Context

Use case: validating an isolated European staging environment before enabling application-level testing.

Cloudflare authentication and basic resource discovery already work through MCP. The remaining limitation is the inability to query the EU-jurisdiction R2 bucket using the required header.

Cloudflare R2 API documentation:
https://developers.cloudflare.com/r2/api/

No production resources have been modified, and no credentials or sensitive bucket details are included in this request.

Activity

  1. added 2 commits that reference this issue on Oct 12, 2026
    2afa0e3
    cd9ab5e
  2. niXtou commented on Oct 15, 2026

    @niXtou

    We hit this too. Both of our R2 buckets are in the EU jurisdiction, so through the MCP server’s execute tool the account looks like it has no R2 at all: GET /accounts/{id}/r2/buckets returns {"buckets": []}, and GET …/r2/buckets/ returns 10006: The specified bucket does not exist. Tunnels, DNS and the other reads work fine on the same connection.

    We use R2 for backups under bucket locks, and reading those buckets over MCP is how we check them, so for now we fall back to the dashboard. cloudflare/mcp#279 looks like the right fix (a headers/jurisdiction option on cloudflare.request()). A review would be much appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions