Mmcp.market

Rls Doctor MCP server

by subhajitlucky·io.github.subhajitlucky/rls-doctor·v0.5.8

Read-only Postgres/Supabase RLS audit with a rolled-back probe that proves who can read which rows.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

0 stars1.9k downloads/wk

Reviews

Write one

Nobody has reviewed Rls Doctor yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Rls Doctor tools

No tool declarations could be read from the package source. They show once the server is installed.

Public scan report

scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it

no findings
  • Code scan12 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 2 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

Install Rls Doctor in Claude Code, Cursor or VS Code

Runs npx -y rls-doctor on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add rls-doctor -- npx -y rls-doctor
Add to Cursor

What the publisher says

From the Rls Doctor repository's README, as published. We do not edit it. Read it on GitHub

RLS Doctor

Don't trust your RLS. Prove it.

Can user A read user B's rows? Row Level Security is one of Postgres's strongest isolation tools, and one of the easiest to leave half-configured. You enable RLS, add a policy, and move on — but policies OR-combine, WITH CHECK silently falls back to USING, table owners bypass RLS entirely, and TRUNCATE is never protected at all.

rls-doctor reads your catalog and tells you what's actually reachable. And with probe, it stops analyzing and just shows you, impersonating your app roles in a transaction it always rolls back.

npx rls-doctor check    # reads DATABASE_URL or SUPABASE_DB_URL
npx rls-doctor demo     # no database needed: disposable Postgres, proven leak
RLS Doctor Report
Generated: 2026-07-12T00:00:00.000Z
Schemas: public

Summary: 1 tables, 0 policies, highest risk HIGH
Findings: critical 0, high 1, medium 0, low 0, info 0
RLS Score: 90/100

public.orders
  RLS disabled; force RLS disabled; 0 policies
  [HIGH] RLS-disabled table is reachable by an application role
    public.orders has no row-level checks; Application role authenticated and
    can exercise SELECT granted to authenticated.
    Fix: Enable RLS and add least-privilege policies for each application role.
    Suggested SQL:
      alter table "public"."orders" enable row level security;

Prove a cross-tenant leak instead of guessing

Most RLS review is reading policies and hoping. probe is behavioral:

rls-doctor probe --connection "$DATABASE_URL" --schema public \
  --app-roles authenticated --subjects \
  00000000-0000-0000-0000-000000000001 \
  00000000-0000-0000-0000-000000000002

It sets request.jwt.claims inside the transaction, so auth.uid() resolves to each real Supabase user, then counts whose rows that identity can read.

- [high] probe-cross-owner-read rls_doctor_demo.orders:
  Role authenticated reads rows across 2 distinct owner_id values
- [high] probe-cross-subject-read rls_doctor_demo.orders:
  Role authenticated reads rows belonging to other users

It never mutates anything. probe opens begin ... read only and always rolls back — safe against a production read replica.

Install

npx rls-doctor check              # no install
npm install -g rls-doctor         # global

Requires Node.js 20 or later. Prefer DATABASEURL or SUPABASEDB_URL with read-only audit credentials — passing a secret via --connection exposes it in shell history and process listings.

Commands

rls-doctor check --schema public --fail-on high
rls-doctor explain public.profiles
rls-doctor probe --app-roles authenticated --owner-columns tenant_id

check options

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Rls Doctor: common questions

Is Rls Doctor MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Rls Doctor safety report
How do I install Rls Doctor?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Rls Doctor need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Rls Doctor maintained?
The last commit was 2 days ago (2026-10-11). The latest release is v0.5.8.
What can I use instead of Rls Doctor?
Servers from other publishers that do the same job: PostgreSQL MCP server, SupaForge MCP server and Supabase MCP server. Compare all Rls Doctor alternatives.

Alternatives to Rls Doctor

Same job from other publishers: the closest match first, then the best rated.

All Rls Doctor alternatives →
  • PostgreSQL
    MCP server for PostgreSQL: local, Docker, RDS, Neon, Supabase, or behind an SSH bastion.
    B
  • SupaForge
    Find and fix drift between Supabase environments: schema, RLS, roles, auth, storage and more.
    A
  • Supabase
    MCP server for interacting with the Supabase platform
    A
  • Run402
    x402 pay-per-call infra for agents: $0.03 image generation, Postgres, auth, storage, functions.
    B
  • Neon
    Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.
    A

More from subhajitlucky →