{
"event": "PreToolUse",
"tool_name": "mcp__mcp-tasks__tasks_create",
"tool_input": {
"title": "Phase 1: MCP Shared Foundation erstellen",
"description": "## Voraussetzungen (ZUERST LESEN)\n\n1. **Lies \/var\/www\/CLAUDE.md** vollständig\n2. **Verpflichtung:** Alle Contracts, Quality-Checks und MCP-Tools gemäß CLAUDE.md einhalten\n3. **Abhängigkeit:** Phase 0 (Package-Umbenennung) muss abgeschlossen sein\n\n## Kontext\n\n- **Dokument:** \/mcp\/mcp-server-refactoring-plan (ID 156, v1.2)\n- **Ziel:** Gemeinsame Komponenten für alle MCP-Server\n\n## Dateien erstellen\n\n### 1.1 shared\/config_base.py (< 60 LOC)\n```python\n# Enthält:\n# - AppDatabaseConfig Protocol\n# - LogDatabaseConfig Protocol \n# - BaseConfig Klasse (statisch, __init__ wirft TypeError)\n```\n\n### 1.2 shared\/domain\/log_entry.py (< 25 LOC)\n```python\n# Enthält:\n# - LogEntry dataclass (frozen=True)\n# - KEINE Infrastructure-Abhängigkeiten!\n```\n\n### 1.3 shared\/infrastructure\/simple_db_connection.py (< 80 LOC)\n```python\n# Enthält:\n# - SimpleDbConnection Klasse\n# - get_connection() Context Manager\n# - get_log_connection() Context Manager\n# - KEIN Pooling (explizit dokumentiert)\n```\n\n### 1.4 shared\/infrastructure\/protokoll_logger.py (< 70 LOC)\n```python\n# Enthält:\n# - ProtokollLogger Klasse\n# - get_logger() Singleton-Factory\n# - clear_logger_registry() für Tests\n# - Importiert LogEntry aus domain\/\n```\n\n### 1.5 shared\/server_factory.py (< 60 LOC)\n```python\n# Enthält:\n# - Server-Creation Helper\n# - Expliziter env_path Parameter\n```\n\n### 1.6 Unit Tests\n```\nshared\/tests\/\n├── test_config_base.py\n├── test_log_entry.py\n├── test_simple_db_connection.py\n└── test_protokoll_logger.py\n```\n\n## Quality Gates\n\n- [ ] `ruff check shared\/` = 0 Fehler\n- [ ] `mypy shared\/` = 0 Fehler\n- [ ] Domain Coverage (shared\/domain\/): **100%**\n- [ ] Infrastructure Coverage (shared\/infrastructure\/): **>= 90%**\n- [ ] `clear_logger_registry()` existiert und funktioniert\n- [ ] **Kein `sys.path.insert` in shared\/**\n- [ ] **Kein `logging.basicConfig()` in shared\/**\n- [ ] LogEntry NUR in shared\/domain\/log_entry.py definiert\n- [ ] BaseConfig.__init__() wirft TypeError\n\n## Verbote (aus Plan v1.2)\n\n| Verbot | Begründung |\n|--------|------------|\n| sys.path.insert() | Non-deterministisch |\n| logging.basicConfig() | Nicht deterministisch |\n| lru_cache mit Config | TypeError bei non-hashable |\n| LogEntry in Infrastructure | Clean Architecture Bruch |\n\n## LOC-Grenzen\n\n| Datei | Max LOC |\n|-------|---------|\n| config_base.py | 60 |\n| log_entry.py | 25 |\n| simple_db_connection.py | 80 |\n| protokoll_logger.py | 70 |\n| server_factory.py | 60 |\n| **shared\/ gesamt** | **< 350** |\n\n## Dauer\n\n2 Tage",
"type": "ai_task"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"task\": {\n \"id\": 509,\n \"uuid\": \"922c823b-c085-4f22-8c8d-72a61897182b\",\n \"title\": \"Phase 1: MCP Shared Foundation erstellen\",\n \"description\": \"## Voraussetzungen (ZUERST LESEN)\\n\\n1. **Lies \/var\/www\/CLAUDE.md** vollständig\\n2. **Verpflichtung:** Alle Contracts, Quality-Checks und MCP-Tools gemäß CLAUDE.md einhalten\\n3. **Abhängigkeit:** Phase 0 (Package-Umbenennung) muss abgeschlossen sein\\n\\n## Kontext\\n\\n- **Dokument:** \/mcp\/mcp-server-refactoring-plan (ID 156, v1.2)\\n- **Ziel:** Gemeinsame Komponenten für alle MCP-Server\\n\\n## Dateien erstellen\\n\\n### 1.1 shared\/config_base.py (< 60 LOC)\\n```python\\n# Enthält:\\n# - AppDatabaseConfig Protocol\\n# - LogDatabaseConfig Protocol \\n# - BaseConfig Klasse (statisch, __init__ wirft TypeError)\\n```\\n\\n### 1.2 shared\/domain\/log_entry.py (< 25 LOC)\\n```python\\n# Enthält:\\n# - LogEntry dataclass (frozen=True)\\n# - KEINE Infrastructure-Abhängigkeiten!\\n```\\n\\n### 1.3 shared\/infrastructure\/simple_db_connection.py (< 80 LOC)\\n```python\\n# Enthält:\\n# - SimpleDbConnection Klasse\\n# - get_connection() Context Manager\\n# - get_log_connection() Context Manager\\n# - KEIN Pooling (explizit dokumentiert)\\n```\\n\\n### 1.4 shared\/infrastructure\/protokoll_logger.py (< 70 LOC)\\n```python\\n# Enthält:\\n# - ProtokollLogger Klasse\\n# - get_logger() Singleton-Factory\\n# - clear_logger_registry() für Tests\\n# - Importiert LogEntry aus domain\/\\n```\\n\\n### 1.5 shared\/server_factory.py (< 60 LOC)\\n```python\\n# Enthält:\\n# - Server-Creation Helper\\n# - Expliziter env_path Parameter\\n```\\n\\n### 1.6 Unit Tests\\n```\\nshared\/tests\/\\n├── test_config_base.py\\n├── test_log_entry.py\\n├── test_simple_db_connection.py\\n└── test_protokoll_logger.py\\n```\\n\\n## Quality Gates\\n\\n- [ ] `ruff check shared\/` = 0 Fehler\\n- [ ] `mypy shared\/` = 0 Fehler\\n- [ ] Domain Coverage (shared\/domain\/): **100%**\\n- [ ] Infrastructure Coverage (shared\/infrastructure\/): **>= 90%**\\n- [ ] `clear_logger_registry()` existiert und funktioniert\\n- [ ] **Kein `sys.path.insert` in shared\/**\\n- [ ] **Kein `logging.basicConfig()` in shared\/**\\n- [ ] LogEntry NUR in shared\/domain\/log_entry.py definiert\\n- [ ] BaseConfig.__init__() wirft TypeError\\n\\n## Verbote (aus Plan v1.2)\\n\\n| Verbot | Begründung |\\n|--------|------------|\\n| sys.path.insert() | Non-deterministisch |\\n| logging.basicConfig() | Nicht deterministisch |\\n| lru_cache mit Config | TypeError bei non-hashable |\\n| LogEntry in Infrastructure | Clean Architecture Bruch |\\n\\n## LOC-Grenzen\\n\\n| Datei | Max LOC |\\n|-------|---------|\\n| config_base.py | 60 |\\n| log_entry.py | 25 |\\n| simple_db_connection.py | 80 |\\n| protokoll_logger.py | 70 |\\n| server_factory.py | 60 |\\n| **shared\/ gesamt** | **< 350** |\\n\\n## Dauer\\n\\n2 Tage\",\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-28T10:37:58.842288\",\n \"updated_at\": \"2025-12-28T10:37:58.842290\",\n \"completed_at\": null,\n \"metadata\": {}\n },\n \"message\": \"Task #509 created\"\n}"
}
]
}