Skip to main content
Glama

liara_get_database

Retrieve configuration details and status information for a specific database on the Liara cloud platform using its name.

Instructions

Get details of a specific database

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the database

Implementation Reference

  • Handler function that fetches specific database details from Liara API, matching the liara_get_database tool purpose for checking database status.
    export async function getDatabase( client: LiaraClient, name: string ): Promise<Database> { validateRequired(name, 'Database name'); return await client.get<Database>(`/v1/databases/${name}`); }
  • Type schema for Database object returned by the getDatabase function.
    export interface Database { _id: string; name: string; type: DatabaseType; planID: string; status: DatabaseStatus; version?: string; createdAt: string; updatedAt: string; }
  • Core API call logic for retrieving database information.
    validateRequired(name, 'Database name'); return await client.get<Database>(`/v1/databases/${name}`); }
  • Extended helper for getting database connection info, referenced indirectly via status check.
    export async function getDatabaseConnection( client: LiaraClient, databaseName: string ): Promise<DatabaseConnectionInfo> { validateRequired(databaseName, 'Database name'); const warnings: string[] = []; let dbDetails: DatabaseDetails | null = null; // Try primary endpoint: /v1/databases/{name} try { dbDetails = await client.get<DatabaseDetails>(`/v1/databases/${databaseName}`); } catch (error: any) { const { LiaraMcpError } = await import('../utils/errors.js'); throw new LiaraMcpError( `Failed to fetch database details: ${error.message}`, 'DATABASE_FETCH_ERROR', { databaseName, error: error.message }, [ 'Verify the database name is correct', 'Check if the database exists', 'Ensure you have permission to access this database' ] ); } // Try alternative endpoint for connection info if primary doesn't have password let connectionInfo: DatabaseDetails | null = null; if (!dbDetails.password && !dbDetails.rootPassword && !dbDetails.connectionString) { try { // Some APIs have a separate connection endpoint connectionInfo = await client.get<DatabaseDetails>( `/v1/databases/${databaseName}/connection` ); } catch (error: any) { // This endpoint might not exist, that's okay warnings.push('Connection-specific endpoint not available, using database details'); } } // Merge connection info if available if (connectionInfo) { dbDetails = { ...dbDetails, ...connectionInfo, connection: connectionInfo.connection || dbDetails.connection, }; } // Extract connection info from nested connection object if present if (dbDetails.connection) { dbDetails = { ...dbDetails, hostname: dbDetails.connection.host || dbDetails.hostname, port: dbDetails.connection.port || dbDetails.port, username: dbDetails.connection.username || dbDetails.username, password: dbDetails.connection.password || dbDetails.password, database: dbDetails.connection.database || dbDetails.database, }; } // Validate we have minimum required fields const host = dbDetails.hostname || dbDetails.host || dbDetails.internalHostname; if (!host) { const { LiaraMcpError } = await import('../utils/errors.js'); throw new LiaraMcpError( 'Database connection info missing host', 'INCOMPLETE_CONNECTION_INFO', { databaseName, dbDetails }, [ 'Verify the database exists and is accessible', 'Check if the database is running', 'Use liara_get_database to check database status', 'The database may need to be started first' ] ); } // Extract password with better fallback logic const password = dbDetails.password || dbDetails.rootPassword || (dbDetails.connection?.password) || ''; const passwordAvailable = !!password; if (!passwordAvailable) { warnings.push( 'Password not returned by API. You may need to:', '1. Check the dashboard connection tab for the password', '2. Reset the password using liara_reset_database_password', '3. Use the password that was shown when the database was created' ); } // Extract username with better defaults based on database type let username = dbDetails.username || dbDetails.user || (dbDetails.connection?.username); // Set default username based on database type if not provided if (!username) { switch (dbDetails.type) { case 'postgres': username = 'postgres'; break; case 'redis': username = 'default'; // Redis often doesn't use usernames break; default: username = 'root'; } warnings.push(`Username not provided, using default: ${username}`); } // Build connection info const connectionInfoResult: DatabaseConnectionInfo = { host, port: dbDetails.port || getDefaultPort(dbDetails.type), username, password, database: dbDetails.database || dbDetails.name || databaseName, connectionString: dbDetails.connectionString || buildConnectionString({ ...dbDetails, username, password, }), passwordAvailable, warnings: warnings.length > 0 ? warnings : undefined, }; return connectionInfoResult; }

Other 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/razavioo/liara-mcp'

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