| """LangChain tool wrapper for SQL queries - used by LangGraph agent.""" | |
| from langchain_core.tools import tool | |
| from logger.logging import get_logger | |
| from mcp_server.sql_tool import SQLTool | |
| logger = get_logger(__name__) | |
| _sql_tool = None | |
| _sql_tool_init_failed = False | |
| def _get_tool(): | |
| global _sql_tool, _sql_tool_init_failed | |
| if _sql_tool is None: | |
| _sql_tool_init_failed = False | |
| _sql_tool = SQLTool() | |
| return _sql_tool | |
| def query_database(natural_language_query: str, max_rows: int = 100) -> dict: | |
| """Query the database using a natural language question. | |
| Args: | |
| natural_language_query: Question about data (e.g. "top 5 products") | |
| max_rows: Max number of rows to return (default 100) | |
| """ | |
| return _get_tool().execute(natural_language_query, max_rows) | |