FastAPI-based MCP server for Microsoft Graph API integration, providing tools to read and manage user profile data including skills and interests
This server has critical definition quality gaps. Tool names lack clear action verbs (readUserProfile vs getUser), descriptions are minimal (10-30 chars, well below the 50-200 char LLM-optimized baseline), and parameter schemas are severely incomplete. The 'skill' and 'interest' parameters are typed as generic 'object' with no field documentation, forcing LLMs to guess structure. No output schemas are documented. Error handling returns raw HTTP status codes without recovery guidance. The composite tool 'readUserProfileSkillsAndInterests' violates single-responsibility principle. No tool has descriptions meeting the 50-200 char LLM-optimized range.
Add a new interest
Add a new skill to the user's profile
Read the user's profile
Read the user's profile interests
Read the user's profile skills
Composite Action: Read both Skills and Interests
Update an existing interest
Update an existing skill
Parameter schemas use generic 'object' type with no field documentation. 'skill' and 'interest' parameters lack any description of required/optional fields, data types, or structure. LLMs cannot construct valid payloads.
Tool descriptions are 10-30 characters, far below the 50-200 char LLM-optimized baseline. Descriptions lack WHAT the tool does, WHEN to use it, and what it returns. Example: 'Read the user's profile' provides no context for selection vs similar tools.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. Responses return raw Microsoft Graph JSON without indicating which fields are present or their types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 25 | 2026-07-28+ | v2 |
Error responses return raw HTTP status codes and response text without recovery guidance. Example: 'errorCode: 404, errorMessage: <raw response>' tells LLM nothing about what to do next. Should include 'User not found. Try searching with a partial name.'
Tool 'readUserProfileSkillsAndInterests' violates single-responsibility principle by combining two independent read operations. Should be split into separate tools so agent can compose them independently.