vikunja-python 0.1.0__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. vikunja_python-0.1.2/PKG-INFO +144 -0
  2. vikunja_python-0.1.2/README.md +123 -0
  3. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/pyproject.toml +8 -2
  4. vikunja_python-0.1.2/vikunja_python.egg-info/PKG-INFO +144 -0
  5. vikunja_python-0.1.0/PKG-INFO +0 -16
  6. vikunja_python-0.1.0/README.md +0 -85
  7. vikunja_python-0.1.0/vikunja_python.egg-info/PKG-INFO +0 -16
  8. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/setup.cfg +0 -0
  9. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_auth_integration.py +0 -0
  10. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_cli_core.py +0 -0
  11. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_container.py +0 -0
  12. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_phase6_integration.py +0 -0
  13. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_task_hierarchy_integration.py +0 -0
  14. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/tests/test_task_models_unit.py +0 -0
  15. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/__init__.py +0 -0
  16. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/cli/__init__.py +0 -0
  17. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/cli/main.py +0 -0
  18. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/__init__.py +0 -0
  19. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/client.py +0 -0
  20. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/__init__.py +0 -0
  21. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/api_token.py +0 -0
  22. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/auth.py +0 -0
  23. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/base.py +0 -0
  24. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/bulk_assignees.py +0 -0
  25. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/filter.py +0 -0
  26. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/label.py +0 -0
  27. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/link_sharing.py +0 -0
  28. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/migration.py +0 -0
  29. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/phase6_medium.py +0 -0
  30. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/project.py +0 -0
  31. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/relation.py +0 -0
  32. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/task.py +0 -0
  33. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/task_expansion.py +0 -0
  34. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/user.py +0 -0
  35. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/core/models/webhook.py +0 -0
  36. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/mcp/__init__.py +0 -0
  37. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python/mcp/server.py +0 -0
  38. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python.egg-info/SOURCES.txt +0 -0
  39. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python.egg-info/dependency_links.txt +0 -0
  40. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python.egg-info/entry_points.txt +0 -0
  41. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python.egg-info/requires.txt +0 -0
  42. {vikunja_python-0.1.0 → vikunja_python-0.1.2}/vikunja_python.egg-info/top_level.txt +0 -0
@@ -0,0 +1,144 @@
1
+ Metadata-Version: 2.4
2
+ Name: vikunja-python
3
+ Version: 0.1.2
4
+ Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
+ Author-email: Your Name <your.email@example.com>
6
+ License-Expression: WTFPL
7
+ Project-URL: Homepage, https://github.com/oedo808/vikunja-python
8
+ Project-URL: Repository, https://github.com/oedo808/vikunja-python
9
+ Project-URL: Documentation, https://github.com/oedo808/vikunja-python
10
+ Requires-Python: >=3.11
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: httpx>=0.27.0
13
+ Requires-Dist: pydantic>=2.0.0
14
+ Requires-Dist: dateparser>=1.2.0
15
+ Requires-Dist: typer>=0.12.0
16
+ Requires-Dist: fastmcp>=0.1.0
17
+ Provides-Extra: test
18
+ Requires-Dist: pytest>=8.0.0; extra == "test"
19
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
20
+ Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"
21
+
22
+ # Vikunja Python
23
+
24
+ Python API wrapper, CLI tool, MCP server, and Home Assistant integration for the [Vikunja](https://vikunja.io/) task management system.
25
+
26
+ Built for Python 3.13 with httpx, pydantic v2, fastmcp, and typer.
27
+
28
+ ## Architecture
29
+
30
+ The project is structured into layers:
31
+
32
+ - **core/** -- Pydantic models, async HTTP client (httpx), error handling, API token and JWT authentication
33
+ - **cli/** -- Rich CLI built with typer and rich (task CRUD, project views, saved filter queries, dashboard summary)
34
+ - **mcp/** -- MCP server for agentic AI workflows (13 tools including list_tasks, get_task, create_task, list_saved_filter, task_summary)
35
+ - **custom_components/vikunja/** -- Home Assistant HACS integration (config flow, 3 sensors for saved filters)
36
+
37
+ ## Getting Started
38
+
39
+ ### Installation
40
+
41
+ From PyPI:
42
+
43
+ ```bash
44
+ pip install vikunja-python
45
+ ```
46
+
47
+ Or with uv:
48
+
49
+ ```bash
50
+ uv sync --all-extras
51
+ ```
52
+
53
+ ### Environment Variables
54
+
55
+ Configure your Vikunja instance in a `.env` file or your shell:
56
+
57
+ ```bash
58
+ VIKUNJA_URL="https://your-vikunja-instance.com/api/v1"
59
+ VIKUNJA_API_TOKEN="your_api_token_here"
60
+ VIKUNJA_DEBUG="true" # Enable verbose stderr logging
61
+ ```
62
+
63
+ ## Features
64
+
65
+ ### CLI (vikunja)
66
+
67
+ The CLI provides a human-friendly interface for managing tasks:
68
+
69
+ - list-tasks -- List tasks with rich table output (supports saved filters via negative project IDs)
70
+ - list-saved-filter -- Query saved filters (e.g., -2 for Due in 3 Days, -3 for Overdue, -4 for Due Today)
71
+ - summary -- Quick dashboard summary across all saved filters (parallel queries, optimized for ePaper dashboards)
72
+ - get-project -- Project details and views
73
+ - list-view-tasks -- List tasks from a specific project view
74
+ - get-task -- Full task details with description
75
+ - create-task -- Create a new task
76
+ - create-label -- Create a new label
77
+
78
+ ```bash
79
+ uv run vikunja list-tasks
80
+ uv run vikunja list-saved-filter --filter-id -2
81
+ uv run vikunja summary --top 5
82
+ ```
83
+
84
+ ### MCP Server (vikunja-mcp)
85
+
86
+ MCP server for agentic workflows. 13 tools including:
87
+
88
+ - list_tasks, get_task, create_task, update_task, complete_task, delete_task
89
+ - list_saved_filter -- Query saved filters (e.g., -2 for Due in 3 Days)
90
+ - task_summary -- Dashboard summary across all filters in one parallel call
91
+ - list_projects, get_project, list_project_view_tasks
92
+ - list_labels, create_label
93
+ - add_subtask, add_task_link
94
+
95
+ ```bash
96
+ uv run vikunja-mcp
97
+ ```
98
+
99
+ ### Home Assistant Integration
100
+
101
+ The package includes a HACS-ready custom component for Home Assistant:
102
+
103
+ - Config flow: URL + API token via the HA UI
104
+ - 3 sensors: Overdue, Due Today, Due in 3 Days (from Vikunja saved filters)
105
+ - Each sensor: state = task count, attributes = task list with IDs, titles, due dates
106
+ - Coordinator polls all filters in parallel every 5 minutes
107
+
108
+ Copy `custom_components/vikunja/` to your HA config's `custom_components/` directory, restart HA, and add via Settings -> Devices & Services.
109
+
110
+ ## Saved Filter Support
111
+
112
+ Vikunja saved filters are accessed via negative project IDs:
113
+
114
+ | ID | Filter |
115
+ |----|--------|
116
+ | -2 | Due in 3 Days |
117
+ | -3 | Overdue |
118
+ | -4 | Due Today |
119
+
120
+ The API route is `GET /tasks?project_id=-2` (NOT `/projects/-2/tasks`).
121
+
122
+ ## Testing
123
+
124
+ Unit tests run without Docker:
125
+
126
+ ```bash
127
+ uv run pytest tests/test_task_models_unit.py tests/test_label_model_validation.py -v
128
+ ```
129
+
130
+ Integration tests require Docker (spins up a real Vikunja instance via testcontainers):
131
+
132
+ ```bash
133
+ uv run pytest
134
+ ```
135
+
136
+ ## Security & Auth
137
+
138
+ - API Key auth is the primary authentication method for both CLI and MCP server
139
+ - JWT tokens are used for UI-specific features (kanban buckets, reactions) in the CLI only
140
+ - The MCP server only supports API key authentication
141
+
142
+ ## License
143
+
144
+ WTFPL - Do What the Fuck You Want to Public License.
@@ -0,0 +1,123 @@
1
+ # Vikunja Python
2
+
3
+ Python API wrapper, CLI tool, MCP server, and Home Assistant integration for the [Vikunja](https://vikunja.io/) task management system.
4
+
5
+ Built for Python 3.13 with httpx, pydantic v2, fastmcp, and typer.
6
+
7
+ ## Architecture
8
+
9
+ The project is structured into layers:
10
+
11
+ - **core/** -- Pydantic models, async HTTP client (httpx), error handling, API token and JWT authentication
12
+ - **cli/** -- Rich CLI built with typer and rich (task CRUD, project views, saved filter queries, dashboard summary)
13
+ - **mcp/** -- MCP server for agentic AI workflows (13 tools including list_tasks, get_task, create_task, list_saved_filter, task_summary)
14
+ - **custom_components/vikunja/** -- Home Assistant HACS integration (config flow, 3 sensors for saved filters)
15
+
16
+ ## Getting Started
17
+
18
+ ### Installation
19
+
20
+ From PyPI:
21
+
22
+ ```bash
23
+ pip install vikunja-python
24
+ ```
25
+
26
+ Or with uv:
27
+
28
+ ```bash
29
+ uv sync --all-extras
30
+ ```
31
+
32
+ ### Environment Variables
33
+
34
+ Configure your Vikunja instance in a `.env` file or your shell:
35
+
36
+ ```bash
37
+ VIKUNJA_URL="https://your-vikunja-instance.com/api/v1"
38
+ VIKUNJA_API_TOKEN="your_api_token_here"
39
+ VIKUNJA_DEBUG="true" # Enable verbose stderr logging
40
+ ```
41
+
42
+ ## Features
43
+
44
+ ### CLI (vikunja)
45
+
46
+ The CLI provides a human-friendly interface for managing tasks:
47
+
48
+ - list-tasks -- List tasks with rich table output (supports saved filters via negative project IDs)
49
+ - list-saved-filter -- Query saved filters (e.g., -2 for Due in 3 Days, -3 for Overdue, -4 for Due Today)
50
+ - summary -- Quick dashboard summary across all saved filters (parallel queries, optimized for ePaper dashboards)
51
+ - get-project -- Project details and views
52
+ - list-view-tasks -- List tasks from a specific project view
53
+ - get-task -- Full task details with description
54
+ - create-task -- Create a new task
55
+ - create-label -- Create a new label
56
+
57
+ ```bash
58
+ uv run vikunja list-tasks
59
+ uv run vikunja list-saved-filter --filter-id -2
60
+ uv run vikunja summary --top 5
61
+ ```
62
+
63
+ ### MCP Server (vikunja-mcp)
64
+
65
+ MCP server for agentic workflows. 13 tools including:
66
+
67
+ - list_tasks, get_task, create_task, update_task, complete_task, delete_task
68
+ - list_saved_filter -- Query saved filters (e.g., -2 for Due in 3 Days)
69
+ - task_summary -- Dashboard summary across all filters in one parallel call
70
+ - list_projects, get_project, list_project_view_tasks
71
+ - list_labels, create_label
72
+ - add_subtask, add_task_link
73
+
74
+ ```bash
75
+ uv run vikunja-mcp
76
+ ```
77
+
78
+ ### Home Assistant Integration
79
+
80
+ The package includes a HACS-ready custom component for Home Assistant:
81
+
82
+ - Config flow: URL + API token via the HA UI
83
+ - 3 sensors: Overdue, Due Today, Due in 3 Days (from Vikunja saved filters)
84
+ - Each sensor: state = task count, attributes = task list with IDs, titles, due dates
85
+ - Coordinator polls all filters in parallel every 5 minutes
86
+
87
+ Copy `custom_components/vikunja/` to your HA config's `custom_components/` directory, restart HA, and add via Settings -> Devices & Services.
88
+
89
+ ## Saved Filter Support
90
+
91
+ Vikunja saved filters are accessed via negative project IDs:
92
+
93
+ | ID | Filter |
94
+ |----|--------|
95
+ | -2 | Due in 3 Days |
96
+ | -3 | Overdue |
97
+ | -4 | Due Today |
98
+
99
+ The API route is `GET /tasks?project_id=-2` (NOT `/projects/-2/tasks`).
100
+
101
+ ## Testing
102
+
103
+ Unit tests run without Docker:
104
+
105
+ ```bash
106
+ uv run pytest tests/test_task_models_unit.py tests/test_label_model_validation.py -v
107
+ ```
108
+
109
+ Integration tests require Docker (spins up a real Vikunja instance via testcontainers):
110
+
111
+ ```bash
112
+ uv run pytest
113
+ ```
114
+
115
+ ## Security & Auth
116
+
117
+ - API Key auth is the primary authentication method for both CLI and MCP server
118
+ - JWT tokens are used for UI-specific features (kanban buckets, reactions) in the CLI only
119
+ - The MCP server only supports API key authentication
120
+
121
+ ## License
122
+
123
+ WTFPL - Do What the Fuck You Want to Public License.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vikunja-python"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "API wrapper, CLI tool, and MCP server for Vikunja"
5
5
  authors = [
6
6
  { name = "Your Name", email = "your.email@example.com" }
@@ -12,8 +12,14 @@ dependencies = [
12
12
  "typer>=0.12.0",
13
13
  "fastmcp>=0.1.0",
14
14
  ]
15
- requires-python = ">=3.13.12"
15
+ requires-python = ">=3.11"
16
16
  license = "WTFPL"
17
+ readme = "README.md"
18
+
19
+ [project.urls]
20
+ Homepage = "https://github.com/oedo808/vikunja-python"
21
+ Repository = "https://github.com/oedo808/vikunja-python"
22
+ Documentation = "https://github.com/oedo808/vikunja-python"
17
23
 
18
24
  [project.optional-dependencies]
19
25
  test = [
@@ -0,0 +1,144 @@
1
+ Metadata-Version: 2.4
2
+ Name: vikunja-python
3
+ Version: 0.1.2
4
+ Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
+ Author-email: Your Name <your.email@example.com>
6
+ License-Expression: WTFPL
7
+ Project-URL: Homepage, https://github.com/oedo808/vikunja-python
8
+ Project-URL: Repository, https://github.com/oedo808/vikunja-python
9
+ Project-URL: Documentation, https://github.com/oedo808/vikunja-python
10
+ Requires-Python: >=3.11
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: httpx>=0.27.0
13
+ Requires-Dist: pydantic>=2.0.0
14
+ Requires-Dist: dateparser>=1.2.0
15
+ Requires-Dist: typer>=0.12.0
16
+ Requires-Dist: fastmcp>=0.1.0
17
+ Provides-Extra: test
18
+ Requires-Dist: pytest>=8.0.0; extra == "test"
19
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
20
+ Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"
21
+
22
+ # Vikunja Python
23
+
24
+ Python API wrapper, CLI tool, MCP server, and Home Assistant integration for the [Vikunja](https://vikunja.io/) task management system.
25
+
26
+ Built for Python 3.13 with httpx, pydantic v2, fastmcp, and typer.
27
+
28
+ ## Architecture
29
+
30
+ The project is structured into layers:
31
+
32
+ - **core/** -- Pydantic models, async HTTP client (httpx), error handling, API token and JWT authentication
33
+ - **cli/** -- Rich CLI built with typer and rich (task CRUD, project views, saved filter queries, dashboard summary)
34
+ - **mcp/** -- MCP server for agentic AI workflows (13 tools including list_tasks, get_task, create_task, list_saved_filter, task_summary)
35
+ - **custom_components/vikunja/** -- Home Assistant HACS integration (config flow, 3 sensors for saved filters)
36
+
37
+ ## Getting Started
38
+
39
+ ### Installation
40
+
41
+ From PyPI:
42
+
43
+ ```bash
44
+ pip install vikunja-python
45
+ ```
46
+
47
+ Or with uv:
48
+
49
+ ```bash
50
+ uv sync --all-extras
51
+ ```
52
+
53
+ ### Environment Variables
54
+
55
+ Configure your Vikunja instance in a `.env` file or your shell:
56
+
57
+ ```bash
58
+ VIKUNJA_URL="https://your-vikunja-instance.com/api/v1"
59
+ VIKUNJA_API_TOKEN="your_api_token_here"
60
+ VIKUNJA_DEBUG="true" # Enable verbose stderr logging
61
+ ```
62
+
63
+ ## Features
64
+
65
+ ### CLI (vikunja)
66
+
67
+ The CLI provides a human-friendly interface for managing tasks:
68
+
69
+ - list-tasks -- List tasks with rich table output (supports saved filters via negative project IDs)
70
+ - list-saved-filter -- Query saved filters (e.g., -2 for Due in 3 Days, -3 for Overdue, -4 for Due Today)
71
+ - summary -- Quick dashboard summary across all saved filters (parallel queries, optimized for ePaper dashboards)
72
+ - get-project -- Project details and views
73
+ - list-view-tasks -- List tasks from a specific project view
74
+ - get-task -- Full task details with description
75
+ - create-task -- Create a new task
76
+ - create-label -- Create a new label
77
+
78
+ ```bash
79
+ uv run vikunja list-tasks
80
+ uv run vikunja list-saved-filter --filter-id -2
81
+ uv run vikunja summary --top 5
82
+ ```
83
+
84
+ ### MCP Server (vikunja-mcp)
85
+
86
+ MCP server for agentic workflows. 13 tools including:
87
+
88
+ - list_tasks, get_task, create_task, update_task, complete_task, delete_task
89
+ - list_saved_filter -- Query saved filters (e.g., -2 for Due in 3 Days)
90
+ - task_summary -- Dashboard summary across all filters in one parallel call
91
+ - list_projects, get_project, list_project_view_tasks
92
+ - list_labels, create_label
93
+ - add_subtask, add_task_link
94
+
95
+ ```bash
96
+ uv run vikunja-mcp
97
+ ```
98
+
99
+ ### Home Assistant Integration
100
+
101
+ The package includes a HACS-ready custom component for Home Assistant:
102
+
103
+ - Config flow: URL + API token via the HA UI
104
+ - 3 sensors: Overdue, Due Today, Due in 3 Days (from Vikunja saved filters)
105
+ - Each sensor: state = task count, attributes = task list with IDs, titles, due dates
106
+ - Coordinator polls all filters in parallel every 5 minutes
107
+
108
+ Copy `custom_components/vikunja/` to your HA config's `custom_components/` directory, restart HA, and add via Settings -> Devices & Services.
109
+
110
+ ## Saved Filter Support
111
+
112
+ Vikunja saved filters are accessed via negative project IDs:
113
+
114
+ | ID | Filter |
115
+ |----|--------|
116
+ | -2 | Due in 3 Days |
117
+ | -3 | Overdue |
118
+ | -4 | Due Today |
119
+
120
+ The API route is `GET /tasks?project_id=-2` (NOT `/projects/-2/tasks`).
121
+
122
+ ## Testing
123
+
124
+ Unit tests run without Docker:
125
+
126
+ ```bash
127
+ uv run pytest tests/test_task_models_unit.py tests/test_label_model_validation.py -v
128
+ ```
129
+
130
+ Integration tests require Docker (spins up a real Vikunja instance via testcontainers):
131
+
132
+ ```bash
133
+ uv run pytest
134
+ ```
135
+
136
+ ## Security & Auth
137
+
138
+ - API Key auth is the primary authentication method for both CLI and MCP server
139
+ - JWT tokens are used for UI-specific features (kanban buckets, reactions) in the CLI only
140
+ - The MCP server only supports API key authentication
141
+
142
+ ## License
143
+
144
+ WTFPL - Do What the Fuck You Want to Public License.
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: vikunja-python
3
- Version: 0.1.0
4
- Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
- Author-email: Your Name <your.email@example.com>
6
- License-Expression: WTFPL
7
- Requires-Python: >=3.13.12
8
- Requires-Dist: httpx>=0.27.0
9
- Requires-Dist: pydantic>=2.0.0
10
- Requires-Dist: dateparser>=1.2.0
11
- Requires-Dist: typer>=0.12.0
12
- Requires-Dist: fastmcp>=0.1.0
13
- Provides-Extra: test
14
- Requires-Dist: pytest>=8.0.0; extra == "test"
15
- Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
16
- Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"
@@ -1,85 +0,0 @@
1
- # Vikunja Python
2
-
3
- An open-source (WTFPL) API wrapper, rich CLI tool, and Model Context Protocol (MCP) server for the [Vikunja](https://vikunja.io/) task management system.
4
-
5
- Built for **Python 3.13** using `httpx`, `pydantic v2`, and `fastmcp`.
6
-
7
- ## 🏗 Architecture
8
-
9
- The project is structured into three distinct layers to ensure modularity and clean dependency management:
10
-
11
- - **`/core`**: The engine. Handles Pydantic models, HTTP client logic, and error handling. (Minimal dependencies).
12
- - **`/cli`**: A high-visual-impact command-line interface built with `typer` and `rich`.
13
- - **`/mcp`**: A Model Context Protocol server designed for agentic workflows, optimized for smaller LLMs (like Gemma).
14
-
15
- ## 🚀 Getting Started
16
-
17
- ### Installation
18
- This project uses `uv` for modern Python package management.
19
-
20
- ```bash
21
- uv sync --all-extras
22
- ```
23
-
24
- ### Environment Variables
25
- Configure your Vikunja instance in a `.env` file or your shell:
26
-
27
- ```bash
28
- VIKUNJA_URL="https://your-vikunja-instance.com/api/v1"
29
- VIKUNJA_API_TOKEN="your_api_token_here" # Recommended for MCP
30
- VIKUNJA_JWT_TOKEN="your_jwt_here" # Required for Buckets/Reactions in CLI
31
- VIKUNJA_DEBUG="true" # Set to true or 1 to enable verbose stderr logging
32
- ```
33
-
34
- ## 🛠 Features & Tooling
35
-
36
- ### CLI (`vikunja`)
37
- The CLI provides a rich, human-friendly interface for managing your workspace.
38
- - **Tasks & Projects**: Full CRUD support with formatted tables.
39
- - **Buckets (Kanban)**: List and manage columns (Requires JWT).
40
- - **Reactions**: Add emojis to tasks (Requires JWT).
41
- - **Labels**: List and categorize tasks.
42
- - **Auth**: Built-in `login` command to generate JWTs.
43
-
44
- ```bash
45
- uv run vikunja list-tasks
46
- uv run vikunja login
47
- ```
48
-
49
- ### MCP Server (`vikunja-mcp`)
50
- A powerful server that gives LLMs "hands" to manage your Vikunja instance. Optimized for reliability and low turn-count.
51
- - **Global Search**: Find tasks across all projects in one turn.
52
- - **Bulk Scaffolding**: Create projects and multiple tasks in a single operation.
53
- - **Smart Dates**: Natural language date parsing (e.g., "remind me next Friday").
54
- - **Task Memory**: Full support for reading and writing task comments.
55
- - **Explicit Hierarchy**: Clear directional tools for subtasks and dependencies.
56
-
57
- ```bash
58
- # Start via STDIO (for Claude Desktop)
59
- uv run vikunja-mcp
60
-
61
- # Start via SSE (HTTP)
62
- uv run vikunja-mcp dev --transport sse
63
- ```
64
-
65
- ## 🔒 Security & Auth Policy
66
-
67
- - **MCP Protocol**: The MCP server is strictly limited to **API Key Authentication**. We do not support user/password login via MCP to ensure secure, scoped agentic access.
68
- - **UI-Only Features**: Features like Buckets (Kanban columns) and Reactions currently require a JWT (UI Session). These are supported in the CLI but are excluded from the MCP server to maintain protocol security.
69
-
70
- ## 🧪 Testing
71
-
72
- We use `testcontainers-python` to run integration tests against a live, ephemeral Vikunja instance. No mocks, just real API verification.
73
-
74
- ```bash
75
- uv run pytest
76
- ```
77
-
78
- ## 🗺 Future Roadmap
79
- - [ ] **Backgrounds**: Support for Unsplash project backgrounds.
80
- - [ ] **Attachments**: File upload/download support.
81
- - [ ] **Webhooks**: Core models for receiving Vikunja events.
82
- - [ ] **Bulk Labels**: Tools for mass-tagging tasks.
83
-
84
- ## 📜 License
85
- WTFPL - Do What the Fuck You Want to Public License.
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: vikunja-python
3
- Version: 0.1.0
4
- Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
- Author-email: Your Name <your.email@example.com>
6
- License-Expression: WTFPL
7
- Requires-Python: >=3.13.12
8
- Requires-Dist: httpx>=0.27.0
9
- Requires-Dist: pydantic>=2.0.0
10
- Requires-Dist: dateparser>=1.2.0
11
- Requires-Dist: typer>=0.12.0
12
- Requires-Dist: fastmcp>=0.1.0
13
- Provides-Extra: test
14
- Requires-Dist: pytest>=8.0.0; extra == "test"
15
- Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
16
- Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"
File without changes