Skip to content

Hosted MCP OAuth: api.supabase.com/.well-known/openid-configuration returns 404 — OIDC-discovery clients (VS Code) can't start sign-in #374

Description

@dadicool

Bug Report: Supabase hosted MCP OAuth fails — /.well-known/openid-configuration returns 404, breaking OIDC discovery

To: https://github.com/supabase/mcp
Status: Ready to file
Reported: 2026-08-23

Title

Hosted MCP OAuth: api.supabase.com/.well-known/openid-configuration returns 404 — OIDC-discovery clients (VS Code) can't start the sign-in flow

Summary

The hosted Supabase MCP server (https://mcp.supabase.com/mcp) delegates OAuth to
the authorization server https://api.supabase.com. That authorization server
publishes its metadata only at the RFC 8414 path
(/.well-known/oauth-authorization-server) and returns 404 at the OIDC path
(/.well-known/openid-configuration). MCP clients that perform OIDC discovery
(probing openid-configuration) — including VS Code's dynamic-auth MCP client —
cannot construct the authorization URL, so the OAuth flow never starts. The result
is a registered dynamic client with no session and a server that stays at
401 No access token was provided.

Environment

  • MCP client: VS Code (dynamic OAuth / PKCE)
  • MCP endpoint: https://mcp.supabase.com/mcp?project_ref=<ref>&features=...
  • Authorization server: https://api.supabase.com
  • Date observed: 2026-08-23

Evidence

GET https://api.supabase.com/.well-known/openid-configuration:

HTTP/2 404
{"message":"Cannot GET /.well-known/openid-configuration"}

GET https://api.supabase.com/.well-known/oauth-authorization-server (RFC 8414):

HTTP/2 200
{
  "issuer": "https://api.supabase.com",
  "authorization_endpoint": "https://api.supabase.com/v1/oauth/authorize",
  "token_endpoint": "https://api.supabase.com/v1/oauth/token",
  "registration_endpoint": "https://api.supabase.com/platform/oauth/apps/register",
  "grant_types_supported": ["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:jwt-bearer"],
  "code_challenge_methods_supported": ["S256","plain"],
  ...
}

The MCP resource metadata (https://mcp.supabase.com/.well-known/oauth-protected-resource/mcp)
correctly points to authorization_servers: ["https://api.supabase.com"], but the
client then fails at the discovery step because the OIDC document is missing.

Expected behavior

https://api.supabase.com/.well-known/openid-configuration should return a valid
OpenID Connect discovery document (or redirect/alias to the RFC 8414 metadata), so
OIDC-discovery-based MCP clients can initiate the authorization flow.

Actual behavior

The OIDC path 404s. VS Code registers a dynamic client (clientId is created via
the working registration_endpoint) but never obtains an authorization URL, so no
session is ever established. All MCP calls return:

HTTP/2 401
www-authenticate: Bearer error="invalid_request",
  error_description="No access token was provided in this request",
  resource_metadata="https://mcp.supabase.com/.well-known/oauth-protected-resource/mcp?project_ref=..."

Impact

Any MCP client that relies on OIDC discovery (rather than RFC 8414
oauth-authorization-server) cannot authenticate to the hosted Supabase MCP
server. VS Code is affected; other clients that probe openid-configuration first
would be too.

Suggested fixes

  • Serve the OIDC discovery document at
    https://api.supabase.com/.well-known/openid-configuration (even a thin alias of
    the RFC 8414 metadata with an issuer field is sufficient), or
  • Confirm/document that clients must use RFC 8414 discovery only, and ensure the
    protected-resource metadata / client guidance reflects that.

Workaround

None client-side for VS Code's dynamic-auth flow — the discovery document is
missing server-side. (A personal access token / API-key header is not currently
supported by the hosted Supabase MCP server.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions