supabase-schema-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUPABASE_DB_HOST | Yes | The Supabase database host (e.g., db.<project_ref>.supabase.co) | |
| SUPABASE_DB_NAME | No | The database name (optional, default 'postgres') | |
| SUPABASE_DB_PORT | No | The database port (optional, default 5432) | |
| SUPABASE_DB_USER | Yes | The database user (usually 'postgres') | |
| SUPABASE_DB_PASSWORD | Yes | The database password |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| schema_list_tablesA | List tables in the schema (default: public). Use schema_name='all' for all. |
| schema_list_columnsA | List columns for tables in the schema. Optionally restrict to one table. |
| schema_list_viewsA | List views in the given schema. Use schema_name='all' for all user schemas. |
| schema_list_enumsA | List custom enum types. Use schema_name='all' for all user schemas. |
| rls_list_policiesA | List RLS policies (table, policy, command). schema_name='all' for all schemas. |
| rls_list_coverageA | Report tables with RLS enabled and policy counts. schema_name='all' for all. |
| rls_get_policyA | Return the definition (USING and WITH CHECK code) of an RLS policy by name. |
| functions_listA | List Postgres functions (signature, return type). schema_name='all' for all. |
| functions_list_rpc_candidatesC | List Supabase RPC-callable function candidates. schema_name='all' for all. |
| functions_get_definitionB | Return the full source code (CREATE FUNCTION) of an RPC/function by name. |
| relationships_list_foreign_keysA | List foreign keys (from/to table and columns). schema_name='all' for all. |
| relationships_list_indexesA | List indexes (table, index, columns). schema_name='all' for all schemas. |
| triggers_listA | List triggers (table, trigger, timing, event). schema_name='all' for all. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool is prefixed by a distinct resource domain (schema, rls, functions, relationships, triggers) and then an action (list/get). Even functions_list vs functions_list_rpc_candidates are clearly distinguished by the 'rpc_candidates' modifier. No two tools target the same resource+action combination.
All tools use snake_case with a consistent <domain>_<action>_<object> pattern, e.g., schema_list_tables, rls_get_policy, relationships_list_indexes. There are no mixed conventions or irregular verbs.
13 tools is well-scoped for a schema introspection server, covering major Postgres object types (tables, columns, views, enums, RLS, functions, relationships, triggers) without being excessive. Each tool earns its place.
The server provides strong coverage of listing and detail operations for the main schema objects. Minor gaps include no explicit list-schemas tool and no full table/view DDL definitions, but these can be worked around using schema_name='all' and existing list tools.