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.
README
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.
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/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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.