OAuth 2.0 proxy server that bridges Claude AI and Microsoft Entra ID, implementing RFC 7591 (Dynamic Client Registration), RFC 7636 (PKCE), and RFC 8707 (Resource Indicators)
Single tool (WhoAmI) with solid fundamentals. Tool is properly registered with @McpServerTool annotation, has a clear description, and explicitly declares metadata (ReadOnly=true, Idempotent=true, OpenWorld=false). Input schema is empty object (no parameters required), which is correct for this use case. Output is text-based (StringBuilder) rather than structured JSON, which limits downstream composability. Audit logging infrastructure is well-designed with proper claim filtering (allowlist pattern) and sensitive-data protection. However, the response format (unstructured markdown-like text) prevents LLMs from extracting fields for programmatic use. Tool follows security best practices by never logging argument values and filtering claims explicitly.
Returns general session context for the authenticated account so the assistant knows which tenant it is operating under.
Output schema not documented. WhoAmI returns a StringBuilder text blob with no formal schema definition. LLMs cannot extract structured fields (name, email, oid, upn, expiration) for downstream use, they must parse unstructured text.
Tool name 'WhoAmI' is not verb-prefixed. Correct pattern is 'get_current_user' or 'get_session_info'. Single-word names or mixed-case nouns reduce LLM clarity about intent.
Input schema is empty object {}, correct for this tool, but lacks any parameter descriptions. While no parameters are required here, the schema should document this explicitly (e.g., 'This tool takes no input parameters').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |