操作场景
RDS Supabase MCP充当了AI编码工具以及智能体与Supabase后端生态(PostgreSQL数据库、SQL执行、Auth认证、RLS、Storage、Realtime、监控统计等)之间的标准化桥梁。通过MCP,AI工具及代理(Agents)可以直接理解、管理和操作整个后端项目,彻底改变了传统的全栈开发流程。
您可以在编程IDE(如CodeArts Agent)、AI工具(如Claude)中添加RDS Supabase MCP(Model Context Protocol)工具集,即可通过自然语言方式直接与华为云RDS Supabase应用交互对话,实现对Supabase应用本身及其托管数据库的自动化操作与运维,从而大幅降低使用门槛,简化操作流程,并显著提升开发效率。
MCP使用优势
- AI Agent通过MCP直接调用Data API,无需额外开发接口层。
- Agent操作受RLS策略约束,确保数据安全隔离。
- 结合pgvector,Agent可实现语义检索驱动的智能决策。
MCP工具清单
以下为RDS已支持的Supabase MCP的核心工具列表。
表1 数据库Schema与元数据 | 工具 | 功能简介 | 注意事项 |
| list_tables | 列出所有可访问的表(按schema分组)。 | - |
| list_table_columns | 列出表的列及元数据(类型/默认值/约束)。 | - |
| list_constraints | 列出所有约束(PK/FK/UNIQUE/CHECK/EXCLUDE)。 | 可按schema/表/类型过滤。 |
| list_foreign_keys | 列出所有外键关系。 | 可按schema/表过滤。 |
| list_indexes | 列出所有索引及定义和大小。 | 可按schema/表过滤。 |
| list_migrations | 列出已应用的数据库迁移记录。 | - |
| list_extensions | 列出已安装的PostgreSQL扩展。 | - |
| list_available_extensions | 列出所有可安装的扩展(含已安装)。 | - |
表2 数据库对象与逻辑 | 工具 | 功能简介 | 注意事项 |
| list_triggers | 列出所有触发器。 | 可按schema/表过滤。 |
| get_trigger_definition | 获取触发器完整定义(含函数源码)。 | - |
| list_database_functions | 列出用户自定义数据库函数。 | 可识别SECURITY DEFINER函数。 |
| get_function_definition | 获取数据库函数完整源码定义。 | 重载函数需指定argument_types。 |
表3 安全与RLS | 工具 | 功能简介 | 注意事项 |
| list_rls_policies | 列出所有RLS策略。 | 可按schema/表过滤。 |
| get_rls_status | 检查表是否启用RLS及策略数量。 | 可按schema/表过滤。 |
| get_advisors | 获取安全/性能建议(基于Splinter规则)。 | 可识别缺失RLS等问题。 |
表4 认证与用户管理 | 工具 | 功能简介 | 注意事项 |
| list_auth_users | 列出auth.users中的用户。 | - |
| get_auth_user | 按ID获取指定用户详情。 | - |
| create_auth_user | 直接在auth.users创建用户。 | - |
| update_auth_user | 更新auth.users用户字段。 | 密码处理不安全,需service_role角色。 |
| delete_auth_user | 按ID删除auth.users用户。 | 需Service Role Key和直连DB。 |
表5 对象存储 | 工具 | 功能简介 | 注意事项 |
| list_storage_buckets | 列出所有存储桶。 | - |
| list_storage_objects | 列出指定存储桶中的对象。 | 可按前缀过滤。 |
| get_storage_config | 获取存储桶配置(大小限制/MIME/公开性)。 | - |
| update_storage_config | 更新存储桶配置。 | - |
表6 SQL执行与迁移 | 工具 | 功能简介 | 注意事项 |
| execute_sql | 执行任意SQL查询。 | 需service_role密钥或直连DB。 |
| apply_migration | 应用SQL迁移脚本并记录到迁移表。 | 在事务中执行,确保原子性。 |
| explain_query | 获取SQL执行计划。 | ANALYZE模式会实际执行写操作。 |
表7 向量索引(pgvector) | 工具 | 功能简介 | 注意事项 |
| list_vector_indexes | 列出pgvector索引(ivfflat/hnsw)。 | pgvector未安装时返回空数组。 |
| get_vector_index_stats | 获取pgvector索引使用统计和大小。 | - |
表8 实时订阅 | 工具 | 功能简介 | 注意事项 |
| list_realtime_publications | 列出PostgreSQL发布(用于Realtime)。 | - |
表9 监控与诊断 | 工具 | 功能简介 | 注意事项 |
| get_database_connections | 获取活跃数据库连接信息(pg_stat_activity)。 | - |
| get_database_stats | 获取数据库活动统计和后台写入器统计。 | - |
| get_index_stats | 获取指定索引的详细使用统计。 | - |
| get_logs | 获取Supabase服务日志。 | 默认最近24小时,优先查分析栈。 |
表10 项目配置与工具 | 工具 | 功能简介 | 注意事项 |
| get_project_url | 获取当前Supabase项目URL。 | - |
| verify_jwt_secret | 检查JWT密钥是否已配置。 | - |
| generate_typescript_types | 从数据库Schema生成TypeScript类型。 | 使用supabase gen types CLI。 |
| rebuild_hooks | 重启pg_net worker。 | 需要安装pg_net扩展插件。 |
对接并使用Supabase MCP
通过Claude对接并使用Supabase MCP
以下步骤介绍公网环境下如何通过Claude对接并使用Supabase MCP。
- 参考查看API Key,获取API Key,包含Anon Key和Service Role Key。
图1 Supabase应用API Key列表
- 开启Supabase应用公网访问,为其绑定一个连通外部网络的弹性公网IP。
- 在Supabase应用详情页,单击托管实例名称,进入实例详情页。
- 在左侧导航栏,选择“连接管理”,参考绑定和解绑弹性公网IP,为托管的数据库实例绑定EIP。
图3 托管数据库实例连接信息
如上图所示,获取实例的公网访问IP和端口号。
- 本地安装Bun工具,请确保您的网络正常,可正常访问互联网资源。
Bun工具是一款快速、现代的一体化JavaScript、TypeScript与JSX工具包,用于部署Supabase MCP Server。
- 下载Supabase MCP Server开源项目源码到本地目录,并通过Bun来安装相关依赖。
执行前请再次检查,确保已安装Git工具。详细安装操作,请参见
Git官网。
git clone https://github.com/HenkDz/selfhosted-supabase-mcp.git
cd selfhosted-supabase-mcp
bun install
- 打开Claude的配置文件(.claude.json),在mcpServers中添加Supabase MCP Server相关配置,模板如下所示。
{
"mcpServers": {
"selfhosted-supabase": {
"command": "bun",
"args": [
"run",
"<path-to-mcp-code-dist>/selfhosted-supabase-mcp/src/index.js",
"--url",
"<your-supabase-url>",
"--anon-key",
"<your-anon-key>",
"--service-key",
"<your-service-role-key>",
"--db-url",
"<your-db-url>"
}
}
} 配置参数填写说明如表11,请结合实际的应用和托管实例相关配置信息,进行正确填写,替换掉<xxx>的整个内容(包含<和>符号)。
表11 Supabase MCP对接配置参数填写规则 | 参数项 | 是否必填 | 取值说明 | 取值示例 | 注意事项 |
| <path-to-mcp-code-dist> | 是 | 填写本地下载的Supabase源码的根目录。 | D:/workspace/rds-supabase/mcp/ | 确保其目录下已下载selfhosted-supabase-mcp git项目,文件夹存在。 |
| <your-supabase-url> | 是 | 填写Supabase应用的公网访问地址。格式为: - 已开启SSL:http(s)://Supabase应用的EIP:Supabase应用的访问端口
- 未开启SSL:http://Supabase应用的EIP:Supabase应用的访问端口
| http://10.0.0.0:8443 | 确保本地能访问该IP地址。 |
| <your-anon-key> | 是 | 填写Supabase应用的Anon Key。 | ********** | 如果Anon Key进行了重置操作,请填写最新生效的API Key的取值。 |
| <your-service-role-key> | 否 | 填写Supabase应用的Service Role Key。 | ********** | 如果Service Role Key进行了重置操作,请填写最新生效的API Key的取值。 |
| <your-db-url> | 否 | 填写Supabase应用托管的PostgreSQL数据库实例的直连地址。 格式为: postgresql://root:<登录密码>@<实例EIP>:<实例访问端口>/<数据库名称> - <登录密码>:填写托管的数据库实例root账号的密码。
- <实例EIP>:填写托管的数据实例的EIP。
- <实例EIP>:填写托管的数据实例的访问端口,一般默认为5432。
- <数据库名称>:填写实例上Database的名称,当前仅支持填写supabase_db。
| postgresql://root:xxx@10.0.0.0:5432/supabase_db | 请注意,如果数据库实例的登录密码包含特殊字符,必须使用URLEncode编码,如'@'编码为'%40',否则功能不可用。 |
- 命令行窗口输入如下命令,查看Supabase MCP是否已正常连接。
claude mcp get supabase
图4 RDS Supabase MCP的连接状态检查
- RDS Supabase MCP工具配置完成后,您可以在Claude的对话框中,通过自然语言去访问、操作及管理Supabase应用及其托管的数据库服务。
- 查询Supabase项目基础信息(MCP对接中未配置数据库实例的直连信息)
交互输入以下信息:
查询Supabase项目基础信息
Agent回复如下:
图5 Agent回复
- 查询PostgreSQL实例当前库表信息(MCP对接中已配置数据库实例的直连信息)
交互输入以下信息:
查询Supabase当前业务库表概览
Agent回复如下:
图6 Agent回复
通过CodeArts Agent对接并使用Supabase MCP
以下步骤介绍公网环境下如何通过CodeArts Agent对接并使用Supabase MCP。
- 参考查看API Key,获取API Key,包含Anon Key和Service Role Key。
图7 Supabase应用API Key列表
- 参考绑定和解绑DNAT网关地址,绑定DNAT网关,并获取绑定的EIP和访问端口。
图8 Supabase应用详情页面
- 在Supabase应用详情页,单击托管实例名称,进入实例详情页。
- 在左侧导航栏,选择“连接管理”,参考绑定和解绑弹性公网IP,为托管的数据库实例绑定EIP。
图9 托管数据库实例连接信息
如上图所示,获取实例的公网访问IP和端口号。
- 本地安装Bun工具,请确保您的网络正常,可正常访问互联网资源。
Bun工具是一款快速、现代的一体化JavaScript、TypeScript与JSX工具包,用于部署Supabase MCP Server。
- 下载Supabase MCP Server开源项目源码到本地目录,并通过Bun来安装相关依赖。
执行前请再次检查,确保已安装Git工具。详细安装操作,请参见
Git官网。
git clone https://github.com/HenkDz/selfhosted-supabase-mcp.git
cd selfhosted-supabase-mcp
bun install
- 打开本地CodeArts Agent IDE,选择“设置 > MCP工具 > 配置MCP”,进入MCP配置文件(mcp_settings.json)编辑页面。
在mcpServers中添加Supabase MCP Server相关配置,模板如下所示。
{
"mcpServers": {
"selfhosted-supabase": {
"command": "bun",
"args": [
"run",
"<path-to-mcp-code-dist>/selfhosted-supabase-mcp/src/index.js",
"--url",
"<your-supabase-url>",
"--anon-key",
"<your-anon-key>",
"--service-key",
"<your-service-role-key>",
"--db-url",
"<your-db-url>"
}
}
} 配置参数填写说明如表12,请结合实际的应用和托管实例相关配置信息,进行正确填写,替换掉<xxx>的整个内容(包含<和>符号)。
表12 Supabase MCP对接配置参数填写规则 | 参数项 | 是否必填 | 取值说明 | 取值示例 | 注意事项 |
| <path-to-mcp-code-dist> | 是 | 填写本地下载的Supabase源码的根目录。 | D:/workspace/rds-supabase/mcp/ | 确保其目录下已下载selfhosted-supabase-mcp git项目,文件夹存在。 |
| <your-supabase-url> | 是 | 填写Supabase应用的公网访问地址。格式为: - 已开启SSL:http(s)://Supabase应用的EIP:Supabase应用的访问端口
- 未开启SSL:http://Supabase应用的EIP:Supabase应用的访问端口
| http://10.0.0.0:8443 | 确保本地能访问该IP地址。 |
| <your-anon-key> | 是 | 填写Supabase应用的Anon Key。 | ********** | 如果Anon Key进行了重置操作,请填写最新生效的API Key的取值。 |
| <your-service-role-key> | 否 | 填写Supabase应用的Service Role Key。 | ********** | 如果Service Role Key进行了重置操作,请填写最新生效的API Key的取值。 |
| <your-db-url> | 否 | 填写Supabase应用托管的PostgreSQL数据库实例的直连地址。 格式为: postgresql://root:<登录密码>@<实例EIP>:<实例访问端口>/<数据库名称> - <登录密码>:填写托管的数据库实例root账号的密码。
- <实例EIP>:填写托管的数据实例的EIP。
- <实例EIP>:填写托管的数据实例的访问端口,一般默认为5432。
- <数据库名称>:填写实例上Database的名称,当前仅支持填写supabase_db。
| postgresql://root:xxx@10.83.34.105:5432/supabase_db | 请注意,如果数据库实例的登录密码包含特殊字符,必须使用URLEncode编码,如'@'编码为'%40',否则功能不可用。 如果需要查询 |
- 配置完成后,返回MCP工具页面。检查Supabase MCP连接状态和工具集信息。
图10 CodeArts Agent 已安装MCP Server列表
- 您可以在CodeArts Agent的对话框中,通过自然语言去访问、操作及管理Supabase应用及其托管的数据库服务。
- 查询Supabase项目基础信息(MCP对接中已配置数据库实例的直连信息)
交互输入以下信息:
查询Supabase项目基础信息
Agent回复如下:
图11 Agent回复
- 查询PostgreSQL实例当前库表信息(MCP对接中已配置数据库实例的直连信息)
交互输入以下信息:
查询Supabase当前业务库表概览
Agent回复如下:
图12 Agent回复