MCP server for managing Azure DevOps work items
Three tools with explicit JSON Schema definitions and descriptions, but significant gaps in parameter documentation and error handling guidance. Tool names follow verb-noun pattern well. Descriptions are present but lack actionable context for LLM selection. Schemas are properly structured with required fields, but several parameters lack descriptions entirely. No output schemas documented. Error messages in implementation return generic exception strings without recovery guidance. Missing confirmation patterns for destructive operations (delete_work_item). Resources feature well-implemented with pagination and clear return formats.
Create a new work item (e.g., User Story, Task).
Delete a work item by ID.
Update a work item's fields.
delete_work_item lacks confirmation/dry-run pattern. No warning that operation is irreversible. Description is minimal (11 chars) and does not convey destructive nature or precautions. Violates critical checklist for destructive operations.
No output schemas documented for any tool. Responses return Dict but LLM cannot know which fields to expect (id, url, fields structure, etc.). This breaks downstream tool chaining and forces exploratory calls.
Error handling returns raw exception strings ('Failed to fetch work item {work_item_id}: {e}') without actionable recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 0 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Parameter 'story_points' in create_work_item lacks description in schema (schema shows no description field for this param). Parameter 'state' in update_work_item has no enum constraint, accepts free-form strings, inviting hallucinated invalid states.
Tool descriptions do not explain when to use each tool instead of similar tools (all three operate on work items but distinctions are not documented). Descriptions do not state prerequisites or dependencies.
Parameter 'parent_id' and 'type' could be ambiguous to LLMs. 'type' description says 'e.g. User Story, Task', example values rather than enum constraint. LLM may pass invalid types not in Azure DevOps taxonomy.
No tool annotations (destructiveHint, idempotentHint) present. delete_work_item should be annotated as destructive to signal to agents that this operation cannot be undone.