Vikunja MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VIKUNJA_URL | Yes | Vikunja base URL (with or without /api/v1) | |
| VIKUNJA_API_TOKEN | Yes | API token or login JWT | |
| VIKUNJA_ALLOW_DELETE | No | Set to 'true' to expose delete_task | |
| VIKUNJA_DEFAULT_PROJECT_ID | No | Project used by create_task when projectId is omitted |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsB | List Vikunja projects the user can access. Returns id, title, description, identifier and parent project. Use the id with list_tasks or create_task. |
| get_projectC | Get one Vikunja project by id. |
| create_projectB | Create a new Vikunja project. Optionally nest it under a parent project. |
| list_tasksA | List tasks, across all projects or within one project. Returns id, title, done, due date, priority, label names, assignee usernames and a web url (no descriptions — use get_task). By default only open tasks are returned. Set assignedToMe=true for the current user's tasks. For advanced queries pass a raw Vikunja |
| get_taskB | Get a single task with full details: description, dates, priority, labels and assignees. |
| create_taskB | Create a task in a project. Use list_projects to find the projectId and list_labels for label ids. |
| update_taskA | Update fields of an existing task. Only the fields you pass are changed. To clear a date pass null. labelIds, when given, REPLACES the task's labels. Use complete_task to just mark a task done. |
| complete_taskB | Mark a task as done (or reopen it with done=false). |
| list_labelsB | List labels available to the user, with ids for use in create_task / update_task. |
| create_labelC | Create a new label. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Tools are clearly separated by resource (projects, tasks, labels) and action (list, get, create, update, complete). The only minor overlap is update_task vs complete_task for marking a task done, but the description explicitly redirects that use case.
All tool names follow a consistent snake_case verb_noun pattern (list_projects, get_task, create_label, etc.). There are no deviations or mixed conventions.
With 10 tools, the set is well within the ideal 3-15 range and each tool maps to a distinct operation. It is focused without unnecessary redundancy.
Task management has create/get/update/complete but lacks delete_task. Projects and labels lack update and delete operations entirely, which are notable gaps for a complete task management surface.