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.2.0.tar.gz (51.4 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.2.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rmc_vikunja_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 51.4 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.2.0.tar.gz
Algorithm Hash digest
SHA256 26ad3d7d84af195cc9a79d56caecec2f682f0073b9d6bcf0d1aa8baa587175c5
MD5 5daf9fa26d00a97500ac51af241fbf07
BLAKE2b-256 a7af36a3d1c245b37b45fed7058adcaf413a86878f9be991634eece74c7cd29a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rmc_vikunja_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52b107a10e3822c408d603ea282fbe183c1ec3e6dd2b1b820a21c1fe9139147f
MD5 a72fbdad28e4e4e9b9644e971a4766c5
BLAKE2b-256 5fbf69eb4f92b39529e20eb6a56faf761c723e53a8ec9e5eebe6cd7a29bad724

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