Skip to main content
Glama
bpamiri

SQL Server MCP

by bpamiri

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
NameRequiredDescriptionDefault
include_systemNo

Implementation Reference

  • 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
    """
  • @mcp.tool() decorator registers the list_databases function as an MCP tool.
    @mcp.tool()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bpamiri/pymssql-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server