"""Get databases tool."""
from typing import Optional
from fastmcp import Context
from .base import MCPTool
class GetDatabasesService(MCPTool):
"""Service to retrieve list of databases on a server."""
@property
def name(self) -> str:
return "get_databases"
@property
def description(self) -> str:
return "Get list of all databases on a specific server (excluding system databases)"
async def execute(
self,
ctx: Context,
server_name: Optional[str] = None,
user: Optional[str] = None,
password: Optional[str] = None,
driver: Optional[str] = None,
port: Optional[int] = None
) -> list[str]:
"""Get list of databases.
Args:
ctx: FastMCP context
server_name: Server hostname/address
user: Database username
password: Database password
driver: ODBC driver name
port: Server port
Returns:
list[str]: List of database names or error messages
"""
creds = self.creds_manager.get_from_context(
ctx, user, password, server_name, None, driver, port
)
if not creds.is_valid():
return ["Error: Missing credentials"]
return self.inspector.get_databases(creds)