Blog
PLEN

Vikunja — task tracker który gada z agentami

Trello było wygodne, ale dane na cudzym serwerze. Vikunja to lokalna alternatywa, do tego z MCP. Pokazuję jak ją podpiąłem do Claude Code i co realnie się zmieniło w workflow.

·3 min read
Vikunja — task tracker który gada z agentami

Przez rok byłem na Trello. Działało. Ale każdy task, każdy komentarz, każdy załącznik leciał na cudzy serwer. Spróbowałem Notion, to samo. Wreszcie postawiłem Vikunję u siebie i podpiąłem MCP. Pokazuję dlaczego nie wracam.

Co to Vikunja

Open source, self-hosted, napisany w Go. Kolumny, tagi, deadline'y, przypomnienia. Ma API REST, SDK, dwustronnie integrowalna ze sobą.

Stack u mnie:

  • Vikunja backend w Dockerze (port wewnętrzny 3456)
  • PostgreSQL jako baza
  • Caddy z TLS przez Cloudflare cert
  • Token API ograniczony tylko do mojego konta agenta

MCP server

To clue. Plugin vikunja-mcp daje agentowi dostęp do:

  • vikunja_create_task (z labels, dueDate, parent)
  • vikunja_list_tasks (po projekcie, statusie, label)
  • vikunja_update_task (przeniesienie, deadline, status)
  • vikunja_delete_task (z guard hookiem!)

Konfiguracja:

{
  "mcpServers": {
    "vikunja": {
      "command": "vikunja-mcp",
      "env": {
        "VIKUNJA_URL": "http://localhost:3456",
        "VIKUNJA_TOKEN": "claude-mcp-..."
      }
    }
  }
}

Workflow #1: rozbicie briefu na taski

Najczęstsze użycie. Wklejam brief od klienta lub własną notatkę:

> Rozbij ten brief na taski w projekcie "kamilkaletka.dev/blog".
  Użyj label-i tematycznych. Ustaw deadline na -2 dni przed datą publikacji.

Agent woła vikunja_list_projects, znajduje "kamilkaletka.dev/blog", potem 6× vikunja_create_task z odpowiednimi labelami i deadline'ami. 30 sekund vs 5 minut ręcznie.

Workflow #2: morning standup z agentem

> Co mam zaplanowane na dzisiaj? Pokaż taski z deadline na dziś + przeterminowane.

Agent woła vikunja_list_tasks z filtrem due_lte=today i status=open, formatuje wyniki w czytelnej liście. Mam ~10 sekund pełny widok.

Workflow #3: zamykanie tasków konwersacyjnie

> Zacznij task "Napisać post o MCP". Skończyłem post o Vikunji, zamknij.

Agent zarządza statusami z poziomu rozmowy. Nie wchodzę do UI cały tydzień.

Co dało lokalność

Trzy rzeczy których w cloudzie nie miałem:

1. Pełna kontrola ACL. API token agenta widzi tylko jeden projekt (workspace dla agenta). Resztę ma tylko mój główny user. Nawet jeśli agent zwariuje, scope jest mały.

2. Backup zintegrowany. Vikunja DB leci do tego samego pg_dump co reszta moich serwisów. Jak coś, mam point-in-time recovery.

3. Brak rate limitów. Agent tworzy 50 tasków w 3 sekundy. Trello by mnie ograniczyło, Vikunja na localhoście, nie ma problemu.

Konfiguracja minimalna

Jeśli chcesz powtórzyć:

# docker-compose.yml
services:
  vikunja:
    image: vikunja/vikunja:latest
    environment:
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_HOST: postgres
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_PASSWORD: ...
    ports:
      - "127.0.0.1:3456:3456"
    depends_on:
      - postgres
 
  postgres:
    image: postgres:15
    environment:
      POSTGRES_USER: vikunja
      POSTGRES_PASSWORD: ...
    volumes:
      - vikunja-pg:/var/lib/postgresql/data
 
volumes:
  vikunja-pg:

docker compose up -d, otwórz http://localhost:3456, utwórz konto, wygeneruj token, podepnij MCP. Razem ~10 minut setup'u.

Co NIE działa idealnie

1. Mobile app jest słaby. Browser na telefonie OK, dedykowany klient, średnio. Dla mobile używam Telegrama do agenta, który aktualizuje za mnie.

2. Brak dependencies między taskami w UI. Niby są jako relacje, ale wizualizacja słaba. Dla naprawdę złożonych projektów wracam do Linear.

3. Filtrowanie po wielu labelach robi confused. Agent radzi sobie lepiej niż UI z compound queries.


Vikunja to "Trello które żyje u mnie i gada z agentem". Jak masz dane którymi nie chcesz dzielić się z trzecimi stronami, a workflow oparty na agencie, to najlepszy układ jaki znalazłem.