Atlas / MCP servers / supabase-community / Supabase

SupabaseSAFE

mcp/supabase-community/supabase-7

Connect Supabase to your AI assistants

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
2 2r · 0w · 0d
Transport
stdio · streamable-http
License
Apache-2.0
Stars
2,917
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://registry.modelcontextprotocol.io/?q=com.supabase%2Fmcp)

Connect your Supabase projects to Cursor, Claude, Windsurf, and other AI assistants.

The Model Context Protocol (MCP) standardizes how Large Language Models (LLMs) talk to external services like Supabase. It connects AI assistants directly with your Supabase project and allows them to perform tasks like managing tables, fetching config, and querying data. See the full list of tools.

Setup

1. Follow our security best practices

Before setting up the MCP server, we recommend you read our security best practices to understand the risks of connecting an LLM to your Supabase projects and how to mitigate them.

2. Configure your MCP client

To configure the Supabase MCP server on your client, visit our setup documentation. You can also generate a custom MCP URL for your project by visiting the MCP connection tab in the Supabase dashboard.

Your MCP client will automatically prompt you to log in to Supabase during setup. Be sure to choose the organization that contains the project you wish to work with.

Most MCP clients require the following information:

{
"mcpServers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp"
}
}
}

If you don't see your MCP c

Read from source at commit f83bea8e4991OBSERVED · 2026-09-22
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add mcp-server-supabase --env SUPABASE_ACCESS_TOKEN=${SUPABASE_ACCESS_TOKEN} -- npx -y @supabase/[email protected]
03

Exposed tools (2)

2 read · 0 write · 0 destructive.

ToolRiskDescription
schemareadPostgres schema
schemasreadPostgres schemas
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (3 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (16)

LOWInventory / provenance · inv.hidden_file · CWE-1104
.release-please-manifest.json
.release-please-manifest.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.symlink · CWE-1104
CLAUDE.md
CLAUDE.md
Why it matters. link not followed
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server-supabase/scripts/registry/update-version.ts:5
import.meta.resolve('../../package.json')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server-supabase/scripts/registry/update-version.ts:7
const serverJsonPath = fileURLToPath(import.meta.resolve('../../server.json'));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server-supabase/src/platform/api-platform.ts:7
import packageJson from '../../package.json' with { type: 'json' };
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server-supabase/src/tools/util.test.ts:6
import { MCP_CLIENT_NAME, MCP_CLIENT_VERSION } from '../../test/mocks.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/mcp-server-supabase/src/transports/http.test.ts:19
} from '../../test/mocks.js';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
CONTRIBUTING.md:37
"url": "http://127.0.0.1:3111/mcp?project_ref=<your project ref>",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
CONTRIBUTING.md:53
pnpm dev:http --api-url 'http://127.0.0.1:<port>' --secret-url-template '<absolute URL containing {ref} and {name}>'
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/mcp-server-postgrest/README.md:124
const supabaseUrl = 'https://your-project-ref.supabase.co'; // http://127.0.0.1:54321 for local
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/mcp-server-postgrest/src/server.test.ts:9
const API_URL = 'http://127.0.0.1:54321';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/mcp-server-supabase/src/transports/local-http-entry.test.ts:314
apiUrl: 'http://127.0.0.1:9999',
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
pkg-pr-new, supabase
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/mcp-server-postgrest/package.json
@supabase/sql-to-rest, @supabase/auth-js, @total-typescript/tsconfig, @types/node, prettier, tsup, tsx, typescript
Why it matters. 9 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/mcp-server-supabase/package.json
@mjackson/multipart-parser, common-tags, gqlmin, graphql, openapi-fetch, @electric-sql/pglite, @total-typescript/tsconfig, @types/common-tags
Why it matters. 22 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/mcp-utils/package.json
@total-typescript/tsconfig, @types/node, prettier, tsup, typescript, vitest
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-09-22 · audit v0.4.1 · source sha f83bea8e4991full audit observations/trust-audit/mcp-server/supabase-community__supabase-7.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-09-22f83bea8e4991SAFEB89source changed, verdict held
06

Questions

What is the Supabase MCP server?

Connect Supabase to your AI assistants

What tools does Supabase expose?

2 in total: 2 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Supabase safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does Supabase need?

It reads SUPABASE_ACCESS_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Supabase run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @supabase/mcp-utils at 0.8.0.

How current is this page?

The grade is for one exact copy of the source (f83bea8e4991), read on 2026-09-22. The repository is watched and re-audited when it changes.

Advertisement