Express middleware for enforcing Model Context Protocol (MCP) authorization using Asgardeo. Provides OAuth 2.0 authorization server and protected resource metadata endpoints with bearer token validation.
This MCP server demonstrates significant quality gaps. Only 2 tools are present, both with basic descriptions and incomplete schemas. While tool names follow verb_noun conventions (get_*, book_*), parameter descriptions are minimal and lack crucial details like format constraints, valid ranges, and error recovery guidance. No output schemas are documented. The authorization context is mentioned in descriptions but not enforced in parameter schemas or error handling. Overall, this reads as a proof-of-concept example rather than production-grade tooling.
Books a new veterinary appointment for a specific pet. Requires user authentication and explicit consent via an authorization token.
Retrieves the vaccination history and upcoming vaccination dates for a specific pet. Requires user authentication and explicit consent via an authorization token.
No output schemas documented for either tool. LLMs cannot plan downstream operations or extract structured data from responses.
Parameter descriptions are too generic and lack format/constraint specifications. 'petId' has no guidance on format (UUID? numeric? string prefix?). 'date' and 'time' mention examples but no validation rules (ISO 8601 required?). 'reason' has no length limits or semantic constraints.
Tool descriptions mention 'user authentication and explicit consent via an authorization token' but the schema does not expose or document an authorization parameter, token validation, or permission requirements. Authentication is either server-side (good security) but undocumented, or missing entirely.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 40 | - | v1 |
No error handling guidance. Descriptions do not explain what can go wrong, how to recover, or when to retry. E.g., if booking fails due to unavailable time slot, should the LLM try a different time or ask the user?
book_vet_appointment is a destructive tool (WRITE risk) but has no confirmation step, dry-run option, or explicit warning in the description about irreversible side effects. Agents need to know which calls can be safely retried.
Parameter 'reason' in book_vet_appointment has no description. LLMs cannot determine whether this should be a structured enum (checkup, vaccination, injury, illness) or free-text, and what length constraints apply.
No indication of idempotency. If book_vet_appointment is called twice with the same parameters, does it create two separate appointments or return the existing one? Agents retry on ambiguous failures, this ambiguity risks duplicate bookings.