Chat to Supabase
用自然语言查询 Supabase 数据库,自动生成并执行 SQL。
使用方式
/db [项目名] <自然语言查询>
项目别名
| 别名 | Project ID / 连接方式 | 说明 |
|---|---|---|
ai50 (默认) |
ebgmmkaxuhawfrwryzia |
AI50 项目(云端) |
pdc |
mwvsdfalfqblbqwnyqpn |
PersonalDigitalCenter(云端) |
local |
localhost:6543 |
本地 Supabase |
本地 Supabase 配置
- 位置:
~/.claude/services/supabase-local/ - Dashboard: http://localhost:8000 (用户名:
supabase, 密码:l06STN9x9tY2IlQd) - API URL: http://localhost:8000
- PostgreSQL: localhost:6543 (通过 Supavisor 连接池)
- 直连 DB: localhost:5432 (绕过连接池)
- 数据库: postgres
- 用户: postgres
- 密码: p6Num7hrPR55MK5MLZ2xnl4xoXnyYB1b
- ANON_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
- SERVICE_ROLE_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
本地查询方式
对于 local 项目,使用 psql 直连:
PGPASSWORD=p6Num7hrPR55MK5MLZ2xnl4xoXnyYB1b psql -h localhost -p 6543 -U postgres -d postgres -c "SQL"
示例
- 查询默认项目(AI50)
/db 最近7天新增了多少用户
/db 统计每天的活跃用户数
/db 显示所有表
- 指定项目
/db pdc 最近的订阅记录
/db ai50 用户增长趋势
- 复杂查询
/db 按来源统计用户注册数,按数量降序排列
/db 找出最近30天没有活动的用户
执行流程
- 解析项目 - 识别项目别名,默认 ai50
- 加载 Schema - 读取
~/.claude/skills/chat-to-supabase/schemas/下的表结构(如有) - 生成 SQL - 根据自然语言和 schema 生成 PostgreSQL 查询
- 执行查询 - 调用
mcp__supabase__execute_sql - 格式化输出 - 表格或 JSON 形式展示结果
内置查询
| 命令 | 说明 |
|---|---|
/db tables |
显示所有表 |
/db schema <表名> |
显示表结构 |
/db count <表名> |
统计表行数 |
注意事项
- 只支持 SELECT 查询,不执行 INSERT/UPDATE/DELETE
- 复杂查询建议先用
/db schema确认表结构 - 查询结果超过 100 行会自动截断
- Supabase JS SDK 默认只返回 1000 条记录。如果需要获取大量数据(如 50000+ 条),必须:
- 使用分批查询:
.range(offset, offset + batchSize - 1)循环获取 - 或者直接用 SQL 在数据库端聚合统计,避免传输大量原始数据
- 使用分批查询:
Schema 缓存
为了生成更准确的 SQL,可以在 ~/.claude/skills/chat-to-supabase/schemas/ 目录下放置表结构文件:
schemas/
ai50.json # AI50 项目的表结构
pdc.json # PersonalDigitalCenter 的表结构
格式示例:
{
"tables": {
"users": {
"columns": ["id", "email", "created_at", "source"],
"description": "用户表"
},
"events": {
"columns": ["id", "user_id", "event_type", "created_at"],
"description": "用户事件表"
}
}
}
技术实现
调用 Supabase MCP 的 execute_sql 工具:
mcp__supabase__execute_sql(project_id, query)