Skip to main content
Glama
abushadab

Self-Hosted Supabase MCP Server

by abushadab

list_extensions

Retrieve a detailed list of all PostgreSQL extensions installed in your database using the Self-Hosted Supabase MCP Server, enabling efficient database management and feature inspection.

Instructions

Lists all installed PostgreSQL extensions in the database.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The execute function implementing the tool logic: queries pg_extension table for installed extensions (excluding plpgsql), using utilities for SQL execution and response handling.
    execute: async (input: ListExtensionsInput, context: ToolContext) => {
        const client = context.selfhostedClient;
    
        // SQL based on pg_extension
        const listExtensionsSql = `
            SELECT
                pe.extname AS name,
                pn.nspname AS schema,
                pe.extversion AS version,
                pd.description
            FROM
                pg_catalog.pg_extension pe
            LEFT JOIN
                pg_catalog.pg_namespace pn ON pn.oid = pe.extnamespace
            LEFT JOIN
                pg_catalog.pg_description pd ON pd.objoid = pe.oid AND pd.classoid = 'pg_catalog.pg_extension'::regclass
            WHERE
                pe.extname != 'plpgsql' -- Exclude the default plpgsql extension
            ORDER BY
                pe.extname
        `;
    
        const result = await executeSqlWithFallback(client, listExtensionsSql, true);
    
        return handleSqlResponse(result, ListExtensionsOutputSchema);
    },
  • Zod schemas defining input (empty), output (array of {name, schema, version, description}), and MCP JSON input schema for the list_extensions tool.
    const ListExtensionsOutputSchema = z.array(z.object({
        name: z.string(),
        schema: z.string(),
        version: z.string(),
        description: z.string().nullable().optional(),
    }));
    
    // Input schema (none needed for this tool)
    const ListExtensionsInputSchema = z.object({});
    type ListExtensionsInput = z.infer<typeof ListExtensionsInputSchema>;
    // Static JSON Schema for MCP capabilities
    const mcpInputSchema = {
        type: 'object', 
        properties: {},
        required: [],
    };
  • src/index.ts:101-101 (registration)
    Registers the listExtensionsTool in the availableTools map used by the MCP server.
    [listExtensionsTool.name]: listExtensionsTool as AppTool,

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/abushadab/selfhosted-supabase-mcp-basic-auth'

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