{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/mcp-servers\/mcp_code\/tools\/class_info.py"
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/mcp-servers\/mcp_code\/tools\/search.py",
"content": "\"\"\"code_search - Sucht Klassen\/Interfaces\/Traits nach Name.\"\"\"\nimport json\nimport sys\n\nsys.path.insert(0, \"\/var\/www\/mcp-servers\/mcp_code\")\nfrom db import execute_query\n\n\ndef register_search_tool(mcp):\n \"\"\"Registriert code_search Tool.\"\"\"\n\n @mcp.tool()\n def code_search(\n query: str,\n namespace: str = None,\n class_type: str = None,\n ) -> dict:\n \"\"\"\n Sucht Klassen\/Interfaces\/Traits nach Name.\n\n Args:\n query: Suchbegriff (Name oder Teil davon)\n namespace: Filter nach Namespace (optional)\n class_type: Filter nach Typ: class, interface, trait (optional)\n\n Returns:\n Dict mit results: [{fqcn, type, file_id, file_name}]\n \"\"\"\n # SQL aus PHP CodeAnalysisRepository::findAll() (Zeile 50-54)\n sql = \"\"\"\n SELECT id, file_name, namespace, classes\n FROM code_analysis\n WHERE (file_name LIKE %s OR namespace LIKE %s)\n AND classes IS NOT NULL AND classes != '[]'\n \"\"\"\n params = [f\"%{query}%\", f\"%{query}%\"]\n\n if namespace:\n sql += \" AND namespace = %s\"\n params.append(namespace)\n\n sql += \" ORDER BY namespace, file_name LIMIT 100\"\n\n rows = execute_query(sql, tuple(params))\n\n results = []\n for row in rows:\n classes = json.loads(row[\"classes\"] or \"[]\")\n for cls in classes:\n # Filter by type if specified\n if class_type and cls.get(\"type\") != class_type:\n continue\n\n fqcn = f\"{row['namespace']}\\\\{cls['name']}\" if row[\"namespace\"] else cls[\"name\"]\n\n # Filter by query in class name\n if query.lower() not in cls[\"name\"].lower() and query.lower() not in (row[\"namespace\"] or \"\").lower():\n continue\n\n results.append({\n \"fqcn\": fqcn,\n \"type\": cls.get(\"type\", \"class\"),\n \"file_id\": row[\"id\"],\n \"file_name\": row[\"file_name\"],\n })\n\n return {\"results\": results, \"count\": len(results)}\n",
"numLines": 68,
"startLine": 1,
"totalLines": 68
}
}
}