MCP Hub
Back to servers

Vikunja MCP Server

Connects Claude to self-hosted Vikunja instances for conversational task and project management. Supports CRUD operations on projects and tasks, plus labels, comments, weekly reviews, calendar feeds, and task relations.

glama
Updated
Apr 6, 2026

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

ToolDescription
list_projectsList all projects
get_projectGet project details
create_projectCreate a new project
update_projectUpdate a project
delete_projectDelete a project
list_tasksList/filter/search tasks across all projects
get_taskGet task details including comments
create_taskCreate a task in a project
update_taskUpdate task properties
delete_taskDelete a task
complete_taskMark a task as done
reopen_taskMark a task as not done
add_commentAdd a comment to a task
list_labelsList all labels
create_labelCreate a new label
add_label_to_taskAttach a label to a task
remove_label_from_taskRemove a label from a task
weekly_reviewGenerate a weekly review summary
get_calendarAgenda view of tasks with due dates (overdue + upcoming)
create_relationLink two tasks (subtask, blocking, precedes, related, …)
remove_relationRemove a relation between two tasks
bulk_update_tasksUpdate multiple tasks at once (priority, status, dates, …)
get_notificationsGet all notifications with unread count
create_filterSave a named filter for reuse
get_filterGet a saved filter by ID
update_filterUpdate a saved filter
delete_filterDelete a saved filter
get_calendar_eventsEvents from configured .ics files and webcal feeds, grouped by day

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.js

Then 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

VariableRequiredDescription
VIKUNJA_URLYesBase URL of your Vikunja instance (no trailing slash)
VIKUNJA_TOKENYesAPI token from Vikunja Settings > API Tokens
MCP_AUTH_TOKENRecommendedShared secret for the /mcp endpoint — see Auth
PORTNoPort to listen on (default: 3000)
CALENDAR_ICS_FILESNoComma-separated paths to local .ics files
CALENDAR_ICS_URLSNoComma-separated webcal/https iCal subscription URLs

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 32

Add 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 integration

The get_calendar_events tool reads events from any number of .ics sources and returns them grouped by day. When configured, weekly_review also shows a THIS WEEK'S CALENDAR section so your schedule and task backlog are reviewed together.

Posteo users: your webcal subscription URL is under Calendar Settings → iCal subscription. Add it to CALENDAR_ICS_URLS — no sync daemon needed.

export CALENDAR_ICS_URLS=webcal://posteo.de/calendars/you/personal

For multiple calendars, separate with commas:

export CALENDAR_ICS_URLS=webcal://posteo.de/calendars/you/personal,webcal://posteo.de/calendars/you/work

For local .ics files (e.g. synced from CalDAV via vdirsyncer):

export CALENDAR_ICS_FILES=/home/user/calendars/shifts.ics,/home/user/calendars/personal.ics

Both vars are optional. Calendar features are silently disabled when neither is set.

Vikunja task calendar feed

The server exposes a machine-readable iCal feed you can subscribe to in any calendar app:

webcal://your-server.example.com/calendar.ics

It 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 calls
  • Runtime: Node.js + Express
  • SDK: @modelcontextprotocol/sdk v1.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

Reviews

No reviews yet

Sign in to write a review