MCP server for interacting with Microsoft Graph API for application, site, and user operations
Three tools with minimal definitions. All lack verb-prefixed names (applications, sites, users are nouns, not actions). Descriptions are generic and under 100 chars, insufficient for LLM tool selection. Input schemas present but trivial: single optional 'name' string with no type validation, enums, or constraints. No output schema documented. No error handling guidance. No parameter descriptions beyond 'The name of the X'. Tools appear read-only but lack explicit idempotent/readOnly annotations. No pagination support despite APIs returning collections. Naming violates pattern:tool (should be list_applications, get_sites, search_users). Descriptions fail to answer WHEN to use each tool or what distinguishes them.
Interact with Microsoft Graph API for application operations
Interact with Microsoft Graph API for site, subsites and pages operations
Interact with Microsoft Graph API for user operations
Tool names are nouns, not action verbs. 'applications', 'sites', 'users' do not convey what the tool does. LLMs cannot infer intent from noun-only names. Should be 'list_applications', 'search_sites', 'get_users' or similar.
Descriptions are generic and under 100 chars. 'Interact with Microsoft Graph API for application operations' does not explain WHEN to use this tool, what it returns, or how it differs from other tools. Baseline for A+ tools is 194 chars average with clear WHAT/WHEN/RETURN guidance.
Input schema is trivial: single optional 'name' string with no type validation, enums, constraints, or format specification. No guidance on expected format, length, or valid values. Parameter description 'The name of the application' is too brief (under 20 chars baseline violation).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No output schema documented. LLMs cannot plan downstream calls or extract required fields (e.g., IDs for chaining). Code shows JSON response but no formal schema definition in tool registration.
No pagination support declared. APIs return collections but tool lacks limit, offset, page_size, or next_cursor parameters. Large result sets will blow context window. Code uses PageIterator internally but does not expose pagination to LLM.