Skip to main content

Model Context Protocol (MCP) server for Vikunja

Project description

rmc-vikunja-mcp

A Model Context Protocol (MCP) server that connects LLM-based assistants to the Vikunja task-management platform.

Features

Category Tools
User get_user_info, search_users
Project list_projects, create_project, get_project, delete_project
Task get_task, list_tasks, list_tasks_global, create_task, update_task, delete_task
Label list_labels, create_label, add_label_to_task, remove_label_from_task
Assignee assign_user_to_task, unassign_user_from_task
Comment list_task_comments, add_comment_to_task

Key design decisions

  • Read-Modify-Write for task updates – Vikunja's POST /tasks/{id} endpoint resets fields absent from the request body. update_task therefore fetches the current state, merges the caller's changes, strips read-only timestamps, and posts the result back.
  • extra="ignore" on Pydantic models – Unknown fields returned by future API versions are silently discarded instead of causing validation failures.

Quick start

Prerequisites

  • Python ≥ 3.14
  • uv (recommended) or pip
  • A running Vikunja instance with an API token

Configuration

Create a .env file (or export the variables directly):

VIKUNJA_URL=https://your-vikunja-instance.example.com
VIKUNJA_TOKEN=your-api-token

Running the server

You can run the server directly without manual installation using uvx (recommended):

uvx rmc-vikunja-mcp

Alternatively, you can install it via pip and run it using the CLI entry-point:

uv pip install rmc-vikunja-mcp
vikunja-mcp
# or
python -m vikunja_mcp

MCP client configuration (e.g. Claude Desktop)

Using uvx (Recommended)

This method does not require prior installation:

{
  "mcpServers": {
    "vikunja": {
      "command": "uvx",
      "args": [
        "rmc-vikunja-mcp"
      ],
      "env": {
        "VIKUNJA_URL": "https://your-vikunja-instance.example.com",
        "VIKUNJA_TOKEN": "your-api-token"
      }
    }
  }
}

Using globally installed package

If you installed the package via pip or uv pip install:

{
  "mcpServers": {
    "vikunja": {
      "command": "vikunja-mcp",
      "env": {
        "VIKUNJA_URL": "https://your-vikunja-instance.example.com",
        "VIKUNJA_TOKEN": "your-api-token"
      }
    }
  }
}

Development

# Clone and install dev dependencies
git clone https://github.com/rmc8/rmc_vikunja_mcp.git
cd rmc_vikunja_mcp
uv sync

# Run checks
uv run ruff check          # linter
uv run mypy src tests      # type checker (strict mode)
uv run pytest -v           # tests

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rmc_vikunja_mcp-0.1.0.tar.gz (50.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rmc_vikunja_mcp-0.1.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file rmc_vikunja_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: rmc_vikunja_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rmc_vikunja_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 12b0632bf560c90d9fbaffe2240c9bed4dd011413ae70a8b66791da6707b74fb
MD5 ee8a3b2e4003cba6b8f5bf34d2372569
BLAKE2b-256 f7225db22b409c195a20430b5a8b42605ffaf112200847aa748d01bab3e926f9

See more details on using hashes here.

File details

Details for the file rmc_vikunja_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rmc_vikunja_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for rmc_vikunja_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b54a71011311c6677fdb2a5dc671fbdf1cb08bd9f8770fb15f229ac51a37cf2
MD5 31120d4994a35fe69f3853846bf92d0f
BLAKE2b-256 fa76f084eaf2739430e059c941acd8ce3e1f548ad640c64976f3e09b01d5dd70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page