Update to 0.12 and add two endpoints
CICD / Explore-Gitea-Actions (push) Successful in 38s
Details
CICD / Explore-Gitea-Actions (push) Successful in 38s
Details
This commit is contained in:
parent
b713ee1560
commit
dcba33de17
|
@ -20,4 +20,4 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||
COPY . .
|
||||
|
||||
CMD ["python", "main.py"]
|
||||
#harbor.freshbrewed.science/library/vikunjamcp:0.11
|
||||
#harbor.freshbrewed.science/library/vikunjamcp:0.12
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "vikunja",
|
||||
"version": "1.0.11",
|
||||
"version": "1.0.12",
|
||||
"mcpServers": {
|
||||
"nodeServer": {
|
||||
"command": "docker",
|
||||
|
@ -14,7 +14,7 @@
|
|||
"VIKUNJA_USERNAME",
|
||||
"-e",
|
||||
"VIKUNJA_PASSWORD",
|
||||
"harbor.freshbrewed.science/library/vikunjamcp:0.11"
|
||||
"harbor.freshbrewed.science/library/vikunjamcp:0.12"
|
||||
],
|
||||
"env": {
|
||||
"VIKUNJA_URL": "$VIKUNJA_URL",
|
||||
|
|
60
main.py
60
main.py
|
@ -160,6 +160,33 @@ def close_task(task_id: int):
|
|||
except requests.exceptions.RequestException as e:
|
||||
return f"Error closing task: {e}"
|
||||
|
||||
@mcp.tool()
|
||||
def comment_task(task_id: int, description: str):
|
||||
"""
|
||||
Adds a comment to a task in Vikunja.
|
||||
|
||||
:param task_id: The ID of the task to comment on.
|
||||
:param description: The text of the comment to add.
|
||||
"""
|
||||
if "Authorization" not in session.headers:
|
||||
return "Please run the 'login' command first."
|
||||
|
||||
if not (description or "").strip():
|
||||
return "Comment description cannot be empty."
|
||||
|
||||
payload = {"text": description}
|
||||
|
||||
try:
|
||||
response = session.post(
|
||||
f"{VIKUNJA_URL}/api/v1/tasks/{task_id}/comments",
|
||||
json=payload
|
||||
)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except requests.exceptions.RequestException as e:
|
||||
logger.exception("comment_task: request failed for task_id=%s", task_id)
|
||||
return f"Error adding comment to task: {e}"
|
||||
|
||||
@mcp.tool()
|
||||
def lookup_project():
|
||||
"""
|
||||
|
@ -186,6 +213,39 @@ def lookup_project():
|
|||
except requests.exceptions.RequestException as e:
|
||||
return f"Error retrieving projects: {e}"
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def create_project(title: str, description: str = "", is_favorite: bool = False):
|
||||
"""
|
||||
Creates a new project in Vikunja.
|
||||
|
||||
:param title: The title of the project.
|
||||
:param description: Optional description for the project.
|
||||
:param is_favorite: Whether the project should be marked as favorite.
|
||||
"""
|
||||
if "Authorization" not in session.headers:
|
||||
return "Please run the 'login' command first."
|
||||
|
||||
if not (title or "").strip():
|
||||
return "Project title cannot be empty."
|
||||
|
||||
payload = {
|
||||
"title": title,
|
||||
"description": description,
|
||||
"is_favourite": bool(is_favorite)
|
||||
}
|
||||
|
||||
try:
|
||||
response = session.put(
|
||||
f"{VIKUNJA_URL}/api/v1/projects",
|
||||
json=payload
|
||||
)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except requests.exceptions.RequestException as e:
|
||||
logger.exception("create_project: request failed for title=%s", title)
|
||||
return f"Error creating project: {e}"
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("--- Vikunja MCP Client ---")
|
||||
print("Available commands: login, search_tasks, add_task, close_task, lookup_project, help, exit")
|
||||
|
|
Loading…
Reference in New Issue