Production-oriented MCP server and orchestration helpers for Vikunja
Strong foundation with 12 well-named tools using consistent verb_noun patterns (list_, get_, create_, update_, transition_, claim_, add_, move_, sync_). All tools have descriptions (avg 120 chars, within 10-1024 range). Input schemas are complete with Pydantic models providing type definitions. However, output schemas are not documented, responses are inferred as dicts without field specifications. Parameter descriptions are present but some lack constraint details (e.g., 'to_state' accepts 7 values but no enum). Error handling is minimal, no recovery guidance or categorization. Security is adequate (no secrets in params) but lacks permission gates and audit trail documentation.
Append structured execution note to a task comment stream for audit trail. Mutates remote state.
Atomically claim next eligible ready task for an agent using deterministic ordering. Mutates remote state and local lock metadata.
Create a structured task and optionally enforce idempotency with source_ref. Mutates remote state.
Fetch one task with full details including comments. Read-only operation. Use before mutating state.
Fetch tasks for a specific project view. For kanban views it returns buckets with tasks; for table/gantt/list it returns a task list.
List all views in a project (list/gantt/table/kanban). Read-only operation. Use before view-specific operations.
Output schemas not documented. Tools return dict with no field specification. LLMs cannot plan downstream calls or extract required data (e.g., task_id from create_task response).
Enum constraints missing for constrained parameters. 'to_state' accepts 7 values (ready/claimed/in_progress/review/done/blocked/cancelled) but declared as free-form string. 'note_type' accepts 4 values but no enum. Invites hallucinated invalid values.
No error handling guidance. Tools return dict responses with no documented error cases, recovery paths, or categorization (retryable vs fatal). Agents cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
List tasks with agent-friendly filters. Read-only operation. Use before planning or when selecting work candidates.
Update a task position for a specific project view (table/kanban ordering). Mutates task ordering.
Move a task to a kanban bucket in a specific project view. Mutates task bucket mapping.
Synchronize local tasks/ YAML manifests with Vikunja tasks. Supports dry-run and conflict reporting. Mutates local and/or remote state.
Apply validated state transition using status:* labels. Expects workflow discipline (ready->claimed->in_progress->review->done). Mutates remote state.
Update bounded mutable fields (title/description/priority/due_date/labels/assignees). Mutates remote state.
Parameter descriptions lack constraint details. 'limit' parameters have no min/max bounds. 'priority' has no range. 'due_date' format not specified (ISO 8601 assumed but not stated). Ambiguous constraints invite invalid input.
No permission gates or audit trail documentation. Destructive tools (delete via transition_task, sync_fs_tasks) lack permission checks or logging guidance. No scope declarations (read:tasks, write:tasks).