MCP server for autonomous task execution with ACP-style task management
Task-mcp has 13 tools with consistent naming (task_verb_entity pattern) and basic schemas. However, most tool descriptions are minimal (10-50 chars), parameter descriptions lack detail, and output schemas are undocumented. No tool annotations (readOnlyHint/destructiveHint). Error handling is generic. The server follows a CRUD structure but lacks LLM-optimized guidance on when/why to use each tool. Descriptions do not explain dependencies (e.g., create_milestone requires task_id first) or recovery paths.
Add a message to the task conversation thread
Create a new milestone in a task. NOTE: Milestones correspond to ACP Milestones and should follow this structure: Use the 'description' parameter to provide the full milestone content following this structure.
Create a new task with title and description. NOTE: Tasks in this system correspond to ACP Projects. The task's progress structure follows the ACP progress.yaml format with: - Milestones (major phases) - Task Items (granular work items within milestones) - Progress tracking (percentages, status, completion dates) After creating a task, use: - task_create_milestone to add milestones - task_create_task_item to add task items to milestones - task_update_progress to track overall completion The progress structure matches agent/progress.yaml format but stored as Firestore objects.
Create a new task item within a milestone. NOTE: Task items correspond to ACP Tasks and should follow this structure: Use the 'description' parameter to provide the full task content following this structure.
Delete a task
Minimal tool descriptions (10-50 chars) lack LLM guidance on when/why to use each tool. 'Get list of tasks' and 'Get a single task by ID' do not explain selection criteria, filtering, or pagination. LLMs cannot distinguish between similar tools.
No output schemas documented. Callers cannot know what fields to expect from get_tasks, get_task, or create_task responses. This breaks tool chaining, LLMs cannot extract IDs for downstream calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Clients cannot distinguish safe reads from destructive writes. task_delete_task should be marked destructiveHint=true; task_get_* should be marked readOnlyHint=true.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | <=2025-11-25 | v2 |
Get a milestone by ID
Get a single task by ID
Get a task item by ID
Get list of tasks
Update a milestone
Update overall progress percentage
Update a task
Update a task item
Parameter descriptions are generic or missing. 'Task ID' does not explain format (UUID? string?). 'Milestone description' does not state length limits or required structure. LLMs cannot validate inputs before calling.
No error recovery guidance. Error responses from handler functions are wrapped in generic McpError(InternalError, ...) with no actionable next steps. LLMs cannot self-correct or retry intelligently.