Skip to main content
Glama
abushadab

Self-Hosted Supabase MCP Server

by abushadab

verify_jwt_secret

Verify the JWT secret configuration for a self-hosted Supabase instance, ensuring proper setup and providing a preview for validation directly from your MCP-compatible environment.

Instructions

Checks if the Supabase JWT secret is configured for this server and returns a preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The execute handler function implementing the core logic of the verify_jwt_secret tool: retrieves the JWT secret via the client and returns status with a preview if found.
    execute: async (input: VerifyJwtInput, context: ToolContext) => {
        const client = context.selfhostedClient;
        const secret = client.getJwtSecret();
    
        if (secret) {
            // Return only a preview for security
            const preview = `${secret.substring(0, Math.min(secret.length, 5))}...`;
            return {
                jwt_secret_status: 'found',
                jwt_secret_preview: preview,
            };
        }
    
        return { jwt_secret_status: 'not_configured' };
    },
  • Input (empty), output, and MCP static JSON schemas defining the structure and validation for the verify_jwt_secret tool.
    const VerifyJwtInputSchema = z.object({});
    type VerifyJwtInput = z.infer<typeof VerifyJwtInputSchema>;
    
    // Output schema
    const VerifyJwtOutputSchema = z.object({
        jwt_secret_status: z.enum(['found', 'not_configured']).describe('Whether the JWT secret was provided to the server.'),
        jwt_secret_preview: z.string().optional().describe('A preview of the JWT secret (first few characters) if configured.'),
    });
    
    // Static JSON Schema for MCP capabilities
    const mcpInputSchema = {
        type: 'object',
        properties: {},
        required: [],
    };
  • Primary registration/definition of the verifyJwtSecretTool, exporting the complete tool object with name, description, schemas, and handler.
    export const verifyJwtSecretTool = {
        name: 'verify_jwt_secret',
        description: 'Checks if the Supabase JWT secret is configured for this server and returns a preview.',
        inputSchema: VerifyJwtInputSchema,
        mcpInputSchema: mcpInputSchema,
        outputSchema: VerifyJwtOutputSchema,
        execute: async (input: VerifyJwtInput, context: ToolContext) => {
            const client = context.selfhostedClient;
            const secret = client.getJwtSecret();
    
            if (secret) {
                // Return only a preview for security
                const preview = `${secret.substring(0, Math.min(secret.length, 5))}...`;
                return {
                    jwt_secret_status: 'found',
                    jwt_secret_preview: preview,
                };
            }
    
            return { jwt_secret_status: 'not_configured' };
        },
    }; 
  • src/index.ts:112-112 (registration)
    Server-side registration of verifyJwtSecretTool into the availableTools map for MCP server initialization.
    [verifyJwtSecretTool.name]: verifyJwtSecretTool as AppTool,
  • Supporting getter method in SelfhostedSupabaseClient for retrieving the configured JWT secret, directly called by the tool handler.
    public getJwtSecret(): string | undefined {
        return this.options.jwtSecret;
    }

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