list_databases
Discover accessible databases on SQL Server by querying sys.databases, excluding system and blocked databases by default, with options to include system databases.
Instructions
List all available databases on the SQL Server.
Queries sys.databases to discover accessible databases. System databases
(master, tempdb, model, msdb) are excluded by default. Databases in the
blocklist (MSSQL_BLOCKED_DATABASES) are always excluded.
Args:
include_system: If True, include system databases in the list
Returns:
Dictionary with:
- databases: List of available database names
- current_database: The currently active database
- count: Number of databases returned
- blocked_count: Number of databases hidden due to blocklist
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| include_system | No |
Implementation Reference
- src/mssql_mcp/tools/databases.py:15-80 (handler)The handler function for 'list_databases' tool. It queries sys.databases, filters out blocked and optional system databases, determines the current database, and returns a structured dictionary with the list and metadata. Registered via @mcp.tool() decorator.@mcp.tool() def list_databases(include_system: bool = False) -> dict[str, Any]: """List all available databases on the SQL Server. Queries sys.databases to discover accessible databases. System databases (master, tempdb, model, msdb) are excluded by default. Databases in the blocklist (MSSQL_BLOCKED_DATABASES) are always excluded. Args: include_system: If True, include system databases in the list Returns: Dictionary with: - databases: List of available database names - current_database: The currently active database - count: Number of databases returned - blocked_count: Number of databases hidden due to blocklist """ try: manager = get_connection_manager() config = manager.config blocked_databases = config.blocked_databases # Query all databases query = """ SELECT name, database_id, state_desc FROM sys.databases WHERE state_desc = 'ONLINE' ORDER BY name """ rows = manager.execute_query(query) # Filter databases databases = [] blocked_count = 0 for row in rows: db_name = row["name"] db_name_lower = db_name.lower() # Check if blocked if db_name_lower in blocked_databases: blocked_count += 1 continue # Check if system database if not include_system and db_name_lower in SYSTEM_DATABASES: continue databases.append(db_name) # Get current database current_db_query = "SELECT DB_NAME() AS current_database" current_db_result = manager.execute_query(current_db_query) current_database = current_db_result[0]["current_database"] if current_db_result else None return { "databases": databases, "current_database": current_database, "count": len(databases), "blocked_count": blocked_count, } except Exception as e: logger.error(f"Error listing databases: {e}") return {"error": str(e)}
- Constant defining system databases excluded by default from the list.# System databases that are always excluded from listing SYSTEM_DATABASES = {"master", "tempdb", "model", "msdb"}
- Docstring defines the tool's input parameter (include_system: bool) and output schema (dict with databases list, current_database, count, blocked_count)."""List all available databases on the SQL Server. Queries sys.databases to discover accessible databases. System databases (master, tempdb, model, msdb) are excluded by default. Databases in the blocklist (MSSQL_BLOCKED_DATABASES) are always excluded. Args: include_system: If True, include system databases in the list Returns: Dictionary with: - databases: List of available database names - current_database: The currently active database - count: Number of databases returned - blocked_count: Number of databases hidden due to blocklist """
- src/mssql_mcp/tools/databases.py:15-15 (registration)@mcp.tool() decorator registers the list_databases function as an MCP tool.@mcp.tool()