An MCP connection card can show "Account identity unavailable" and "No scopes recorded" for a healthy connection. Both lines read as failures. For many MCP servers they only mean the provider exposes nothing: the Atlassian MCP authorization server advertises no userinfo_endpoint and lists no scopes, so there is nothing to fetch.
Two changes:
- Record what the provider does report. The OAuth flow stores
scopes=[] unconditionally (mcp/oauth.py), but a token response can carry a scope field. Store it when present.
- Say the true state. When the provider exposes no identity or scopes, the card says so ("not reported by the provider"), and reserves the current wording for a lookup that failed.
Optional, later: an identity fallback that asks the resource itself — some MCP servers expose a whoami-style tool (Atlassian has atlassianUserInfo). That is per-provider knowledge and a separate decision.
An MCP connection card can show "Account identity unavailable" and "No scopes recorded" for a healthy connection. Both lines read as failures. For many MCP servers they only mean the provider exposes nothing: the Atlassian MCP authorization server advertises no
userinfo_endpointand lists no scopes, so there is nothing to fetch.Two changes:
scopes=[]unconditionally (mcp/oauth.py), but a token response can carry ascopefield. Store it when present.Optional, later: an identity fallback that asks the resource itself — some MCP servers expose a whoami-style tool (Atlassian has
atlassianUserInfo). That is per-provider knowledge and a separate decision.