By NHI Mgmt Group Editorial TeamPublished 2026-02-01Domain: Agentic AI & NHIsSource: P0 Security

TL;DR: OAuth scopes define broad delegated capability for MCP, but they cannot express role-aware, context-aware, or sequence-aware authorization, according to P0 Security. Fine-grained enforcement has to move to the server side if organisations want least privilege without scope sprawl or overly persistent tokens.


At a glance

What this is: This is an analysis of why OAuth scopes alone do not provide secure MCP authorization, and the key finding is that server-side RBAC is still required for least privilege.

Why it matters: It matters because IAM and security teams must govern MCP tools with runtime policy, not token snapshots, if they want access control to reflect changing roles, context, and task scope.

👉 Read P0 Security's analysis of OAuth scopes and secure MCP authorization


Context

OAuth scopes are useful for delegated access, but they are a coarse control surface, not a complete authorisation model. In MCP environments, that distinction matters because tool use can depend on user role, target resource, and request context, while a scope only says that a broad action class is allowed.

For identity teams, the problem is not whether OAuth works, but whether it can carry least privilege into a dynamic tool ecosystem. When permissions need to change as roles change, a static token cannot safely stand in for server-side policy evaluation.


Key questions

Q: How should security teams design MCP authorization for least privilege?

A: Security teams should use OAuth scopes for broad delegated access and enforce fine-grained permissions server-side. The MCP server must evaluate the user’s role, the target resource, and any contextual constraints at request time. That approach preserves least privilege without turning tokens into brittle mini-policy engines.

Q: When do OAuth scopes become too weak for MCP governance?

A: Scopes become too weak when the same tool must behave differently by role, project, or workflow context. At that point, a scope can signal broad eligibility, but it cannot safely decide whether the action is allowed. If the control must understand context, the server needs RBAC or richer policy enforcement.

Q: What do teams get wrong about OAuth scopes in tool ecosystems?

A: Teams often treat scopes as if they were roles. They are not. Scopes are token flags that describe broad permission surfaces, while roles and policies govern who may do what in practice. When teams confuse the two, they create scope sprawl and lose the ability to adapt authorisation to changing identity state.

Q: Why is server-side authorization better than token-only control for MCP?

A: Server-side authorisation is better because it can evaluate current identity, live policy, and resource context at the moment of use. Token-only control freezes permission at issuance time, which is too static for multi-user systems where access needs to change as roles and organisational rules change.


Technical breakdown

Why OAuth scopes are too coarse for MCP tool governance

OAuth scopes were designed to bound broad delegated API access, such as read or write permission over a resource family. In MCP, that model breaks down because tools are not just endpoints, they are actions that may need different approval logic depending on the user, project, or workflow stage. A single scope can say a client may call billing tools, but it cannot express which billing tool, for which project, under which conditions. That is why scope-based authorisation quickly becomes a naming exercise rather than a governance model.

Practical implication: treat scopes as a coarse gate only, and move tool-level enforcement into server-side policy.

Why static tokens do not fit changing identity policy

OAuth tokens capture a snapshot of permission at issuance time. That is efficient for delegation, but it becomes brittle when user roles, organisational standards, or access boundaries change after the token exists. If a role is updated, the token does not automatically inherit that change. Organisations then face a choice between minting many specialised tokens or accepting stale privileges that persist longer than policy intended. In an MCP setting, that makes token contents a poor substitute for runtime authorisation, because the server needs current identity and policy state, not historical state.

Practical implication: enforce request-time checks against live identity and policy data instead of trusting token claims alone.

How scope sprawl appears when every tool gets its own scope

When teams try to model each MCP tool or action as a separate scope, the scope set grows into a brittle control catalogue. Tokens become larger, scope naming becomes inconsistent, and every new tool requires another permission string. That is scope sprawl, and it usually signals that the authorisation model is doing too much work in the token layer. The article’s core point is that scopes can describe broad capability boundaries, but they do not scale as a fine-grained policy language for multi-user, role-aware systems.

Practical implication: collapse scope sprawl by keeping scopes broad and expressing fine-grained decisions in server policy.


NHI Mgmt Group analysis

OAuth scope-only authorization is a governance shortcut, not a least-privilege model. Scopes can bound a delegated client to a broad capability set, but they cannot resolve who may use which MCP tool under which conditions. That gap matters most in multi-user systems where the same tool has different effects depending on role and target resource. Practitioners should treat scope-only design as incomplete authorisation, not a safe endpoint.

Dynamic MCP authorization belongs at the server, where current identity and policy can be evaluated. The article is correct that token snapshots age badly when roles change after issuance. A static token cannot know whether a user was promoted, reassigned, or restricted after the token was minted. For identity programmes, that means request-time enforcement is not optional if the tool ecosystem is expected to track organisational policy.

Scope sprawl is a symptom that OAuth is being forced to do RBAC's job. Once every tool, action, or context needs its own scope string, the token becomes a brittle policy container and the system loses operational clarity. A named concept emerges here: scope sprawl, the point at which permission strings proliferate because coarse delegation is being stretched into fine-grained governance. Practitioners should recognise this as a design failure, not a tuning problem.

MCP governance assumptions built for static delegation do not hold in role-aware tool ecosystems. The assumption that a token can safely represent access across time was designed for stable, pre-defined permission surfaces. That assumption fails when the server must decide context, intent, and sequencing at runtime. The implication is that identity governance for MCP needs a policy plane that can reason beyond pre-issued claims.

The control boundary for MCP is shifting from client trust to server-side decisioning. That shift affects how IAM, PAM, and NHI teams think about authorisation evidence, because the meaningful control is no longer the scope embedded in the token. It is the server's ability to evaluate current role context and permitted action at the point of use. Practitioners should reframe MCP authorisation as a live governance problem, not a token design problem.

From our research:

  • 85% of organisations lack full visibility into third-party vendors connected via OAuth apps, according to The State of Non-Human Identity Security.
  • Only 1.5 out of 10 organisations are highly confident in their ability to secure NHIs, compared to nearly 1 in 4 for securing human identities.
  • For a broader view of the control problem, see Top 10 NHI Issues for the governance patterns that keep surfacing across machine identities.

What this signals

Scope sprawl: when an authorisation model keeps adding permission strings to compensate for missing policy logic, the control surface is already too coarse. That is the practical warning signal in MCP environments, especially where identity, role, and context all matter at request time. The same pattern shows up across machine identity programmes whenever access is encoded too early and reviewed too late.

With 85% of organisations lacking full visibility into third-party vendors connected via OAuth apps, per The State of Non-Human Identity Security, OAuth-based trust is already under pressure in non-human identity programmes. MCP adds another layer of delegated access, which means teams should expect more demand for server-side policy, not less.

Security programmes should watch for a shift from token-centric thinking to live authorisation evidence. As tool ecosystems become more dynamic, the useful question is no longer whether a token was valid at issuance, but whether the server can still justify the action now under current role and policy state.


For practitioners

  • Separate coarse scopes from fine-grained policy Use OAuth scopes only to define broad capability domains, then enforce tool-level decisions in the MCP server with role and context checks. This keeps token design manageable while preserving least privilege for multi-user workflows.
  • Map every MCP tool to a server-side policy rule Document which user roles may invoke each tool, on which resources, and under what conditions. If the answer cannot be expressed cleanly, the scope model is too coarse and needs a policy layer.
  • Review tokens for stale privilege assumptions Test whether a permission change made after token issuance is reflected immediately in access decisions. If not, the system is relying on token age instead of current identity state.
  • Control scope growth before it becomes sprawl Limit new scope creation to broad domains and avoid encoding per-tool exceptions into scope names. Scope proliferation is a sign that RBAC and policy evaluation need to move server-side.

Key takeaways

  • OAuth scopes are necessary in MCP, but they are not sufficient for least-privilege authorisation.
  • Static tokens cannot keep pace with changing roles and context, which is why server-side RBAC remains essential.
  • If scope names start multiplying into scope sprawl, the authorisation model is too coarse and needs a policy layer.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST CSF 2.0 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-01Scopes alone leave delegated access too broad for tool-level governance.
NIST CSF 2.0PR.AC-4Least-privilege access control depends on current identity and context.
NIST Zero Trust (SP 800-207)AC-4Zero Trust requires ongoing verification at the point of use.

Move authorisation decisions to the resource server and re-check context per request.


Key terms

  • OAuth Scope: A scope is a token-bound permission flag that describes a broad class of actions a client may perform. In MCP, scopes can establish delegated access boundaries, but they do not by themselves express context, role nuance, or request-time policy decisions.
  • Scope Sprawl: Scope sprawl is the accumulation of too many permission strings as teams try to encode fine-grained authorisation into OAuth scopes. It usually signals that the model is being stretched beyond delegation and needs server-side policy enforcement instead.
  • Server-side Authorization: Server-side authorization is the practice of deciding access at the resource server using current identity, role, and policy data. For MCP, it is the control layer that can evaluate who may use which tool, on which resource, and under what conditions.

What's in the full article

P0 Security's full post covers the operational detail this post intentionally leaves for the source:

  • How OAuth scopes are mapped to broad API permission surfaces in MCP authorization flows
  • Why JWT size limits and scope growth make fine-grained scope modelling brittle
  • How server-side RBAC and runtime policy evaluation work together in a multi-user MCP server
  • Where contextual checks belong when different users can invoke the same tool with different outcomes

👉 P0 Security's full post covers the scope limits, token persistence, and server-side RBAC balance in more detail.

Deepen your knowledge

NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are responsible for identity security strategy or NHI governance in your organisation, it is worth exploring.
NHIMG Editorial Note
Published by the NHIMG editorial team on 2026-02-01.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org