A task management MCP server that provides tools to list, add, remove, and mark tasks as complete. Integrates with LangChain and Streamlit for AI-powered task management.
This server has basic tool structure but suffers from critical gaps in schema completeness, parameter documentation, and error handling. All four tools are properly registered with FastMCP decorators and have short descriptions, but input schemas lack detailed parameter type information and descriptions. The schema visibility is limited to the code shown, where only high-level function signatures appear; JSON Schema details for parameters are inferred from type hints rather than explicitly visible. No error handling guidance, no output schemas documented, and no tool annotations. The server uses HTTP/Streamable transport which is positive, but the core tool definitions need substantial improvement for production use.
Add a new task
List all tasks.
Mark a task as complete
Remove a task by its ID.
Missing output schema documentation. No tool documents its return type or expected response structure. LLMs cannot reason about what fields to expect in responses or plan chained calls.
Parameter descriptions are minimal or absent. The 'task_id' parameter appears in remove_task and mark_complete but lacks detail about format (UUID? string? integer?). Parameter descriptions must explain the expected format, constraints, and example usage.
No error handling or recovery guidance. Tools do not document failure modes, validation errors, or what the LLM should do if a task_id is invalid or not found. Error responses should guide the agent toward recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
No tool annotations. The server does not declare readOnlyHint, destructiveHint, or idempotentHint. list_tasks is read-only; remove_task is destructive and non-idempotent; add_task and mark_complete are write operations. These annotations guide safe agent planning.
Tool descriptions are too brief (<20 chars or vague). 'List all tasks' (14 chars) and 'Add a new task' (14 chars) lack context about when to use each tool, what structure tasks have, or dependencies. Descriptions should be 50-200 characters with actionable context.
Input schema visibility is limited. While FastMCP decorators infer schemas from Python type hints, explicit JSON Schema definitions with full property descriptions are not visible in the provided code. Schema details for task_id (string type, required, format/pattern constraints) should be explicitly documented.
No validation of task_id format or content. If task_id is supposed to be a UUID or numeric ID, the tool should validate input and return a clear error message when invalid. Currently, invalid IDs likely cause silent failures or generic exceptions.
Task structure is not documented. The function return type is Union[list[Task], str] but the Task model definition is not shown. LLMs cannot reason about task fields (id, name, completed, created_at?) or compose downstream operations without knowing the structure.
No pagination or result limits documented. If list_tasks could return hundreds of tasks, there should be page/offset and limit parameters. Without pagination, large task lists blow the context window.