mcp-server-supabase@0.17.0
VERIFIEDPublisher claims: "MCP server for interacting with Supabase" Observed in sandbox: calls supabase.com only, touches nothing outside the project, writes no memory.
Coverage
Started with a decoy SUPABASE_ACCESS_TOKEN; tool list observed. Tool calls with a real credential not tested.- Tested
- server startup with a tagged decoy in SUPABASE_ACCESS_TOKEN · MCP initialize and tools/list · every tool description, for hidden instructions · where the decoy credential went · every file read, file written and host contacted by what ran
- Not tested
- what the tools do when called with a real credential
- Needs
- SUPABASE_ACCESS_TOKEN — give it to the server where it runs, through vet-skills run --secrets, so the value never enters the server's environment. Never paste a credential into a chat, a ticket or a report.
Before you give it your token
- It will ask for
SUPABASE_ACCESS_TOKENor--access-tokenConfiguration, not credentials: SUPABASE_CONTENT_API_URL- Where it talks to
- supabase.com, supabase.green, supabase.co (its own)
- What the honeypot saw
- no credential files read · reached only supabase.com (its own)
- What we could not test
- what the tools do when called with a real credential
Connect it with a scoped credential, under the guard. It asks for SUPABASE_ACCESS_TOKEN and talks to supabase.com, supabase.green, supabase.co. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios) on 2026-11-13 and scored it 87/100 (Verified). It did what it claims and nothing else we could detect: no undeclared network egress, no credential reads, no persistent instruction writes. Summary: calls supabase.com only, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 54 s · 2 scenarios · 0 deviationsStatic findings
…ing()})).describe("The files to upload. This should include the entrypoint, deno.json, and any relative dependencies. Include the deno.json and deno.jsonc files to configure the Deno runtime (e.g., compiler options, imports) if they exist.…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…tch Supabase Content API GraphQL schema: HTTP status ${s.status}`);let r=await s.json(),{data:i,error:c}=tn.safeParse(r);if(c)throw new Error(`Failed to parse Supabase Content API response: ${c.message}`);if(i.errors?.length){let l=`Supaba…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…hat target the primary database can be run.`);c=await o.executeSql(n,{query:Eo(e.sql,e.row_limit),read_only:a,max_result_bytes:s})}else{if(!_optionalChain([t, 'optionalAccess', _94 => _94.queryLogs]))throw new Error("Log queries are not av…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…tch Supabase Content API GraphQL schema: HTTP status ${s.status}`);let r=await s.json(),{data:i,error:c}=tn.safeParse(r);if(c)throw new Error(`Failed to parse Supabase Content API response: ${c.message}`);if(_optionalChain([i, 'access', _6…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ing()})).describe("The files to upload. This should include the entrypoint, deno.json, and any relative dependencies. Include the deno.json and deno.jsonc files to configure the Deno runtime (e.g., compiler options, imports) if they exist.…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…...args)); lastAccessLHS = undefined; } } return value; }var g={name:"@supabase/mcp-server-supabase",mcpName:"com.supabase/mcp",version:"0.17.0",description:"MCP server for interacting with Supabase",license:"Apache-2.0",repository:{type:"…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.…ttlSeconds:_}):void 0,j=_nullishCoalesce(w, () => (S)),X;return _mcputils.createMcpServer.call(void 0, {name:"supabase",title:"Supabase",version:_t,instructions:vs,async onInitialize(v){X=v.clientInfo;let{clientInfo:P}=v,$=`supabase-mcp/${…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.- Install the Supabase agent skill for critical development and security guidance: \`npx skills add supabase/agent-skills\` (https://supabase.com/docs/guides/getting-started/ai-skills.md)Fix: Pin versions and sources; vendor anything fetched at install time.…f}=q.parse(e),h;try{h=await M.getEdgeFunction(t,s)}catch{}let y=f.find(g=>["deno.json","import_map.json"].includes(g.name));n??=h?.import_map_path??y?.name;let O=await r.POST("/v1/projects/{ref}/functions/deploy",{params:{path:{ref:t},quer…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.var g={name:"@supabase/mcp-server-supabase",mcpName:"com.supabase/mcp",version:"0.17.0",description:"MCP server for interacting with Supabase",license:"Apache-2.0",repository:{type:"git",url:"https://github.com/supabase/mcp.git"},type:"modu…Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.- Install the Supabase agent skill for critical development and security guidance: \`npx skills add supabase/agent-skills\` (https://supabase.com/docs/guides/getting-started/ai-skills.md)Fix: Pin versions and sources; vendor anything fetched at install time.declare function createSupabaseMcpHandler(options: SupabaseMcpServerOptions): _modelcontextprotocol_server.McpHttpHandler;Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.…parse(e),h;try{h=await M.getEdgeFunction(t,s)}catch (e3){}let y=f.find(g=>["deno.json","import_map.json"].includes(g.name));n??=_nullishCoalesce(_optionalChain([h, 'optionalAccess', _8 => _8.import_map_path]), () => (_optionalChain([y, 'op…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…hat target the primary database can be run.`);c=await o.executeSql(n,{query:Eo(e.sql,e.row_limit),read_only:a,max_result_bytes:s})}else{if(!t?.queryLogs)throw new Error("Log queries are not available on this server, so log cells cannot be …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ateCodec as $o,isSpecType as ws}from"@modelcontextprotocol/server";import{createMcpServer as Ts}from"@supabase/mcp-utils";import{z as js}from"zod/v4";import on from"gqlmin";import{z as Ht}from"zod/v4";import{buildSchema as Yo,GraphQLError …Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for @supabase/mcp-server-supabase@0.17.0 as of 26 h ago. This is the package itself, not its dependencies.