Skip to main content
Glama
larik15

supabase-security-mcp

by larik15

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DATABASE_URLNoYour Supabase database connection string (use the pooler URL)
SUPABASE_URLNoYour Supabase project URL (e.g. https://YOURREF.supabase.co)
SUPABASE_ANON_KEYNoYour Supabase public anon key
SUPABASE_SERVICE_ROLE_KEYNoYour Supabase service role key

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
probe_anonA

Read-only. Uses ONLY the public anon key to check what a stranger can read: tables via REST (select * limit 1), storage buckets (list), and RPC functions (call with {}). Returns OPEN/closed per target. Never writes.

audit_policiesA

Connects to the database (read-only queries on pg_class, pg_policies, pg_proc, information_schema) and flags: tables with RLS off but granted to anon/authenticated, policies with using(true) / with check(true), policies without a TO clause (apply to PUBLIC), and SECURITY DEFINER functions executable by anon/authenticated. Needs a Postgres connection string.

two_account_testA

Creates two temporary users (needs the service role key ONLY for that and for cleanup), inserts a row as user A into each table, then tries to read/update/delete it as user B and as anon through the normal REST API. Reports which tables leak across users. Deletes the test rows and users afterwards. Give sampleRow for tables with required columns.

security_reportB

Runs probe_anon, audit_policies (if a database URL is available) and two_account_test (if a service role key and tables are given), then returns one Markdown report sorted by severity.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation4/5

The probes are differentiated: `probe_anon` is black-box REST exposure, `audit_policies` inspects database catalogs, `two_account_test` verifies cross-user isolation, and `security_report` orchestrates. There is some conceptual overlap between `probe_anon` and `audit_policies` around anon/RLS exposure, so an agent might briefly hesitate, but no tool duplicates another.

Naming Consistency3/5

`probe_anon` and `audit_policies` follow a verb_noun command style, while `two_account_test` and `security_report` are noun-style names. They are all readable snake_case, but the action-first convention is not applied consistently across the set.

Tool Count5/5

Four tools is appropriate for a focused Supabase security-audit server: three distinct probes plus one report aggregator. Each tool has a clear job, and none feels redundant or missing.

Completeness4/5

The set covers anon REST exposure, RLS policy misconfigurations, SECURITY DEFINER functions, and cross-user table isolation, which are the core Supabase data-security risks. Minor gaps remain, such as no dynamic storage-object cross-account test and no anonymous INSERT probe, but static policy checks partially compensate.

Maintenance

ActivityMaintained
ResponsivenessNo issues