Supabase Read-Only MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Host for the HTTP MCP endpoint. Default is 127.0.0.1. | |
| MCP_PORT | No | Port for the HTTP MCP endpoint. Default is 8000. | |
| MCP_TRANSPORT | No | Transport for the MCP server. Default is stdio. Set to http for Streamable HTTP. Example: http | |
| MCP_ALLOWED_TABLES | No | Exact allowlist of tables and views. An empty value is deny-all. Example: public.customers,public.accounts,public.transactions | |
| MCP_ALLOWED_SCHEMAS | No | Allowed schemas for exposed tables and views. Example: public | |
| SUPABASE_DATABASE_URL | Yes | PostgreSQL connection URL for a dedicated read-only role. Both postgresql:// and postgresql+psycopg:// are accepted. TLS is enforced when sslmode is omitted, and only require, verify-ca, or verify-full are accepted when sslmode is supplied. Example: postgresql://mcp_reader:REPLACE_WITH_PASSWORD@db.PROJECT_REF.supabase.co:5432/postgres?sslmode=require |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_checkA | Check server and database availability with SELECT 1; returns no sensitive details. |
| list_allowed_tablesA | List only configured and validated tables/views; use before describing or selecting. |
| describe_tableB | Describe safe column metadata for one allowlisted schema/table; rejects all others. |
| select_rowsB | Select bounded rows from an allowlisted object using typed filters, never arbitrary SQL. |
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 4 tools
Each tool has a clearly distinct purpose: health_check for server/database status, list_allowed_tables for table enumeration, describe_table for schema metadata, and select_rows for data retrieval. There is no overlap or confusion between these roles.
All tools use snake_case, which is consistent. However, health_check breaks the verb_noun pattern followed by list_allowed_tables, describe_table, and select_rows, creating a minor deviation.
Four tools are well-scoped for a focused read-only server. Each tool earns its place, covering health, table listing, schema description, and row selection without redundancy.
The surface covers health checks, table discovery, schema metadata, and data selection, which is nearly complete for read-only access. Minor gaps like explicit schema listing or relationship introspection exist but are not critical.