MCP server for Microsoft Graph API (Entra) interaction with support for Anthropic and Azure OpenAI clients
Single tool 'my-tenant' has a reasonable schema with 5 parameters (path, queryParameters, method, body, graphVersion), all with type definitions and descriptions. However, the tool name violates verb-noun convention (should be 'call_graph_api' or 'query_graph_api'), lacks clarity on what 'my-tenant' does, and the description is generic ('Tool to interact with Microsoft Graph'). Parameters lack constraints: 'method' accepts free-form strings instead of an enum (GET|POST|PUT|PATCH|DELETE); 'path' has no format guidance or examples; 'queryParameters' is an untyped object. No output schema is documented. No error handling guidance. The tool exposes a generic pass-through to Microsoft Graph without safety guardrails, validation, or recovery hints. This is a low-quality definition that would confuse LLMs about when/how to use it.
Tool to interact with Microsoft Graph (Entra)
Tool name 'my-tenant' does not follow verb_noun convention. Should start with action verb (e.g., 'call_graph_api', 'query_graph_api', 'execute_graph_request'). Current name is opaque and does not convey what the tool does.
Parameter 'method' accepts free-form strings instead of an enum. Should constrain to [GET, POST, PUT, PATCH, DELETE] to prevent invalid HTTP methods and guide LLM selection.
No output schema documented. LLMs cannot predict response structure, plan downstream calls, or extract relevant fields. Must document what fields are returned (e.g., value[], @odata.nextLink, error details).
Parameter 'queryParameters' is typed as untyped object with no schema. LLMs cannot validate OData filter syntax, $select fields, or $orderby constraints. Should document expected keys and value types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
No error handling guidance. Tool description does not explain what happens on 401 (auth failure), 404 (resource not found), 429 (rate limit), or 500 (server error). LLM has no recovery path.