{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_update",
"tool_input": {
"id": 70,
"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> » Installation\n<\/nav>\n\n<h1>MCP-Contracts Installation<\/h1>\n<p class=\"doc-meta\"><strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\n<p>Setup, Konfiguration und Registrierung des MCP-Contracts Servers.<\/p>\n\n<h2>Voraussetzungen<\/h2>\n<ul>\n <li>Python 3.10+<\/li>\n <li>MariaDB\/MySQL mit ki_dev Datenbank<\/li>\n <li>Claude Code CLI<\/li>\n<\/ul>\n\n<h2>Installation<\/h2>\n\n<h3>1. Verzeichnis erstellen<\/h3>\n<pre><code>mkdir -p \/var\/www\/mcp-servers\/mcp_contracts\ncd \/var\/www\/mcp-servers\/mcp_contracts<\/code><\/pre>\n\n<h3>2. Virtual Environment<\/h3>\n<pre><code>python3 -m venv venv\nsource venv\/bin\/activate\npip install mcp pymysql python-dotenv pyyaml<\/code><\/pre>\n\n<h3>3. Struktur<\/h3>\n<pre><code>\/var\/www\/mcp-servers\/mcp_contracts\/\n├── server.py\n├── config.py\n├── requirements.txt\n├── venv\/\n├── domain\/\n│ ├── __init__.py\n│ └── contracts.py\n├── infrastructure\/\n│ ├── __init__.py\n│ └── contract_repository.py\n├── validators\/\n│ ├── __init__.py\n│ ├── contract_validator.py\n│ ├── rule_evaluator.py\n│ └── scope_resolver.py\n└── tools\/\n ├── __init__.py\n └── contract_tools.py<\/code><\/pre>\n\n<h3>4. Datenbank-Tabellen (ki_dev)<\/h3>\n<pre><code>-- Contracts\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\n\n-- History\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\n\n-- Validations\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\n\n<h2>Registrierung in Claude Code<\/h2>\n<pre><code># MCP-Server registrieren\nclaude mcp add mcp-contracts \\\n --transport stdio \\\n -- \/var\/www\/mcp-servers\/mcp_contracts\/venv\/bin\/python \\\n \/var\/www\/mcp-servers\/mcp_contracts\/server.py\n\n# Registrierung prüfen\nclaude mcp list<\/code><\/pre>\n\n<h2>Test<\/h2>\n<pre><code># In Claude Code Session\ncontracts_list(compact=True)\ncontracts_statistics()<\/code><\/pre>\n\n<h2>Fehlerbehebung<\/h2>\n\n<h3>Server startet nicht<\/h3>\n<pre><code># Manuell testen\n\/var\/www\/mcp-servers\/mcp_contracts\/venv\/bin\/python \\\n \/var\/www\/mcp-servers\/mcp_contracts\/server.py\n\n# Logs prüfen\ntail -f ~\/.claude\/logs\/mcp-*.log<\/code><\/pre>\n\n<h3>Datenbankverbindung fehlgeschlagen<\/h3>\n<ul>\n <li>DB-User Berechtigungen prüfen<\/li>\n <li>MariaDB-Service Status: <code>systemctl status mariadb<\/code><\/li>\n<\/ul>\n\n<h3>Tool nicht gefunden<\/h3>\n<pre><code># MCP-Server neu registrieren\nclaude mcp remove mcp-contracts\nclaude mcp add mcp-contracts ...<\/code><\/pre>\n\n<h2>Berechtigungen<\/h2>\n<table>\n <tr><th>DB-User<\/th><th>Datenbank<\/th><th>Rechte<\/th><\/tr>\n <tr><td><code>claude_code<\/code><\/td><td>ki_dev<\/td><td>SELECT, INSERT, UPDATE, DELETE auf contracts*<\/td><\/tr>\n<\/table>\n<p>Logging erfolgt in <code>ki_dev.mcp_log<\/code>.<\/p>\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-architektur\">Architektur<\/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\": 70,\n \"parent_id\": 65,\n \"slug\": \"mcp-contracts-installation\",\n \"path\": \"\/mcp\/mcp-contracts\/mcp-contracts-installation\",\n \"title\": \"Installation\",\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> » Installation\\n<\/nav>\\n\\n<h1>MCP-Contracts Installation<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Aktualisiert:<\/strong> 2025-12-31<\/p>\\n<p>Setup, Konfiguration und Registrierung des MCP-Contracts Servers.<\/p>\\n\\n<h2>Voraussetzungen<\/h2>\\n<ul>\\n <li>Python 3.10+<\/li>\\n <li>MariaDB\/MySQL mit ki_dev Datenbank<\/li>\\n <li>Claude Code CLI<\/li>\\n<\/ul>\\n\\n<h2>Installation<\/h2>\\n\\n<h3>1. Verzeichnis erstellen<\/h3>\\n<pre><code>mkdir -p \/var\/www\/mcp-servers\/mcp_contracts\\ncd \/var\/www\/mcp-servers\/mcp_contracts<\/code><\/pre>\\n\\n<h3>2. Virtual Environment<\/h3>\\n<pre><code>python3 -m venv venv\\nsource venv\/bin\/activate\\npip install mcp pymysql python-dotenv pyyaml<\/code><\/pre>\\n\\n<h3>3. Struktur<\/h3>\\n<pre><code>\/var\/www\/mcp-servers\/mcp_contracts\/\\n├── server.py\\n├── config.py\\n├── requirements.txt\\n├── venv\/\\n├── domain\/\\n│ ├── __init__.py\\n│ └── contracts.py\\n├── infrastructure\/\\n│ ├── __init__.py\\n│ └── contract_repository.py\\n├── validators\/\\n│ ├── __init__.py\\n│ ├── contract_validator.py\\n│ ├── rule_evaluator.py\\n│ └── scope_resolver.py\\n└── tools\/\\n ├── __init__.py\\n └── contract_tools.py<\/code><\/pre>\\n\\n<h3>4. Datenbank-Tabellen (ki_dev)<\/h3>\\n<pre><code>-- Contracts\\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\\n\\n-- History\\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;\\n\\n-- Validations\\nCREATE TABLE IF NOT EXISTS 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) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\\n\\n<h2>Registrierung in Claude Code<\/h2>\\n<pre><code># MCP-Server registrieren\\nclaude mcp add mcp-contracts \\\\\\n --transport stdio \\\\\\n -- \/var\/www\/mcp-servers\/mcp_contracts\/venv\/bin\/python \\\\\\n \/var\/www\/mcp-servers\/mcp_contracts\/server.py\\n\\n# Registrierung prüfen\\nclaude mcp list<\/code><\/pre>\\n\\n<h2>Test<\/h2>\\n<pre><code># In Claude Code Session\\ncontracts_list(compact=True)\\ncontracts_statistics()<\/code><\/pre>\\n\\n<h2>Fehlerbehebung<\/h2>\\n\\n<h3>Server startet nicht<\/h3>\\n<pre><code># Manuell testen\\n\/var\/www\/mcp-servers\/mcp_contracts\/venv\/bin\/python \\\\\\n \/var\/www\/mcp-servers\/mcp_contracts\/server.py\\n\\n# Logs prüfen\\ntail -f ~\/.claude\/logs\/mcp-*.log<\/code><\/pre>\\n\\n<h3>Datenbankverbindung fehlgeschlagen<\/h3>\\n<ul>\\n <li>DB-User Berechtigungen prüfen<\/li>\\n <li>MariaDB-Service Status: <code>systemctl status mariadb<\/code><\/li>\\n<\/ul>\\n\\n<h3>Tool nicht gefunden<\/h3>\\n<pre><code># MCP-Server neu registrieren\\nclaude mcp remove mcp-contracts\\nclaude mcp add mcp-contracts ...<\/code><\/pre>\\n\\n<h2>Berechtigungen<\/h2>\\n<table>\\n <tr><th>DB-User<\/th><th>Datenbank<\/th><th>Rechte<\/th><\/tr>\\n <tr><td><code>claude_code<\/code><\/td><td>ki_dev<\/td><td>SELECT, INSERT, UPDATE, DELETE auf contracts*<\/td><\/tr>\\n<\/table>\\n<p>Logging erfolgt in <code>ki_dev.mcp_log<\/code>.<\/p>\\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-architektur\\\">Architektur<\/a><\/li>\\n <li><a href=\\\"\/docs\/mcp\/mcp-contracts-tools\\\">Tools im Detail<\/a><\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 3,\n \"depth\": 2,\n \"created_at\": \"2025-12-20T13:01:58\",\n \"updated_at\": \"2025-12-31T05:15:34\"\n },\n \"message\": \"Document #70 updated\"\n}"
}
]
}