{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_get",
"tool_input": {
"path": "\/betrieb\/db-hooks"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 81,\n \"parent_id\": 55,\n \"slug\": \"db-hooks\",\n \"path\": \"\/betrieb\/db-hooks\",\n \"title\": \"DB Hooks\",\n \"description\": \"Security-Hooks zum Blockieren direkter Datenbankzugriffe\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/betrieb\\\">Betrieb<\/a> » DB Hooks\\n<\/nav>\\n\\n<h1>DB Hooks<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-20<\/p>\\n\\n<p>Security-Hooks die direkte Datenbankzugriffe blockieren und MCP-Server erzwingen.<\/p>\\n\\n<table>\\n <tr><th>Pfad<\/th><td>\/opt\/scripts\/hooks\/<\/td><\/tr>\\n <tr><th>Hook-Typ<\/th><td>PreToolUse (Bash)<\/td><\/tr>\\n <tr><th>Verhalten<\/th><td>Blocking (Exit 1 bei Violation)<\/td><\/tr>\\n<\/table>\\n\\n<h2>Übersicht<\/h2>\\n<table>\\n <tr><th>Hook<\/th><th>Blockiert<\/th><th>Empfehlung<\/th><\/tr>\\n <tr><td>block_direct_db.py<\/td><td>mysql\/mariadb mit Passwort<\/td><td>MCP-DB Tools<\/td><\/tr>\\n <tr><td>block_direct_task_db.py<\/td><td>INSERT\/UPDATE\/DELETE auf Task-Tabellen<\/td><td>MCP-Tasks Tools<\/td><\/tr>\\n<\/table>\\n\\n<h2>block_direct_db.py<\/h2>\\n<p>Verhindert Bash-Befehle mit direktem Datenbank-Login.<\/p>\\n\\n<h3>Blockierte Patterns<\/h3>\\n<pre><code>mysql -u user -ppassword\\nmariadb -u user -p\\nmysql --password=xxx\\nmariadb --password=xxx<\/code><\/pre>\\n\\n<h3>Fehlermeldung<\/h3>\\n<pre><code>BLOCKIERT: Direkte Datenbankzugriffe sind aus Sicherheitsgründen nicht erlaubt.\\n\\nVerwende stattdessen die MCP-DB Tools:\\n - db_select(query, params) : SELECT-Abfragen ausführen\\n - db_schema() : Datenbank-Schema anzeigen\\n - db_stats() : Statistiken abrufen\\n\\nVorteile von MCP-DB:\\n - Keine Credentials im Code\/Verlauf\\n - Automatische Query-Validierung\\n - SQL-Injection Schutz\\n - Audit-Logging aller Abfragen\\n - Enforced Read-Only Zugriff<\/code><\/pre>\\n\\n<h2>block_direct_task_db.py<\/h2>\\n<p>Verhindert direkte SQL-Operationen auf Task-Tabellen.<\/p>\\n\\n<h3>Blockierte Patterns<\/h3>\\n<pre><code>INSERT INTO tasks ...\\nUPDATE tasks SET ...\\nDELETE FROM tasks ...\\nINSERT INTO task_assignments ...\\nUPDATE task_results ...\\nDELETE FROM task_comments ...<\/code><\/pre>\\n\\n<h3>Fehlermeldung<\/h3>\\n<pre><code>BLOCKIERT: Direkte SQL-Operationen auf Task-Tabellen sind nicht erlaubt.\\n\\nVerwende stattdessen die MCP-Tasks Tools:\\n - tasks_list() : Tasks auflisten\\n - tasks_create(title, ...) : Task erstellen\\n - tasks_get(id) : Task-Details abrufen\\n - tasks_update(id, ...) : Task aktualisieren\\n - tasks_status(id, status) : Status ändern\\n - tasks_assign(id, ...) : Task zuweisen\\n - tasks_result(id, ...) : Ergebnis speichern\\n - tasks_execute(id, model) : Mit Ollama ausführen<\/code><\/pre>\\n\\n<h2>Verhalten<\/h2>\\n\\n<h3>Erfolg (erlaubt)<\/h3>\\n<pre><code>{\\n \\\"allowed\\\": true,\\n \\\"message\\\": \\\"\\\"\\n}\\nExit Code: 0<\/code><\/pre>\\n\\n<h3>Blockiert<\/h3>\\n<pre><code>{\\n \\\"allowed\\\": false,\\n \\\"message\\\": \\\"BLOCKIERT: ...\\\"\\n}\\nExit Code: 1<\/code><\/pre>\\n\\n<h3>Fehler (Fail-Open)<\/h3>\\n<pre><code>{\\n \\\"allowed\\\": true,\\n \\\"message\\\": \\\"Hook error (fail-open): ...\\\"\\n}\\nExit Code: 0<\/code><\/pre>\\n\\n<h2>Konfiguration<\/h2>\\n<p>In <code>.claude\/settings.local.json<\/code>:<\/p>\\n<pre><code>{\\n \\\"hooks\\\": {\\n \\\"PreToolUse\\\": [\\n \\\"\/opt\/scripts\/hooks\/block_direct_db.py\\\",\\n \\\"\/opt\/scripts\/hooks\/block_direct_task_db.py\\\"\\n ]\\n }\\n}<\/code><\/pre>\\n\\n<h2>Sicherheitskonzept<\/h2>\\n<pre><code>┌─────────────────────────────────────────────┐\\n│ Claude Code │\\n│ └─ Bash Tool → mysql -u root -p... │\\n└─────────────────────────────────────────────┘\\n ↓\\n┌─────────────────────────────────────────────┐\\n│ PreToolUse Hook │\\n│ └─ block_direct_db.py │\\n│ └─ Pattern Match? → BLOCK (Exit 1) │\\n└─────────────────────────────────────────────┘\\n ↓\\n┌─────────────────────────────────────────────┐\\n│ MCP-Server (stattdessen) │\\n│ ├─ MCP-DB: db_select(), db_schema() │\\n│ └─ MCP-Tasks: tasks_*(), quality_*() │\\n└─────────────────────────────────────────────┘<\/code><\/pre>\\n\\n<h2>Verwandte Dokumentation<\/h2>\\n<ul>\\n <li><a href=\\\"\/docs\/mcp\/mcp-db\\\">MCP-DB Server<\/a><\/li>\\n <li><a href=\\\"\/docs\/mcp\/mcp-tasks\\\">MCP-Tasks Server<\/a><\/li>\\n <li><a href=\\\"\/docs\/betrieb\/claude-hooks\\\">Claude Hooks<\/a><\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 7,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T13:41:35\",\n \"updated_at\": \"2025-12-27T15:58:19\"\n }\n}"
}
]
}