MCP server for managing todo tasks with FastAPI backend integration
TodoAssistant has 5 tools with basic schemas and descriptions, but significant gaps prevent production use. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization), and input schemas are present but minimal. Critical issues: (1) task_id parameter accepts both UUID and title string with fallback logic, creating ambiguity that violates the 'natural identifiers' pattern, LLMs cannot predict which format to use; (2) no output schemas documented, forcing LLMs to guess response structure; (3) error messages are generic ('Task not found or unauthorized') without recovery guidance; (4) no pagination for list_tasks despite potentially large result sets; (5) descriptions lack WHEN/WHY context, e.g., 'Create a new todo task' does not explain when to use add_task vs update_task. Per-tool average: 42/100.
Create a new todo task.
Mark a task as completed.
Delete a task.
List all todo tasks for the authenticated user.
Update an existing task.
task_id parameter accepts both UUID and title string with fallback logic, creating ambiguity. LLMs cannot predict which format to use without explicit guidance. Violates 'natural identifiers' pattern, should provide separate task_id and task_name parameters or document the precedence clearly.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., task_id from add_task response). Violates 'tool' and 'response-shaper' patterns.
Descriptions are 25-40 characters, below the 50-200 char baseline for LLM optimization. Lack WHEN/WHY context and dependency hints. E.g., 'Create a new todo task' does not explain when to use add_task vs update_task or what fields are required.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Error messages are generic ('Task not found or unauthorized', 'No authenticated user context') without recovery guidance. Do not tell LLM what to do next. Violates 'recovery-guide' pattern.
list_tasks has no pagination (limit, offset, page_size) or result count. Large task lists will blow context window. Violates 'paginated-result' pattern.