"""PostgreSQL MCP工具全局管理器""" from typing import Optional from ..utils.logger import get_logger logger = get_logger("postgresql_tool_manager") # Try to import PostgreSQL MCP tool try: from th_agenter.services.mcp.postgresql_mcp import PostgreSQLMCPTool POSTGRESQL_TOOL_AVAILABLE = True except ImportError as e: logger.warning(f"PostgreSQL MCP tool not available: {str(e)}. PostgreSQL functionality will be disabled.") PostgreSQLMCPTool = None POSTGRESQL_TOOL_AVAILABLE = False class PostgreSQLToolManager: """PostgreSQL工具全局单例管理器""" _instance: Optional['PostgreSQLToolManager'] = None _postgresql_tool: Optional[PostgreSQLMCPTool] = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance @property def postgresql_tool(self) -> Optional[PostgreSQLMCPTool]: """获取PostgreSQL工具实例""" if not POSTGRESQL_TOOL_AVAILABLE: return None if self._postgresql_tool is None: self._postgresql_tool = PostgreSQLMCPTool() logger.info("创建全局PostgreSQL工具实例") return self._postgresql_tool def get_tool(self) -> Optional[PostgreSQLMCPTool]: """获取PostgreSQL工具实例(别名方法)""" return self.postgresql_tool # 全局实例 postgresql_tool_manager = PostgreSQLToolManager() def get_postgresql_tool() -> PostgreSQLMCPTool: """获取全局PostgreSQL工具实例""" return postgresql_tool_manager.get_tool()