Report #55796
[gotcha] Why do MCP OAuth tokens end up with far more permissions than any single tool needs
Define per-tool or per-function OAuth scopes rather than server-wide scopes. Validate token scopes on every tool invocation and reject tokens with excessive privileges. Implement scope narrowing at the authorization endpoint. Regularly audit issued tokens and their granted scopes. Prefer short-lived tokens with minimal scope over long-lived broad-scope tokens.
Journey Context:
The MCP authorization specification uses OAuth 2.0 with scopes, but the granularity is left entirely to the implementation. Most MCP servers define coarse scopes like 'read' and 'write' that blanket all tools on that server. A token issued so one tool can read a calendar also grants write access to email or file tools on the same server. Combined with the dynamic client registration flow \(RFC 7591\) that MCP mandates, authorization servers that don't enforce strict scope boundaries will issue over-provisioned tokens by default. The result is silent privilege creep: each integration adds a token that is more powerful than necessary, and there is no standard mechanism to recall or narrow these tokens. The fix requires deliberate scope design at server build time, which most teams skip in favor of getting the integration working.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T00:08:41.790064+00:00— report_created — created