Skip to main content
Glama
lindenlion

Vikunja MCP Server

by lindenlion

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_projects

List all projects

get_project

Get project details

create_project

Create a new project

update_project

Update a project

delete_project

Delete a project

list_tasks

List/filter/search tasks across all projects

get_task

Get task details including comments

create_task

Create a task in a project

update_task

Update task properties

delete_task

Delete a task

complete_task

Mark a task as done

reopen_task

Mark a task as not done

add_comment

Add a comment to a task

list_labels

List all labels

create_label

Create a new label

add_label_to_task

Attach a label to a task

remove_label_from_task

Remove a label from a task

weekly_review

Generate a weekly review summary

get_calendar

Agenda view of tasks with due dates (overdue + upcoming)

create_relation

Link two tasks (subtask, blocking, precedes, related, …)

remove_relation

Remove a relation between two tasks

bulk_update_tasks

Update multiple tasks at once (priority, status, dates, …)

get_notifications

Get all notifications with unread count

create_filter

Save a named filter for reuse

get_filter

Get a saved filter by ID

update_filter

Update a saved filter

delete_filter

Delete a saved filter

get_calendar_events

Events 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

Variable

Required

Description

VIKUNJA_URL

Yes

Base URL of your Vikunja instance (no trailing slash)

VIKUNJA_TOKEN

Yes

API token from Vikunja Settings > API Tokens

MCP_AUTH_TOKEN

Recommended

Shared secret for the /mcp endpoint — see Auth

PORT

No

Port to listen on (default: 3000)

CALENDAR_ICS_FILES

No

Comma-separated paths to local .ics files

CALENDAR_ICS_URLS

No

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

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

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)

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