| """ |
| MCP Tool: Mark a task as complete |
| """ |
|
|
| from typing import Dict, Any, Optional |
| from pydantic import BaseModel |
|
|
| class CompleteTaskInput(BaseModel): |
| task_id: int |
|
|
| class CompleteTaskOutput(BaseModel): |
| success: bool |
| task_completed: Optional[bool] = None |
| error: Optional[str] = None |
|
|
| async def complete_task(input: CompleteTaskInput, context: Dict[str, Any]) -> CompleteTaskOutput: |
| """ |
| MCP Tool: Mark a task as complete |
| |
| Args: |
| input: CompleteTaskInput with task_id |
| context: MCP context containing user_id |
| |
| Returns: |
| CompleteTaskOutput with success status |
| """ |
| try: |
| user_id = context.get("user_id") |
| if not user_id: |
| return CompleteTaskOutput(success=False, error="User ID not found in context") |
|
|
| from backend.src.services.task_service import TaskService |
| from backend.src.core.database import get_session |
|
|
| async with get_session() as session: |
| success = TaskService.update_task( |
| session, |
| task_id=input.task_id, |
| user_id=user_id, |
| completed=True |
| ) |
| return CompleteTaskOutput(success=success, task_completed=True) |
|
|
| except Exception as e: |
| return CompleteTaskOutput(success=False, error=str(e)) |