Current collected state Current
Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xk3vin/vikunja-mcp
MCP server for Vikunja task management
┌────────────────────────────────────────────────────────────┐
│ │
│ ██╗ ██╗██╗██╗ ██╗██╗ ██╗███╗ ██╗ ██╗ █████╗ │
│ ██║ ██║██║██║ ██╔╝██║ ██║████╗ ██║ ██║██╔══██╗ │
│ ██║ ██║██║█████╔╝ ██║ ██║██╔██╗ ██║ ██║███████║ │
│ ╚██╗ ██╔╝██║██╔═██╗ ██║ ██║██║╚██╗██║██ ██║██╔══██║ │
│ ╚████╔╝ ██║██║ ██╗╚██████╔╝██║ ╚████║╚█████╔╝██║ ██║ │
│ ╚═══╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚════╝ ╚═╝ ╚═╝ │
│ ███╗ ███╗ ██████╗██████╗ │
│ ████╗ ████║██╔════╝██╔══██╗ │
│ ██╔████╔██║██║ ██████╔╝ │
│ ██║╚██╔╝██║██║ ██╔═══╝ │
│ ██║ ╚═╝ ██║╚██████╗██║ │
│ ╚═╝ ╚═╝ ╚═════╝╚═╝ │
│ │
│ > MCP server for Vikunja task management │
│ > Connect your AI assistant to your tasks │
│ │
└────────────────────────────────────────────────────────────┘
Connect your AI assistant to Vikunja, the open-source task manager. This MCP server lets you manage projects, tasks, kanban boards, and more—just by asking. Works with Claude Desktop, OpenCode, Cursor, and other MCP clients.
WHY VIKUNJA-MCP?
────────────────────────────────────────────────────────────
[+] Self-hosted friendly Your data stays on your server
[+] Full coverage 32 tools across all Vikunja APIs
[+] Reliable Retry logic with exponential backoff
[+] Production ready 86 tests, 90%+ code coverage
[+] Zero config Works out of the box with npx
────────────────────────────────────────────────────────────
# Install
$ npm install -g @0xk3vin/vikunja-mcp
# Set environment variables
$ export VIKUNJA_URL="https://your-vikunja-instance.com"
$ export VIKUNJA_API_TOKEN="your_api_token"
Add to your config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json{
"mcpServers": {
"vikunja": {
"command": "npx",
"args": ["-y", "@0xk3vin/vikunja-mcp"],
"env": {
"VIKUNJA_URL": "https://your-vikunja-instance.com",
"VIKUNJA_API_TOKEN": "your_api_token"
}
}
}
}
┌─────────────────────────────────────────────────────────┐
│ │
│ [■] PROJECTS Create, update, delete, archive │
│ [■] TASKS Full CRUD + filtering & sorting │
│ [■] KANBAN Buckets, move tasks, WIP limits │
│ [■] LABELS Create, attach, remove from tasks │
│ [■] COMMENTS Add and list task comments │
│ [■] ASSIGNEES Manage who's working on what │
│ [■] RELATIONS Subtasks, blocking, dependencies │
│ [■] VIEWS List, kanban, table, gantt │
│ [■] TEAMS List teams and members │
│ [■] USERS Search by name, username, email │
│ [■] NOTIFICATIONS List user notifications │
│ │
└─────────────────────────────────────────────────────────┘
Copy .env.example to .env and configure:
VIKUNJA_URL=https://your-vikunja-instance.com
VIKUNJA_API_TOKEN=your_api_token
Getting an API token:
$ git clone https://github.com/0xK3vin/vikunja-mcp.git
$ cd vikunja-mcp
$ npm install
$ npm run build
$ npm test
| Command | Description |
|---|---|
npm start | Run the server |
npm test | Run tests |
npm run build | Build TypeScript |
npm run lint | Lint code |
npm run inspect | Debug with MCP Inspector |
Full API reference: docs/API.md
Contributions welcome! See CONTRIBUTING.md for guidelines.
MIT - see LICENSE
╔════════════════════════════════════════════════════════════╗
║ Made by 0xK3vin ║
║ github.com/0xK3vin/vikunja-mcp ║
╚════════════════════════════════════════════════════════════╝
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
zodEnvironment{
"local_name": "zod",
"alias": false,
"peer_metadata": null
} | ^4.3.5 | runtime |
@modelcontextprotocol/sdkEnvironment{
"local_name": "@modelcontextprotocol/sdk",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
tsxEnvironment{
"local_name": "tsx",
"alias": false,
"peer_metadata": null
} | ^4.19.0 | development |
huskyEnvironment{
"local_name": "husky",
"alias": false,
"peer_metadata": null
} | ^9.1.7 | development |
eslintEnvironment{
"local_name": "eslint",
"alias": false,
"peer_metadata": null
} | ^9.39.2 | development |
vitestEnvironment{
"local_name": "vitest",
"alias": false,
"peer_metadata": null
} | ^4.0.16 | development |
globalsEnvironment{
"local_name": "globals",
"alias": false,
"peer_metadata": null
} | ^17.0.0 | development |
prettierEnvironment{
"local_name": "prettier",
"alias": false,
"peer_metadata": null
} | ^3.7.4 | development |
@eslint/jsEnvironment{
"local_name": "@eslint/js",
"alias": false,
"peer_metadata": null
} | ^9.39.2 | development |
@vitest/uiEnvironment{
"local_name": "@vitest/ui",
"alias": false,
"peer_metadata": null
} | ^4.0.16 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.6.0 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^22.0.0 | development |
lint-stagedEnvironment{
"local_name": "lint-staged",
"alias": false,
"peer_metadata": null
} | ^16.2.7 | development |
typescript-eslintEnvironment{
"local_name": "typescript-eslint",
"alias": false,
"peer_metadata": null
} | ^8.52.0 | development |
@vitest/coverage-v8Environment{
"local_name": "@vitest/coverage-v8",
"alias": false,
"peer_metadata": null
} | ^4.0.16 | development |
eslint-config-prettierEnvironment{
"local_name": "eslint-config-prettier",
"alias": false,
"peer_metadata": null
} | ^10.1.8 | development |
@modelcontextprotocol/inspectorEnvironment{
"local_name": "@modelcontextprotocol/inspector",
"alias": false,
"peer_metadata": null
} | ^0.7.0 | development |
Source distribution
{
"shasum": "3ecfdb6a25f04713c779638b5ca88f8d828ee413",
"tarball": "https://registry.npmjs.org/@0xk3vin/vikunja-mcp/-/vikunja-mcp-1.1.1.tgz",
"fileCount": 10,
"integrity": "sha512-qGB3KCRyoxmZInDgOdV/d5WloKL8lXt+HEpttqYZmgPXrWfxPCMETvgW2sFNy+Bcf2v4cAjAzIjnz49pOGS1Ow==",
"signatures": [
{
"sig": "MEUCIQCKJwCIe8ToqXwEDW83cUnZJ2UyAZmnSXS1HwWz1ZuwTAIgF8gTbLKWpkDs2MFk0GUV0JAWf4nTtTutUfO5wWG9tqM=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 51339
}Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:78187ea6f94e34e861d2b07ab7104d5db607d774d510596c5affbaf89ed9027a