AWS Cognito MCP authentication: known deviations
Access tokens carry client_id instead of aud, so a standard audience check passes vacuously.
How AWS Cognito deviates from the MCP authorization spec
- Access tokens have no `aud` claim — they carry `client_id` instead, which a standard JWT audience check never looks at.
How to spot it without credentials
Discovery lives at cognito-idp.{region}.amazonaws.com/{pool}/.well-known/openid-configuration.
What it breaks in production
A generic JWT verifier accepts any token minted anywhere in the user pool: a token for server A works on server B — cross-server replay inside one pool, structural rather than accidental.
Check a AWS Cognito-backed MCP server
The free scanner runs the discovery and client-compatibility checks with no credentials, and every finding cites the spec requirement it violates:
npx mcpcomp https://your-mcp-server.example/mcp