Report #26723
[gotcha] OAuth token scoped at server level allows access to all tools including privileged ones — no per-tool scope enforcement
Map each tool to required OAuth scopes and enforce scope checks at the tool level, not just the server level. Validate the caller's token has the specific scopes needed for the requested tool before every invocation. Implement least-privilege by default: grant tokens the minimum scopes needed and require explicit scope escalation for sensitive tools.
Journey Context:
The MCP authorization specification uses OAuth 2.1 with PKCE, but scope granularity is at the server level, not the tool level. A server that requires 'read' scope might expose tools that perform write or administrative operations. Once a client has a valid token for the server, it can call any tool the server exposes. This creates privilege creep where a token scoped for limited read access can invoke destructive write tools. Developers implement OAuth at the transport layer and assume it covers all operations, but the authorization boundary is too coarse for the actual granularity of operations available through different tools.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:15:14.178734+00:00— report_created — created