list_databases
Retrieve a list of all accessible databases on a MariaDB server to identify available data sources for exploration or querying.
Instructions
List all accessible databases on the MariaDB server
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:124-129 (handler)The handler function for the 'list_databases' tool. It executes the SQL query 'SHOW DATABASES' using the executeQuery helper and returns the result rows as a formatted JSON text block.case "list_databases": { const { rows } = await executeQuery("SHOW DATABASES"); return { content: [{ type: "text", text: JSON.stringify(rows, null, 2) }], }; }
- src/index.ts:82-86 (registration)Registration of the 'list_databases' tool in the MCP server's listTools response, including its name, description, and input schema (empty object, no parameters).{ name: "list_databases", description: "List all databases", inputSchema: { type: "object" }, },
- src/index.ts:85-85 (schema)Input schema for the list_databases tool, specifying an empty object (no input parameters required).inputSchema: { type: "object" },
- src/connection.ts:49-114 (helper)The executeQuery helper function called by the list_databases handler to perform the actual database query.export async function executeQuery( sql: string, params: any[] = [], database?: string ): Promise<{ rows: any; fields: mariadb.FieldInfo[] }> { console.error(`[Query] Executing: ${sql}`); // Create connection pool if not already created if (!pool) { console.error("[Setup] Connection pool not found, creating a new one"); pool = createConnectionPool(); } try { // Get connection from pool if (connection) { console.error("[Query] Reusing existing connection"); } else { console.error("[Query] Creating new connection"); connection = await pool.getConnection(); } // Use specific database if provided if (database) { console.error(`[Query] Using database: ${database}`); await connection.query(`USE \`${database}\``); } if (!isAlloowedQuery(sql)) { throw new Error("Query not allowed"); } // Execute query with timeout const [rows, fields] = await connection.query({ metaAsArray: true, namedPlaceholders: true, sql, ...params, timeout: DEFAULT_TIMEOUT, }); // Apply row limit if result is an array const limitedRows = Array.isArray(rows) && rows.length > DEFAULT_ROW_LIMIT ? rows.slice(0, DEFAULT_ROW_LIMIT) : rows; // Log result summary console.error( `[Query] Success: ${ Array.isArray(rows) ? rows.length : 1 } rows returned with ${JSON.stringify(params)}` ); return { rows: limitedRows, fields }; } catch (error) { if (connection) { connection.release(); console.error("[Query] Connection released with error"); } console.error("[Error] Query execution failed:", error); throw error; } finally { // Release connection back to pool if (connection) { connection.release(); console.error("[Query] Connection released"); } } }