An MCP server for task management with tools to create, list, get, update, delete, and complete tasks, plus prompts and resources for task planning and review
The server defines 7 tools with reasonable naming (all start with action verbs) and mostly complete schemas. However, there are significant gaps: parameter descriptions lack actionable constraints, no output schemas are documented, error handling is generic, and critical security/composition patterns are absent. The tool set is self-contained but lacks guidance on chaining and pagination. Descriptions are adequate (100-150 chars on average) but could be more LLM-optimized with format constraints and error recovery guidance.
Mark a task as completed Args: task_id: ID of the task to complete
Create a new task Args: title: Task title (required) description: Detailed description of the task priority: Task priority (low, medium, high, urgent) due_date: Due date in YYYY-MM-DD format tags: Comma-separated tags (e.g., "work,urgent,meeting")
Delete a task Args: task_id: ID of the task to delete
Get a specific task by ID Args: task_id: The ID of the task to retrieve
Get summary statistics for all tasks
List all tasks with optional filtering Args: status: Filter by status (pending, in_progress, completed, cancelled) priority: Filter by priority (low, medium, high, urgent)
No output schemas documented. Tools return Task, List[Task], or string, but the structure of Task object is not documented in tool definitions. LLMs cannot plan downstream calls or extract fields without seeing the response structure.
Enum constraints in parameter descriptions are narrative, not machine-parseable. Example: 'priority: Task priority (low, medium, high, urgent)' should use JSON Schema enum constraint. Descriptions mention valid values but don't formalize them, requiring LLMs to parse text.
No pagination support. list_tasks returns all matching tasks with no limit, offset, page_size, or total_count. For large task databases, this will exhaust context windows. Baseline pattern requires limit and pagination fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Update an existing task Args: task_id: ID of the task to update title: New title for the task description: New description for the task priority: New priority (low, medium, high, urgent) status: New status (pending, in_progress, completed, cancelled) due_date: New due date in YYYY-MM-DD format tags: New comma-separated tags
Destructive operations (delete_task) lack confirmation or dry-run pattern. No confirmation-request mechanism. Agents can accidentally delete tasks without a safety layer.
Error messages are generic ValueError re-raises. No recovery guidance. Example: 'Failed to create task: <error>' tells LLM nothing about next steps. Should include actionable guidance like 'Invalid priority: must be low|medium|high|urgent. Current value: "critical"'.
No idempotency support. Agents retrying a create_task call may produce duplicate tasks. No idempotency key or deduplication logic. create_task should support an optional idempotency_key parameter to guarantee single-write semantics.
Tool chains incomplete. create_task returns a Task with an ID, but there's no documented guarantee that this ID works with get_task, update_task, or delete_task. Response should explicitly include 'id' field in documented output schema.
No tool annotations. Tools like delete_task should include destructiveHint=true in schema. update_task and get_task should include readOnlyHint or similar. These annotations help agents reason about side effects.
Parameter format constraints not specified. due_date accepts 'YYYY-MM-DD' per description, but no regex pattern or format constraint in schema. Date parsing errors are not guided. Should validate and return 'Invalid due_date: expected YYYY-MM-DD, got "12/15/2024"'.
tags parameter is free-form string. No validation of tag format, length, or character restrictions. Agents could pass very long or malformed tags. Should specify max tag length, character whitelist, or max tag count.