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.3.0.tar.gz (53.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.3.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rmc_vikunja_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 53.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.3.0.tar.gz
Algorithm Hash digest
SHA256 3df2d5a7d074fa03007a48346828a97f7b8c901609058e9c9ee0f596cca1b1db
MD5 38804119cd9a32453b9ffaa078a6a8a6
BLAKE2b-256 8c62ab7abae1aa0ecd8848454f6a21b0780d4a678b2d55d1da93aa414f85976c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rmc_vikunja_mcp-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7bee1043ba17f5197d932cb99df5d63db9a30c994c4ef1ef8d71808904af005b
MD5 693bb755f439617834264e1dab4a72fb
BLAKE2b-256 393e77f2bb848c9535fda9d3abac608434f6a7c8f67ad2223603381022a6c7ec

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