"""Describe table tool."""
from typing import Any, Optional
from fastmcp import Context
from .base import MCPTool
class DescribeTableService(MCPTool):
"""Service to get detailed table description."""
@property
def name(self) -> str:
return "describe_table"
@property
def description(self) -> str:
return "Get detailed table description (columns, keys, indexes, row count)"
async def execute(
self,
ctx: Context,
table: str,
database: Optional[str] = None,
server_name: Optional[str] = None,
user: Optional[str] = None,
password: Optional[str] = None,
driver: Optional[str] = None,
port: Optional[int] = None
) -> dict[str, Any]:
"""Describe table structure.
Args:
ctx: FastMCP context
table: Table name to describe
database: Database name
server_name: Server hostname/address
user: Database username
password: Database password
driver: ODBC driver name
port: Server port
Returns:
dict: Detailed table description or error dictionary
"""
creds = self.creds_manager.get_from_context(
ctx, user, password, server_name, database, driver, port
)
if not creds.database or not table:
return {"error": "Database and table names are required"}
if not creds.is_valid():
return {"error": "Missing credentials"}
return self.inspector.describe_table(creds, table)