Vikunja MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vikunja MCP Serverwhat tasks are due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vikunja-mcp
A remote MCP (Model Context Protocol) server that connects Claude to your self-hosted Vikunja instance. Add it as a custom connector in Claude.ai and manage your tasks conversationally.
Available tools
Tool | Description |
| List all projects |
| Get project details |
| Create a new project |
| Update a project |
| Delete a project |
| List/filter/search tasks across all projects |
| Get task details including comments |
| Create a task in a project |
| Update task properties |
| Delete a task |
| Mark a task as done |
| Mark a task as not done |
| Add a comment to a task |
| List all labels |
| Create a new label |
| Attach a label to a task |
| Remove a label from a task |
| Generate a weekly review summary |
| Agenda view of tasks with due dates (overdue + upcoming) |
| Link two tasks (subtask, blocking, precedes, related, …) |
| Remove a relation between two tasks |
Quick start
npm install
npm run build
export VIKUNJA_URL=https://your-vikunja-instance.example.com
export VIKUNJA_TOKEN=your-api-token
export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
export PORT=9090
node build/index.jsThen add your server as a custom connector in Claude.ai under Settings > Connectors:
https://your-server.example.com/mcp?token=<MCP_AUTH_TOKEN>See DEPLOY-UBERSPACE.md for a full deployment walkthrough on Uberspace.
Configuration
Variable | Required | Description |
| Yes | Base URL of your Vikunja instance (no trailing slash) |
| Yes | API token from Vikunja Settings > API Tokens |
| Recommended | Shared secret for the |
| No | Port to listen on (default: |
Auth
When MCP_AUTH_TOKEN is set, the server rejects any request to /mcp that
does not include a matching ?token=… query parameter with a 401 Unauthorized
response.
Generate a strong token:
openssl rand -hex 32Add it to the connector URL in Claude.ai:
https://your-server.example.com/mcp?token=<your-token>If MCP_AUTH_TOKEN is left unset the endpoint is open to anyone who can reach
it — only do this on a private, firewalled network.
Calendar feed
The server exposes a machine-readable iCal feed you can subscribe to in any calendar app:
webcal://your-server.example.com/calendar.icsIt includes all open tasks and tasks completed in the last 30 days that have a start date, due date, or end date. Subscribe once and your calendar app will poll it automatically.
Architecture
Transport: Streamable HTTP (stateless) — the current MCP standard for remote servers
Auth: Query-parameter token (
MCP_AUTH_TOKEN) for the MCP endpoint; Vikunja API token for upstream API callsRuntime: Node.js + Express
SDK:
@modelcontextprotocol/sdkv1.x
Requirements
Node.js ≥ 18
A self-hosted Vikunja instance with an API token
A publicly-accessible URL for Claude.ai to reach the server
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lindenlion/vikunja-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server