{
"event": "PreToolUse",
"tool_name": "mcp__mcp-tasks__tasks_create",
"tool_input": {
"title": "MCP-DB Erweiterung: db_update Tool (Daten aktualisieren)",
"type": "ai_task",
"description": "# MCP-DB Erweiterung: db_update Tool\n\n## Kontext\nDer MCP-DB Server hat kein Tool für UPDATE-Operationen.\n\n**Problem:** Claude Code kann keine Daten aktualisieren ohne CLI-Befehle.\n\n## Aufgabe\nErstelle `\/opt\/mcp-servers\/mcp-db\/tools\/update_tool.py`.\n\n## Technische Anforderungen\n\n### 1. Tool-Signatur\n```python\n@mcp.tool()\ndef db_update(\n table: str,\n data: dict,\n where: dict,\n database: str = \"ki_dev\",\n) -> dict:\n \"\"\"\n Aktualisiert Datensätze.\n \n Args:\n table: Zieltabelle\n data: Dict mit Spalte:Wert Paaren (SET-Klausel)\n where: Dict mit Spalte:Wert Paaren (WHERE-Klausel)\n database: Zieldatenbank (ki_dev oder ki_content)\n \n Returns:\n Dict mit status, affected_rows, error\n \"\"\"\n```\n\n### 2. Implementierung\n- Parameterized UPDATE Query: `UPDATE {table} SET col1=%s WHERE id=%s`\n- **WHERE ist PFLICHT** - kein UPDATE ohne WHERE erlauben!\n- `cursor.rowcount` für affected_rows\n\n### 3. Validierung (KRITISCH!)\n- **WHERE Pflicht:** Leeres `where` dict → Fehler zurückgeben\n- **Tabellen\/Spaltennamen:** Nur `[a-zA-Z0-9_]+`\n- **Werte:** Immer Prepared Statements\n- **Datenbank-Whitelist:** `ki_dev`, `ki_content`\n\n### 4. Rückgabe-Format\n```python\n{\n \"status\": \"success\",\n \"table\": \"tasks\",\n \"affected_rows\": 1,\n \"execution_ms\": 3\n}\n```\n\n### 5. server.py anpassen\n```python\nfrom tools.update_tool import register_update_tool\nregister_update_tool(mcp)\n```\n\n## Python Contract (PFLICHT)\nVollständige Einhaltung von `\/var\/www\/docs\/contracts\/python-pipeline-contract_v1.0.yaml`.\n\n## Prüfung vor Abschluss\n```bash\ncd \/opt\/mcp-servers\/mcp-db\n\/opt\/scripts\/pipeline\/venv\/bin\/ruff check tools\/update_tool.py\n\/opt\/scripts\/pipeline\/venv\/bin\/ruff format --check tools\/update_tool.py\n\/opt\/scripts\/pipeline\/venv\/bin\/mypy tools\/update_tool.py\n```\n\n## Sicherheitshinweis\nUPDATE ohne WHERE kann alle Daten überschreiben! WHERE ist zwingend erforderlich."
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"task\": {\n \"id\": 141,\n \"uuid\": \"170229da-ebbc-4014-a499-085608623b65\",\n \"title\": \"MCP-DB Erweiterung: db_update Tool (Daten aktualisieren)\",\n \"description\": \"# MCP-DB Erweiterung: db_update Tool\\n\\n## Kontext\\nDer MCP-DB Server hat kein Tool für UPDATE-Operationen.\\n\\n**Problem:** Claude Code kann keine Daten aktualisieren ohne CLI-Befehle.\\n\\n## Aufgabe\\nErstelle `\/opt\/mcp-servers\/mcp-db\/tools\/update_tool.py`.\\n\\n## Technische Anforderungen\\n\\n### 1. Tool-Signatur\\n```python\\n@mcp.tool()\\ndef db_update(\\n table: str,\\n data: dict,\\n where: dict,\\n database: str = \\\"ki_dev\\\",\\n) -> dict:\\n \\\"\\\"\\\"\\n Aktualisiert Datensätze.\\n \\n Args:\\n table: Zieltabelle\\n data: Dict mit Spalte:Wert Paaren (SET-Klausel)\\n where: Dict mit Spalte:Wert Paaren (WHERE-Klausel)\\n database: Zieldatenbank (ki_dev oder ki_content)\\n \\n Returns:\\n Dict mit status, affected_rows, error\\n \\\"\\\"\\\"\\n```\\n\\n### 2. Implementierung\\n- Parameterized UPDATE Query: `UPDATE {table} SET col1=%s WHERE id=%s`\\n- **WHERE ist PFLICHT** - kein UPDATE ohne WHERE erlauben!\\n- `cursor.rowcount` für affected_rows\\n\\n### 3. Validierung (KRITISCH!)\\n- **WHERE Pflicht:** Leeres `where` dict → Fehler zurückgeben\\n- **Tabellen\/Spaltennamen:** Nur `[a-zA-Z0-9_]+`\\n- **Werte:** Immer Prepared Statements\\n- **Datenbank-Whitelist:** `ki_dev`, `ki_content`\\n\\n### 4. Rückgabe-Format\\n```python\\n{\\n \\\"status\\\": \\\"success\\\",\\n \\\"table\\\": \\\"tasks\\\",\\n \\\"affected_rows\\\": 1,\\n \\\"execution_ms\\\": 3\\n}\\n```\\n\\n### 5. server.py anpassen\\n```python\\nfrom tools.update_tool import register_update_tool\\nregister_update_tool(mcp)\\n```\\n\\n## Python Contract (PFLICHT)\\nVollständige Einhaltung von `\/var\/www\/docs\/contracts\/python-pipeline-contract_v1.0.yaml`.\\n\\n## Prüfung vor Abschluss\\n```bash\\ncd \/opt\/mcp-servers\/mcp-db\\n\/opt\/scripts\/pipeline\/venv\/bin\/ruff check tools\/update_tool.py\\n\/opt\/scripts\/pipeline\/venv\/bin\/ruff format --check tools\/update_tool.py\\n\/opt\/scripts\/pipeline\/venv\/bin\/mypy tools\/update_tool.py\\n```\\n\\n## Sicherheitshinweis\\nUPDATE ohne WHERE kann alle Daten überschreiben! WHERE ist zwingend erforderlich.\",\n \"type\": \"ai_task\",\n \"status\": \"pending\",\n \"created_by\": \"mcp-tasks\",\n \"created_by_type\": \"ai\",\n \"parent_task_id\": null,\n \"due_date\": null,\n \"created_at\": \"2025-12-20T18:18:16.164957\",\n \"updated_at\": \"2025-12-20T18:18:16.164959\",\n \"completed_at\": null,\n \"metadata\": {}\n },\n \"message\": \"Task #141 created\"\n}"
}
]
}