{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_get",
"tool_input": {
"path": "\/mcp\/mcp-db\/mcp-db-contracts"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 42,\n \"parent_id\": 36,\n \"slug\": \"mcp-db-contracts\",\n \"path\": \"\/mcp\/mcp-db\/mcp-db-contracts\",\n \"title\": \"Contracts\",\n \"description\": \"Typisierte Datenstrukturen für Request, Response und Logging.\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/mcp\/mcp-db\\\">MCP-DB<\/a> » Contracts\\n<\/nav>\\n\\n<h1>MCP-DB Contracts<\/h1>\\n<p>Typisierte Datenstrukturen für Request, Response und Logging.<\/p>\\n\\n<h2>QueryRequest<\/h2>\\n<p>Immutable Request-Objekt für Datenbankabfragen.<\/p>\\n\\n<pre><code>from dataclasses import dataclass\\nfrom typing import Optional\\n\\n@dataclass(frozen=True)\\nclass QueryRequest:\\n \\\"\\\"\\\"Immutable Query Request - SRP: Nur Query-Daten\\\"\\\"\\\"\\n query: str\\n params: Optional[tuple] = None\\n database: str = \\\"ki_protokoll\\\"\\n max_rows: int = 100<\/code><\/pre>\\n\\n<table>\\n <tr><th>Feld<\/th><th>Typ<\/th><th>Default<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>query<\/td><td>str<\/td><td>-<\/td><td>SQL SELECT Statement<\/td><\/tr>\\n <tr><td>params<\/td><td>Optional[tuple]<\/td><td>None<\/td><td>Prepared Statement Parameter<\/td><\/tr>\\n <tr><td>database<\/td><td>str<\/td><td>\\\"ki_protokoll\\\"<\/td><td>Zieldatenbank<\/td><\/tr>\\n <tr><td>max_rows<\/td><td>int<\/td><td>100<\/td><td>Maximale Ergebniszeilen<\/td><\/tr>\\n<\/table>\\n\\n<h2>QueryStatus<\/h2>\\n<p>Enum für Query-Ergebnisse.<\/p>\\n\\n<pre><code>from enum import Enum\\n\\nclass QueryStatus(Enum):\\n SUCCESS = \\\"success\\\"\\n ERROR = \\\"error\\\"\\n DENIED = \\\"denied\\\"<\/code><\/pre>\\n\\n<table>\\n <tr><th>Status<\/th><th>Bedeutung<\/th><\/tr>\\n <tr><td>SUCCESS<\/td><td>Query erfolgreich ausgeführt<\/td><\/tr>\\n <tr><td>ERROR<\/td><td>Technischer Fehler bei Ausführung<\/td><\/tr>\\n <tr><td>DENIED<\/td><td>Query durch Validator abgelehnt<\/td><\/tr>\\n<\/table>\\n\\n<h2>QueryResponse<\/h2>\\n<p>Strukturierte Antwort auf Datenbankabfragen.<\/p>\\n\\n<pre><code>@dataclass\\nclass QueryResponse:\\n \\\"\\\"\\\"Structured Response - SRP: Nur Response-Daten\\\"\\\"\\\"\\n status: QueryStatus\\n data: Optional[List[dict]] = None\\n row_count: int = 0\\n error: Optional[str] = None\\n execution_ms: float = 0.0<\/code><\/pre>\\n\\n<table>\\n <tr><th>Feld<\/th><th>Typ<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>status<\/td><td>QueryStatus<\/td><td>Ergebnis-Status<\/td><\/tr>\\n <tr><td>data<\/td><td>Optional[List[dict]]<\/td><td>Ergebniszeilen<\/td><\/tr>\\n <tr><td>row_count<\/td><td>int<\/td><td>Anzahl Zeilen<\/td><\/tr>\\n <tr><td>error<\/td><td>Optional[str]<\/td><td>Fehlermeldung (gekürzt)<\/td><\/tr>\\n <tr><td>execution_ms<\/td><td>float<\/td><td>Ausführungszeit in ms<\/td><\/tr>\\n<\/table>\\n\\n<h2>LogEntry<\/h2>\\n<p>Struktur für Protokoll-Einträge in mcp_log.<\/p>\\n\\n<pre><code>from dataclasses import dataclass, field\\nfrom datetime import datetime\\nfrom typing import Optional\\n\\n@dataclass\\nclass LogEntry:\\n \\\"\\\"\\\"Protokoll-Eintrag für ki_protokoll.mcp_log\\\"\\\"\\\"\\n client_name: str = \\\"mcp-db\\\"\\n request: str = \\\"\\\"\\n status: str = \\\"success\\\"\\n duration_ms: int = 0\\n error_message: Optional[str] = None\\n timestamp: datetime = field(default_factory=datetime.now)<\/code><\/pre>\\n\\n<table>\\n <tr><th>Feld<\/th><th>Typ<\/th><th>Default<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>client_name<\/td><td>str<\/td><td>\\\"mcp-db\\\"<\/td><td>Client-Identifikation<\/td><\/tr>\\n <tr><td>request<\/td><td>str<\/td><td>\\\"\\\"<\/td><td>Query-Text (gekürzt auf 200 Zeichen)<\/td><\/tr>\\n <tr><td>status<\/td><td>str<\/td><td>\\\"success\\\"<\/td><td>success, error, denied<\/td><\/tr>\\n <tr><td>duration_ms<\/td><td>int<\/td><td>0<\/td><td>Ausführungsdauer<\/td><\/tr>\\n <tr><td>error_message<\/td><td>Optional[str]<\/td><td>None<\/td><td>Fehlerdetails<\/td><\/tr>\\n <tr><td>timestamp<\/td><td>datetime<\/td><td>now()<\/td><td>Zeitstempel<\/td><\/tr>\\n<\/table>\\n\\n<h2>Beispiel-Nutzung<\/h2>\\n<pre><code># Request erstellen\\nrequest = QueryRequest(\\n query=\\\"SELECT * FROM mcp_log WHERE status = %s\\\",\\n params=(\\\"success\\\",),\\n database=\\\"ki_protokoll\\\",\\n max_rows=50\\n)\\n\\n# Response auswerten\\nif response.status == QueryStatus.SUCCESS:\\n for row in response.data:\\n print(row)\\nelse:\\n print(f\\\"Fehler: {response.error}\\\")<\/code><\/pre>\\n\\n<h2>Verwandte Kapitel<\/h2>\\n<ul>\\n <li><a href=\\\"\/docs\/mcp\/mcp-db-architektur\\\">Architektur<\/a> - Gesamtstruktur<\/li>\\n <li><a href=\\\"\/docs\/mcp\/mcp-db-tools\\\">Tools<\/a> - Nutzung der Contracts<\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 6,\n \"depth\": 2,\n \"created_at\": \"2025-12-20T11:13:58\",\n \"updated_at\": \"2025-12-20T11:13:58\"\n }\n}"
}
]
}