MCP Resource Server with AWS Cognito and OAuth 2.0 Authentication. Demonstrates RFC 9728 Protected Resource Metadata for Authorization Server and Resource Server separation, with RFC 8707 Resource Indicators support.
This server has only 1 tool (get_time) with minimal schema validation and surface-level documentation. The tool demonstrates OAuth authentication integration but lacks the depth of parameter description, input validation, and error handling guidance expected of production tools. The empty input schema ({}) is technically valid but indicates no real parameter validation. Description is adequate (89 chars, within 10-1024 range) but generic. No evidence of structured output schema documentation, no error categorization, and no recovery guidance. The server's primary value is demonstrating Cognito authentication, not providing a richly specified tool interface.
Get the current server time. This tool demonstrates that system information can be protected by OAuth authentication. User must be authenticated to access it.
Empty input schema with no parameter validation. Tool declares Input: {} with no documented parameters, constraints, or types. While technically valid for a parameterless operation, this provides zero guidance to LLMs about valid inputs, expected format, or constraints.
No output schema documentation. The tool description does not specify what fields or structure the 'current server time' response contains. LLMs cannot plan downstream operations or extract specific fields without knowing the output format (e.g., is it ISO 8601, Unix timestamp, string, object with timezone?).
No error handling or recovery guidance. If the server fails to retrieve the time (clock issues, service error), the tool description provides no instructions on what the LLM should do next: retry? Retry with backoff? Treat as fatal? Error classification is missing.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Tool name 'get_time' is generic and could be confused with client-side system time retrieval. Description clarifies it's 'server time' and protected by OAuth, but the name alone doesn't convey 'server' or 'protected resource'. A clearer name like 'get_server_time' or 'get_protected_server_time' would improve immediate clarity.
No scope or permission declarations. The tool requires Cognito authentication, but the tool definition does not declare what permissions or OAuth scopes are required (e.g., 'scope:time:read'). This prevents agents from knowing the permission model upfront.