MCP UI shows "Authenticate" button for env-var based auth, attempts incompatible OAuth

Resolved 💬 3 comments Opened Jan 26, 2026 by heytcass Closed Jan 30, 2026

Summary

The MCP server management UI displays an "Authenticate" button for MCP servers configured to use environment variable authentication. Clicking this button attempts OAuth 2.0 Dynamic Client Registration (RFC 7591), which fails when the server doesn't support it, resulting in a confusing error message.

Steps to Reproduce

  1. Install the official GitHub plugin from claude-plugins-official marketplace
  2. The plugin's .mcp.json configures authentication via: "Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
  3. Navigate to the MCP management UI (/mcp or via menu)
  4. Observe the GitHub plugin shows: Auth: ✘ not authenticated
  5. Select the plugin and click "Authenticate"
  6. Observe brief "Opening browser to authenticate" message
  7. Error appears: "Incompatible auth server: does not support dynamic client registration"

Expected Behavior

One of the following:

  • Option A: UI should not show "Authenticate" button for MCP servers configured with environment variable authentication (e.g., ${GITHUB_PERSONAL_ACCESS_TOKEN})
  • Option B: UI should show helpful message like: "This server requires environment variable: GITHUB_PERSONAL_ACCESS_TOKEN"
  • Option C: Provide different authentication flow for env-var based servers (prompt user to set the variable)

Actual Behavior

  • UI shows "Authenticate" button suggesting OAuth is available
  • Button triggers OAuth Dynamic Client Registration
  • Fails with cryptic error message
  • User has no indication they need to set an environment variable

Environment

  • Claude Code version: 2.1.7 (latest as of 2026-01-26)
  • Plugin: github@claude-plugins-official (version e30768372b41)
  • OS: macOS (Darwin 24.6.0)

Impact

This creates a confusing UX where:

  1. Users believe OAuth authentication is available but broken
  2. The actual authentication method (environment variable) is not discoverable
  3. Error message doesn't guide users to the solution

Suggested Fix

Detect MCP server configuration type and:

  • If OAuth configured → show "Authenticate" button
  • If env var configured → show env var name with setup instructions
  • If neither → show appropriate message

Related

Plugin configuration in question (claude-plugins-official/external_plugins/github/.mcp.json):

{
  "github": {
    "type": "http",
    "url": "https://api.githubcopilot.com/mcp/",
    "headers": {
      "Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
    }
  }
}

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗