{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_update",
"tool_input": {
"id": 69,
"content": "<nav class=\"breadcrumb\">\n <a href=\"\/docs\">Dokumentation<\/a> » <a href=\"\/docs\/mcp\">MCP<\/a> » <a href=\"\/docs\/mcp\/mcp-contracts\">MCP-Contracts<\/a> » Architektur\n<\/nav>\n\n<h1>MCP-Contracts Architektur<\/h1>\n<p class=\"doc-meta\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\n\n<p>Verzeichnisstruktur und Komponenten des MCP-Contracts Servers.<\/p>\n\n<h2>Verzeichnisstruktur<\/h2>\n<pre><code>\/var\/www\/mcp-servers\/mcp_contracts\/\n├── server.py # Entry Point (FastMCP)\n├── config.py # Konfiguration\n├── requirements.txt # Dependencies\n├── venv\/ # Python Virtual Environment\n│\n├── domain\/\n│ ├── __init__.py\n│ └── contracts.py # Entities (Contract, ContractHistory, Validation)\n│\n├── infrastructure\/\n│ ├── __init__.py\n│ └── contract_repository.py # CRUD-Operationen\n│\n├── validators\/\n│ ├── __init__.py\n│ ├── contract_validator.py # Contract-Validierung\n│ ├── rule_evaluator.py # Regel-Auswertung\n│ └── scope_resolver.py # Scope-Auflösung\n│\n└── tools\/\n ├── __init__.py\n └── contract_tools.py # 9 MCP-Tools<\/code><\/pre>\n\n<h2>Layer-Architektur<\/h2>\n<table>\n <tr><th>Layer<\/th><th>Verantwortung<\/th><th>Dateien<\/th><\/tr>\n <tr><td><strong>Tools<\/strong><\/td><td>MCP-Tool-Definitionen<\/td><td>tools\/contract_tools.py<\/td><\/tr>\n <tr><td><strong>Validators<\/strong><\/td><td>YAML-Syntax, Scope-Validierung, Regel-Auswertung<\/td><td>validators\/*.py<\/td><\/tr>\n <tr><td><strong>Domain<\/strong><\/td><td>Entities, Dataclasses<\/td><td>domain\/contracts.py<\/td><\/tr>\n <tr><td><strong>Infrastructure<\/strong><\/td><td>DB, Repository<\/td><td>infrastructure\/contract_repository.py<\/td><\/tr>\n<\/table>\n\n<h2>Komponenten<\/h2>\n\n<h3>server.py<\/h3>\n<p>Entry Point mit FastMCP-Initialisierung:<\/p>\n<pre><code>from mcp.server.fastmcp import FastMCP\nfrom tools.contract_tools import register_contract_tools\n\nmcp = FastMCP(\"mcp-contracts\", instructions=\"...\")\nregister_contract_tools(mcp)\n\nif __name__ == \"__main__\":\n mcp.run(transport=\"stdio\")<\/code><\/pre>\n\n<h3>domain\/contracts.py<\/h3>\n<p>Dataclasses für Contract-Entities:<\/p>\n<ul>\n <li><code>Contract<\/code> - id, uuid, name, yaml_content, version, status, scope_description<\/li>\n <li><code>ContractHistory<\/code> - contract_id, previous_yaml, previous_version, change_description<\/li>\n <li><code>ContractValidation<\/code> - contract_id, result, violations, triggered_by<\/li>\n <li><code>ContractStatus<\/code> - Enum (draft, active, deprecated)<\/li>\n<\/ul>\n\n<h3>infrastructure\/contract_repository.py<\/h3>\n<p>CRUD-Operationen auf ki_dev.contracts:<\/p>\n<ul>\n <li><code>find_by_id()<\/code>, <code>find_by_name()<\/code><\/li>\n <li><code>find_all()<\/code> mit Filtern<\/li>\n <li><code>create()<\/code>, <code>update()<\/code>, <code>deprecate()<\/code><\/li>\n <li><code>get_history()<\/code>, <code>get_validations()<\/code><\/li>\n <li><code>save_validation()<\/code><\/li>\n <li><code>get_statistics()<\/code><\/li>\n<\/ul>\n<p><strong>Hinweis:<\/strong> Datenbankverbindung inline via shared config. Logging direkt in mcp_log.<\/p>\n\n<h3>validators\/<\/h3>\n<p>Validierungslogik aufgeteilt in drei Module:<\/p>\n<table>\n <tr><th>Modul<\/th><th>Verantwortung<\/th><\/tr>\n <tr><td><code>contract_validator.py<\/code><\/td><td>YAML-Syntaxprüfung, Hauptvalidierung<\/td><\/tr>\n <tr><td><code>rule_evaluator.py<\/code><\/td><td>Regel-Auswertung gegen Code<\/td><\/tr>\n <tr><td><code>scope_resolver.py<\/code><\/td><td>Scope-Pfade auflösen, Dateien finden<\/td><\/tr>\n<\/table>\n\n<h2>Datenbank-Schema (ki_dev)<\/h2>\n<pre><code>-- ki_dev.contracts\nCREATE TABLE contracts (\n id INT AUTO_INCREMENT PRIMARY KEY,\n uuid CHAR(36) NOT NULL,\n name VARCHAR(100) NOT NULL,\n version VARCHAR(20) NOT NULL,\n status ENUM('draft','active','deprecated') DEFAULT 'active',\n yaml_content TEXT NOT NULL,\n scope_description VARCHAR(500) DEFAULT NULL,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n created_by VARCHAR(100) DEFAULT 'system',\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n UNIQUE KEY uuid (uuid),\n UNIQUE KEY unique_name_version (name, version),\n INDEX idx_status (status),\n INDEX idx_name (name)\n);\n\n-- ki_dev.contract_history\nCREATE TABLE contract_history (\n id INT AUTO_INCREMENT PRIMARY KEY,\n contract_id INT NOT NULL,\n previous_yaml TEXT DEFAULT NULL,\n previous_version VARCHAR(20) DEFAULT NULL,\n change_description TEXT DEFAULT NULL,\n changed_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n changed_by VARCHAR(100) DEFAULT 'system',\n INDEX idx_contract_id (contract_id),\n FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE CASCADE\n);\n\n-- ki_dev.contract_validations\nCREATE TABLE contract_validations (\n id INT AUTO_INCREMENT PRIMARY KEY,\n contract_id INT NOT NULL,\n validated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n result ENUM('passed','failed') NOT NULL,\n critical_count INT DEFAULT 0,\n major_count INT DEFAULT 0,\n minor_count INT DEFAULT 0,\n violations LONGTEXT CHECK (JSON_VALID(violations)),\n triggered_by ENUM('sync','manual','hook','mcp') DEFAULT 'mcp',\n target_path VARCHAR(255) DEFAULT NULL,\n duration_ms INT DEFAULT 0,\n INDEX idx_contract_id (contract_id),\n INDEX idx_validated_at (validated_at),\n INDEX idx_result (result),\n FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE CASCADE\n);<\/code><\/pre>\n\n<h2>Datenfluss<\/h2>\n<pre><code>Claude Code\n ↓ MCP Tool Call\nFastMCP (server.py)\n ↓ contracts_validate()\ncontract_tools.py\n ↓ Repository + Validators\ncontract_repository.py + validators\/*.py\n ↓ SQL + Logging\nki_dev.contracts + mcp_log<\/code><\/pre>\n\n<h2>Verwandte Themen<\/h2>\n<ul>\n <li><a href=\"\/docs\/mcp\/mcp-contracts\">MCP-Contracts Übersicht<\/a><\/li>\n <li><a href=\"\/docs\/mcp\/mcp-contracts-installation\">Installation<\/a><\/li>\n <li><a href=\"\/docs\/mcp\/mcp-contracts-tools\">Tools im Detail<\/a><\/li>\n<\/ul>"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 69,\n \"parent_id\": 65,\n \"slug\": \"mcp-contracts-architektur\",\n \"path\": \"\/mcp\/mcp-contracts\/mcp-contracts-architektur\",\n \"title\": \"Architektur\",\n \"description\": null,\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/mcp\\\">MCP<\/a> » <a href=\\\"\/docs\/mcp\/mcp-contracts\\\">MCP-Contracts<\/a> » Architektur\\n<\/nav>\\n\\n<h1>MCP-Contracts Architektur<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\\n\\n<p>Verzeichnisstruktur und Komponenten des MCP-Contracts Servers.<\/p>\\n\\n<h2>Verzeichnisstruktur<\/h2>\\n<pre><code>\/var\/www\/mcp-servers\/mcp_contracts\/\\n├── server.py # Entry Point (FastMCP)\\n├── config.py # Konfiguration\\n├── requirements.txt # Dependencies\\n├── venv\/ # Python Virtual Environment\\n│\\n├── domain\/\\n│ ├── __init__.py\\n│ └── contracts.py # Entities (Contract, ContractHistory, Validation)\\n│\\n├── infrastructure\/\\n│ ├── __init__.py\\n│ └── contract_repository.py # CRUD-Operationen\\n│\\n├── validators\/\\n│ ├── __init__.py\\n│ ├── contract_validator.py # Contract-Validierung\\n│ ├── rule_evaluator.py # Regel-Auswertung\\n│ └── scope_resolver.py # Scope-Auflösung\\n│\\n└── tools\/\\n ├── __init__.py\\n └── contract_tools.py # 9 MCP-Tools<\/code><\/pre>\\n\\n<h2>Layer-Architektur<\/h2>\\n<table>\\n <tr><th>Layer<\/th><th>Verantwortung<\/th><th>Dateien<\/th><\/tr>\\n <tr><td><strong>Tools<\/strong><\/td><td>MCP-Tool-Definitionen<\/td><td>tools\/contract_tools.py<\/td><\/tr>\\n <tr><td><strong>Validators<\/strong><\/td><td>YAML-Syntax, Scope-Validierung, Regel-Auswertung<\/td><td>validators\/*.py<\/td><\/tr>\\n <tr><td><strong>Domain<\/strong><\/td><td>Entities, Dataclasses<\/td><td>domain\/contracts.py<\/td><\/tr>\\n <tr><td><strong>Infrastructure<\/strong><\/td><td>DB, Repository<\/td><td>infrastructure\/contract_repository.py<\/td><\/tr>\\n<\/table>\\n\\n<h2>Komponenten<\/h2>\\n\\n<h3>server.py<\/h3>\\n<p>Entry Point mit FastMCP-Initialisierung:<\/p>\\n<pre><code>from mcp.server.fastmcp import FastMCP\\nfrom tools.contract_tools import register_contract_tools\\n\\nmcp = FastMCP(\\\"mcp-contracts\\\", instructions=\\\"...\\\")\\nregister_contract_tools(mcp)\\n\\nif __name__ == \\\"__main__\\\":\\n mcp.run(transport=\\\"stdio\\\")<\/code><\/pre>\\n\\n<h3>domain\/contracts.py<\/h3>\\n<p>Dataclasses für Contract-Entities:<\/p>\\n<ul>\\n <li><code>Contract<\/code> - id, uuid, name, yaml_content, version, status, scope_description<\/li>\\n <li><code>ContractHistory<\/code> - contract_id, previous_yaml, previous_version, change_description<\/li>\\n <li><code>ContractValidation<\/code> - contract_id, result, violations, triggered_by<\/li>\\n <li><code>ContractStatus<\/code> - Enum (draft, active, deprecated)<\/li>\\n<\/ul>\\n\\n<h3>infrastructure\/contract_repository.py<\/h3>\\n<p>CRUD-Operationen auf ki_dev.contracts:<\/p>\\n<ul>\\n <li><code>find_by_id()<\/code>, <code>find_by_name()<\/code><\/li>\\n <li><code>find_all()<\/code> mit Filtern<\/li>\\n <li><code>create()<\/code>, <code>update()<\/code>, <code>deprecate()<\/code><\/li>\\n <li><code>get_history()<\/code>, <code>get_validations()<\/code><\/li>\\n <li><code>save_validation()<\/code><\/li>\\n <li><code>get_statistics()<\/code><\/li>\\n<\/ul>\\n<p><strong>Hinweis:<\/strong> Datenbankverbindung inline via shared config. Logging direkt in mcp_log.<\/p>\\n\\n<h3>validators\/<\/h3>\\n<p>Validierungslogik aufgeteilt in drei Module:<\/p>\\n<table>\\n <tr><th>Modul<\/th><th>Verantwortung<\/th><\/tr>\\n <tr><td><code>contract_validator.py<\/code><\/td><td>YAML-Syntaxprüfung, Hauptvalidierung<\/td><\/tr>\\n <tr><td><code>rule_evaluator.py<\/code><\/td><td>Regel-Auswertung gegen Code<\/td><\/tr>\\n <tr><td><code>scope_resolver.py<\/code><\/td><td>Scope-Pfade auflösen, Dateien finden<\/td><\/tr>\\n<\/table>\\n\\n<h2>Datenbank-Schema (ki_dev)<\/h2>\\n<pre><code>-- ki_dev.contracts\\nCREATE TABLE contracts (\\n id INT AUTO_INCREMENT PRIMARY KEY,\\n uuid CHAR(36) NOT NULL,\\n name VARCHAR(100) NOT NULL,\\n version VARCHAR(20) NOT NULL,\\n status ENUM('draft','active','deprecated') DEFAULT 'active',\\n yaml_content TEXT NOT NULL,\\n scope_description VARCHAR(500) DEFAULT NULL,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n created_by VARCHAR(100) DEFAULT 'system',\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\\n UNIQUE KEY uuid (uuid),\\n UNIQUE KEY unique_name_version (name, version),\\n INDEX idx_status (status),\\n INDEX idx_name (name)\\n);\\n\\n-- ki_dev.contract_history\\nCREATE TABLE contract_history (\\n id INT AUTO_INCREMENT PRIMARY KEY,\\n contract_id INT NOT NULL,\\n previous_yaml TEXT DEFAULT NULL,\\n previous_version VARCHAR(20) DEFAULT NULL,\\n change_description TEXT DEFAULT NULL,\\n changed_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n changed_by VARCHAR(100) DEFAULT 'system',\\n INDEX idx_contract_id (contract_id),\\n FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE CASCADE\\n);\\n\\n-- ki_dev.contract_validations\\nCREATE TABLE contract_validations (\\n id INT AUTO_INCREMENT PRIMARY KEY,\\n contract_id INT NOT NULL,\\n validated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n result ENUM('passed','failed') NOT NULL,\\n critical_count INT DEFAULT 0,\\n major_count INT DEFAULT 0,\\n minor_count INT DEFAULT 0,\\n violations LONGTEXT CHECK (JSON_VALID(violations)),\\n triggered_by ENUM('sync','manual','hook','mcp') DEFAULT 'mcp',\\n target_path VARCHAR(255) DEFAULT NULL,\\n duration_ms INT DEFAULT 0,\\n INDEX idx_contract_id (contract_id),\\n INDEX idx_validated_at (validated_at),\\n INDEX idx_result (result),\\n FOREIGN KEY (contract_id) REFERENCES contracts(id) ON DELETE CASCADE\\n);<\/code><\/pre>\\n\\n<h2>Datenfluss<\/h2>\\n<pre><code>Claude Code\\n ↓ MCP Tool Call\\nFastMCP (server.py)\\n ↓ contracts_validate()\\ncontract_tools.py\\n ↓ Repository + Validators\\ncontract_repository.py + validators\/*.py\\n ↓ SQL + Logging\\nki_dev.contracts + mcp_log<\/code><\/pre>\\n\\n<h2>Verwandte Themen<\/h2>\\n<ul>\\n <li><a href=\\\"\/docs\/mcp\/mcp-contracts\\\">MCP-Contracts Übersicht<\/a><\/li>\\n <li><a href=\\\"\/docs\/mcp\/mcp-contracts-installation\\\">Installation<\/a><\/li>\\n <li><a href=\\\"\/docs\/mcp\/mcp-contracts-tools\\\">Tools im Detail<\/a><\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 2,\n \"depth\": 2,\n \"created_at\": \"2025-12-20T13:01:58\",\n \"updated_at\": \"2025-12-31T05:15:06\"\n },\n \"message\": \"Document #69 updated\"\n}"
}
]
}