Skip to content

mcp: dynamic client registration omits logo_uri #59030

Closed

Description

@la55u

Description

When an MCP server uses dynamic client registration (RFC 7591) instead of CIMD, the client metadata we send has no logo_uri, so authorization servers that would show a logo during consent have nothing to show.

We already declare the logo in the client metadata document we publish:

// https://opencode.ai/oauth/opencode/client.json
"logo_uri": "https://opencode.ai/web-app-manifest-512x512.png"

But that document is only used when a server advertises client_id_metadata_document_supported. For servers that fall back to DCR (registration=dcr), packages/core/src/mcp/oauth.ts sets client_name and client_uri and stops there.

RFC 7591 §2 defines logo_uri and says the authorization server SHOULD display it to the end user during approval, so this is the field that makes consent screens look like us instead of a bare client name.

OpenCode version

2.1.4

Steps to reproduce

  1. Add a remote MCP server whose authorization server does not support CIMD.
  2. Start the OAuth flow.
  3. Inspect the POST /register body: client_name and client_uri are present, logo_uri is absent.

Activity

  1. opencode-agent commented on Oct 25, 2026

    @opencode-agent
    Contributor

    Thanks for the report! Your request: when OpenCode falls back to dynamic client registration (RFC 7591) for an MCP server, it should send logo_uri in the registration metadata, as the published CIMD client.json already does. That way authorization servers can show the OpenCode logo on their consent screen.

    You're right about the current code. In packages/core/src/mcp/oauth.ts the DCR metadata only sets client_name and client_uri. Since logo_uri is optional and the OAuth flow works without it, we're treating this as an improvement rather than a bug. The maintainers will consider it.

    Related:

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions