Skip to main content
Glama
bretoreta

MariaDB MCP Server

by bretoreta

list_tables

Retrieve a list of all tables in a specified MariaDB database for efficient schema exploration and management.

Instructions

List all tables in a specified database

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name (optional, uses default if not specified)

Implementation Reference

  • The handler function for the 'list_tables' tool. It extracts the optional 'database' argument, executes 'SHOW FULL TABLES' via the executeQuery helper, and returns the result rows as formatted JSON text content.
    case "list_tables": { const db = args.database as string | undefined; const { rows } = await executeQuery("SHOW FULL TABLES", [], db); return { content: [{ type: "text", text: JSON.stringify(rows, null, 2) }], }; }
  • Input schema definition for the 'list_tables' tool, specifying an optional 'database' property of type string.
    inputSchema: { type: "object", properties: { database: { type: "string" } }, },
  • src/index.ts:87-94 (registration)
    The tool registration object for 'list_tables' within the ListTools response, including name, description, and input schema.
    { name: "list_tables", description: "List tables in a database", inputSchema: { type: "object", properties: { database: { type: "string" } }, }, },
  • Helper function executeQuery used by list_tables handler to perform the database query with connection pooling, validation, and result limiting.
    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"); } } }

Other Tools

Related Tools

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/bretoreta/mariadb-mcp-server'

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