Start with what the server claims about itself. A remote MCP server that supports authorization publishes a Protected Resource Metadata document so clients can discover the authorization server, the resource identifier and the supported scopes, typically served at /.well-known/oauth-protected-resource and returned via the WWW-Authenticate header on a 401 response (the MCP authorization tutorial). Fetch that document yourself rather than trusting a client's summary of it.
Two things in that document deserve scrutiny. First, scopes_supported tells you the vocabulary of permissions the server can grant, for example mcp:tools, mcp:resources or product-specific scopes such as mcp:tools:calendar:write (the MCP authorization tutorial, a developer's guide to OAuth for MCP servers). Second, the authorization_servers list tells you who actually mints tokens. If that host is not an identity provider your company already trusts, you have found your first blocker.
Scope design in practice tends to follow a resource:action pattern. One identity platform's MCP server, for instance, requires application:read for retrieval tools and application:write for creating, updating and deleting applications, and it documents that listing tools with a token returns only the tools that token can call (the Casdoor MCP authorization docs). That behavior is the one you want: the tool list should shrink with the token. If a read-only token still lists delete tools, the server is filtering nothing and you should assume the scope check is decorative.
A rule of thumb that saves time: count the write-capable scopes in scopes_supported. Every one of them is a permission an agent could exercise on your data without a human in the loop. Write down each one and what business action it maps to. If you cannot name the action, you cannot approve the scope.



