Repository navigation
Version Packages - #532
Merged
Merged
Version Packages#532
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 22, 2026 15:15
3ca3f13 to
af9fc9e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
cloudflare-ai-gateway-mcp-server@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.auditlogs@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.cloudflare-autorag-mcp-server@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.cloudflare-browser-mcp-server@0.5.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.cloudflare-blog@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.cloudflare-casb-mcp-server@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.demo-day@0.2.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.dex-analysis@0.6.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.dns-analytics@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.docs-ai-search@0.5.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.graphql-mcp-server@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.logpush@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.cloudflare-radar-mcp-server@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.containers-mcp@0.4.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.stack-mcp@0.2.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.workers-bindings@0.6.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.workers-builds@0.3.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.workers-observability@0.6.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.@repo/mcp-common@0.21.0
Minor Changes
dfd49e5: Retire the
/sseURL and upgrade to@cloudflare/workers-oauth-provider1.2.4./ssenow returns410 Gonewith anapplication/problem+jsonbody naming the server's/mcpURL, before any authentication./sseused to serve Streamable HTTP as an alias of/mcp; clients configured with it must switch to/mcp. MCP SDK v1 and v2 clients show the message in their connection error. It is not a redirect, because OAuth clients that follow one reject the/mcpprotected resource metadata with an error that never mentions/mcp.<origin>/mcp, and every token is bound to it. Grants bound to/mcpkeep working. Grants bound to/sse, or to the bare origin that 0.x advertised at the root metadata URL, fail their next refresh withinvalid_grant(workers-oauth-provider 1.2.4), and the client signs in again at/mcp.access_deniedback to the MCP client. The page shows the redirect URI, the publishing domain of a Client ID Metadata Document client, and a warning when the tokens go to a local app.beginUpstream()/finishUpstream()in place of the hand-rolled KV state and session cookie. Two tabs can authorize at once, and declining at Cloudflare sendsaccess_deniedback to the MCP client.isConsentRemembered(). Approvals made before this change aren't carried over, so each browser sees the consent page once more./mcpresource.Patch Changes
403 9109: Invalid access token) now gets401 invalid_token, as the MCP authorization spec requires for invalid or expired tokens. Before, it got403 insufficient_scope, which sends clients through a scope step-up instead of re-authenticating. A valid token that lacks access still gets403 insufficient_scope.