A Slack-native Eve analyst for a single Supabase project that only runs read-only SQL queries. It exposes just supabase__list_tables and supabase__execute_sql through an MCP client connection to the hosted Supabase MCP server; no write, migration, Edge Function, branch, storage, logs, advisors, account, or docs tools are available.
Supabase Data Analyst is an eve agent that lives in Slack and answers questions about a single Supabase project with read-only SQL. Mention it in a channel or send it a DM, and it inspects your schema, writes one focused query, runs it through the hosted Supabase MCP server, and replies with an aggregate answer in plain language instead of raw row dumps.
The agent is deliberately narrow: it exposes exactly two tools, supabase__list_tables for schema inspection and supabase__execute_sql for read-only SELECT queries. The MCP connection is pinned to read_only=true and features=database, a client-side allow list hides every other database tool, and the config loader rejects any attempt to set SUPABASE_DATA_ANALYST_READ_ONLY to false or request other feature groups at startup.
It is also scoped to one project by design. SUPABASE_DATA_ANALYST_PROJECT_REF is required whenever the MCP URL points at the hosted endpoint, so your account-level Supabase personal access token can never reach other projects in the account. That makes it a safe way to give a team self-serve analytics over a development or preview database.
Let product managers ask questions like total signups by month for the last 6 months directly in a channel. The agent inspects the schema, runs one aggregate SELECT, and replies with the numbers plus the assumptions it made.
New engineers can DM the agent to ask which tables exist and how they relate. supabase__list_tables gives them an instant map of a development project without dashboard access or a local database connection.
Point the agent at a development project or preview branch and give a whole workspace query access with no write risk: reads are enforced server-side by read_only=true and client-side by the two-tool allow list.
Instead of sharing database credentials, teams get an analyst that refuses writes, migrations, and admin operations by design, and suggests a read-only alternative whenever someone asks for something it cannot do.
Run npx shadcn@latest add @evex/supabase-data-analyst inside an existing eve app, install the listed dependencies, set the SUPABASE_DATA_ANALYST_* environment variables, deploy the app somewhere Slack can reach over HTTPS, and connect Slack with vercel connect create slack --triggers.
No. The MCP connection is pinned to read_only=true so the server runs every query as a read-only Postgres user, only list_tables and execute_sql pass the client-side allow list, and the config loader refuses to start if you try to disable read-only mode. A bundled eval verifies it declines migration requests.
The agent is defined with zai/glm-5.2 in agent/agent.ts. Because it is a standard eve agent definition, you can swap the model string for any model your eve deployment supports and adjust agent/instructions.md to tune its analyst behavior.
The README advises against it. Supabase MCP is designed for development and testing, and read-only access can still expose sensitive rows. Use a development project, preview branch, or obfuscated data, and only in workspaces whose members may see that data.
No. The connection URL always sets project_ref, and the config loader fails startup if SUPABASE_DATA_ANALYST_PROJECT_REF is missing while the MCP URL points at a non-localhost host, precisely so the account-level personal access token cannot reach your other projects.
npx shadcn@latest add @evex/supabase-data-analyst