Quản lý todo list cá nhân với lưu trữ SQLite local - hỗ trợ CRUD đầy đủ, search theo từ khóa, stateful và persistent. Lý tưởng cho AI agent productivity tool (giống Todoist mini hoặc Linear task manager).
TodoSQLite MCP presents a well-structured, focused tool suite with clear naming conventions and comprehensive parameter documentation. All 5 tools follow verb_noun naming (add_todo, list_todos, toggle_todo, delete_todo, search_todos) and include substantive descriptions (range 120-180 chars). Input schemas are fully defined with Zod validation, types, and per-parameter descriptions. However, output schemas are not formally documented, error handling lacks actionable recovery guidance, and there are no tool annotations (destructiveHint, idempotentHint) despite operations that clearly warrant them. The server demonstrates solid fundamentals but misses production-grade polish around output structure and error classification.
Add a new task to your todo list. Optionally set a due date — supports natural language like 'tomorrow' or 'today', or ISO format like '2026-03-15'.
Permanently delete a todo by its ID. This action is irreversible. Get IDs via `list_todos`.
List all todos in your todo list. Displays each task's ID, completion status [x]/[ ], description, and due date (if set). Returns a friendly message if the list is empty.
Search for todos by keyword. Performs a case-insensitive LIKE search over task descriptions. Returns all matching tasks with their IDs and status.
Toggle the completion status of a todo by its ID. If the task is currently pending, it will be marked as completed (and vice versa). Get IDs via `list_todos`.
Output schemas are not formally documented. Tool responses are formatted as natural-language strings with emoji formatting, but LLMs cannot parse the structured fields (id, task, due_date, completed status) reliably without a declared schema. The execute functions return user-friendly text, but downstream tool calls expecting structured data will fail.
Error handling lacks actionable recovery guidance. Errors return user-friendly strings (e.g. 'Failed to add task: <message>') but do not tell the agent what to do next. For 'No todo found with ID 123', the response suggests 'Use list_todos', but this is not in a machine-parseable format the agent can reliably act on.
Destructive operations (delete_todo) lack annotations and confirmation mechanism. The delete_todo tool has no idempotentHint or destructiveHint annotation, and no confirm_before_execute pattern to prevent accidental data loss. Agents cannot distinguish safe retry operations from irreversible side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Missing tool annotations. The fastmcp framework supports tool metadata (readOnlyHint, destructiveHint, idempotentHint) but none are declared. list_todos and search_todos should be marked readOnlyHint=true; delete_todo should be marked destructiveHint=true and idempotentHint=false. This deprives agents of critical safety and planning information.
add_todo description does not explicitly state that the operation creates persistent data. Users and agents need to know upfront that this modifies state. The description should open with 'Creates and persists a new task...' to signal irreversibility.
Pagination and result limits are not addressed. list_todos returns all todos without pagination. If a user has 10,000 todos, the response could blow the context window. Add optional limit and offset/cursor parameters, and document the recommended page size in the description.