| name | Supabase Database Query |
| description | Execute SQL queries, migrations, and RLS policies on Supabase database using MCP tools |
| tags | database, supabase, sql, mcp |
Supabase Database Query Skill
这个 Skill 帮助 Claude 使用 Supabase MCP 工具执行数据库操作。
何时使用
当需要执行以下操作时自动激活:
- 执行 SQL 查询(SELECT、INSERT、UPDATE、DELETE)
- 创建或修改数据库表结构
- 添加或修改 Row Level Security (RLS) 策略
- 执行数据库迁移
- 查看数据库表结构和数据
可用的 MCP 工具
主要工具:
mcp__supabase__execute_sql - 执行原始 SQL
- 参数:
project_id,query - 用于:查询数据、修改结构、RLS 策略
- 参数:
mcp__supabase__apply_migration - 应用迁移
- 参数:
project_id,name,query - 用于:DDL 操作、结构变更
- 参数:
mcp__supabase__list_tables - 查看表列表
- 参数:
project_id,schemas(可选) - 用于:了解数据库结构
- 参数:
项目信息:
- project_id:
giluhqotfjpmofowvogn - 数据库: PostgreSQL via Supabase
使用示例
1. 添加 RLS 策略
-- 使用 execute_sql 工具
ALTER TABLE analysis_reports ENABLE ROW LEVEL SECURITY;
CREATE POLICY "认证用户可以查看报告" ON analysis_reports
FOR SELECT
USING (auth.role() = 'authenticated');
2. 查询数据
SELECT * FROM grade_data WHERE student_id = '12345' LIMIT 10;
3. 创建表(使用 apply_migration)
CREATE TABLE new_table (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT now()
);
最佳实践
- 优先使用 MCP 工具:避免使用 bash psql 命令,直接用 MCP 工具
- RLS 策略:所有新表都应该启用 RLS 并添加适当的策略
- 文档迁移:创建迁移文件在
supabase/migrations/目录作为文档 - 错误处理:执行失败时检查返回的错误信息
- 事务安全:涉及多个表的操作使用事务(BEGIN/COMMIT)
常见操作
启用表的 RLS
ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;
CREATE POLICY "policy_name" ON table_name
FOR SELECT
USING (auth.role() = 'authenticated');
查看表结构
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'your_table';
查看现有策略
SELECT schemaname, tablename, policyname, permissive, roles, cmd, qual
FROM pg_policies
WHERE tablename = 'your_table';
注意事项
- 生产数据库操作需谨慎
- 始终在迁移文件中记录结构变更
- RLS 策略必须考虑用户权限
- 敏感操作前先备份或在测试环境验证