Supabase MCP server 0.14.0 (@supabase/mcp-server-supabase): our test log
Supabase MCP server 0.14.0 (@supabase/mcp-server-supabase) started over stdio in a median 468 ms and listed 19 tools in a median 363 ms; we did not make any authenticated call.
Tested by us on 2026-10-26. Local open-weight model, not the vendor's hosted models. A smoke test on a CPU-only box, not a benchmark.
Result at a glance
| Field | Value |
|---|---|
| Result | Passed |
| Version tested | 0.14.0 (@supabase/mcp-server-supabase) |
| Date and time | 2026-10-26, 09:42 CDT (America/Chicago) |
| Task | A small Python client written with the official MCP Python SDK spawns the server as a child process over stdio with a placeholder access token (not a real credential), times the initialize handshake (spawn to initialize result) and one tools/list, three cold starts. Pass means initialize succeeds and the tool list comes back. No request is sent to the vendor's service. Numbers are milliseconds on the rig described on the methodology page. |
| Model used | none (no language model involved) |
| Hardware | Linux x86_64 virtual machine (Debian 13), 8 vCPU (Intel Xeon, 1 thread per core), 15 GiB RAM, no GPU |
| Cold start (3 runs) | 645 ms, 451 ms, 468 ms; median 468 ms |
| tools/list (3 runs) | 701.8 ms, 362.9 ms, 317.6 ms |
| Tools advertised | 19 |
What we found
- It advertised 19 tools with --read-only (database, logs, edge functions, docs search).
- We ran it with --read-only, so the 19 tools are the set advertised under that flag; we did not list the tools without it.
What we ran, step by step
| Step | Wall time | Exit code | Notes |
|---|---|---|---|
| Install with npm (cold, no cache) | 3.46 s | 0 | 28 MB in the install directory; @supabase/mcp-server-supabase 0.14.0. Load 13.35. |
| Handshake and tools/list, 3 cold starts | n/a | 0 | supabase 0.14.0 (protocol 2025-11-25). Cold start 645, 451, 468 ms (median 468); tools/list 701.8, 362.9, 317.6 ms; 19 tools. Load 13.65 to 14.84. |
# Install with npm (cold, no cache)
cd work/npm/supabase-mcp && npm init -y >/dev/null && npm install @supabase/mcp-server-supabase --cache /tmp/npmcache-supabase-mcp --no-audit --no-fund 2>&1 | tail -3; du -sm node_modules | cut -f1; npm ls --depth=0 2>/dev/null | tail -2
# Handshake and tools/list, 3 cold starts
work/npm/supabase-mcp/node_modules/.bin/mcp-server-supabase --access-token=<placeholder> --read-onlyRaw output (excerpts)
search_docs, list_organizations, get_organization, list_projects, get_project, get_cost, confirm_cost, list_tables, list_extensions, list_migrations, execute_sql, query_logs ...Gotchas and things that broke
- tools/list was slower than the others (318 to 702 ms, against 8 to 32 ms); we did not investigate why. Cold start was 451 to 645 ms.
What we did not test
- Any authenticated call: we used a placeholder token, so no request reached the vendor's API and we did not check that real accounts, permissions or rate limits work.
- Remote (HTTP) transport and concurrent clients: only local stdio with one client was run.
- Anything about answer quality: no model was involved in the handshake and tool-list check.
- A single smoke-test run set (three starts); it is not a benchmark.
Reproduce it
Versions change. These commands install whatever is latest on the day you run them unless a version is pinned, so expect different results later. The version we measured is in the table above.
npm install @supabase/mcp-server-supabase
npx mcp-server-supabase --access-token=<your personal access token> --read-onlyHow to read this test
Every number on this page was measured on this one machine, which also ran other jobs, so timings are indicative and vary run to run. A pass means our small task worked once or as stated, a fail means it did not work as we ran it; neither says how the tool behaves with a vendor's frontier model, on a GPU, or at scale. Where a tool could not run without an account or a GPU, we say so instead of guessing.
See the testing rig for the hardware, the local model and the rules we follow, and the test hub for every other test.
Related tests: mcp servers and tooling
- Chrome DevTools MCP: Chrome DevTools MCP 1.12.0 exposed 32 tools and opened a page in headless Chrome in 136.6 ms median; our first navigate_page call was rejected for a missing pageId.
- Context7 MCP: Context7 MCP 4.4.4 started locally in 462 ms but its tool calls go to a hosted API: resolve-library-id took about 1.2 s per call and returned React documentation matches.
- FastMCP 4.1.3 and the official MCP Python SDK 2.3.0 (server side): The same three-tool server written with FastMCP 4.1.3 and with the official MCP Python SDK 2.3.0 answered calls equally fast (about 1 ms); FastMCP started in 643 to 735 ms against 461 to 516 ms for the SDK on repeats.
- GitHub MCP Server: GitHub MCP Server 2.0.3 started over stdio in a median 266 ms and listed 46 tools in a median 15 ms; we did not make any authenticated call.
- MCP Everything (reference) server: MCP Everything (reference) server answered over stdio in 356 ms cold (v1.0.0, Node 20) and 252 ms (v2.0.1, Node 24); median call 0.5 to 0.4 ms.
- MCP Fetch server: The MCP Fetch server 2026.10.24 refused to fetch a local test page by default (a deliberate loopback block); with --allow-private-ips it fetched it in 698.3 ms median.
FAQ
Does Supabase MCP server need an account?
Yes for real use: it calls the vendor's API with an access token you create. For this test we used a placeholder token, which was enough for the server to start and list its tools but means no API call was exercised.
Sources
- Supabase MCP repository (fetched 2026-10-26)
Related
Markdown version for agents: /tests/supabase-mcp.md