AI Agent如何通过MCP连接到华为云RDS Supabase应用平台

认证、存储、实时推送、数据库操作,AI Agent想管后端,传统方式要开发接口、写SQL、用数据库客户端;今天一句话就能直驱数据库,前提是先接上MCP。

小张是AI创业公司的全栈工程师。上周老板甩来一句"让AI Agent直接管数据库,别再让人写接口了"。可Agent要查表、改数据、管用户,每新增一个操作,小张就得手写一个API、配一次权限、测一轮联调。接口越写越多,Agent能做的却还是那么点,小张盯着一堆CRUD接口发呆:这哪是AI驱动开发,分明是给人当接口搬运工。

直到小张给Agent接上华为云RDS Supabase的MCP。一句"查下当前业务库表",Agent直接列出全部表结构;再说"建个用户",auth.users里就多了记录。开发这件事,回到了写提示词。

装上MCP工具集,Claude、CodeArts Agent等AI工具即可用自然语言直管你的整个后端项目。

Part 01 --- 为什么AI Agent需要MCP

RDS Supabase MCP接入了Supabase后端全套能力(数据库、认证、存储、实时、安全、监控),Agent均可调用。

安全上,两把Key权限不同:默认用Anon Key时,操作受RLS策略约束(前提:业务表已启用RLS,否则无行级隔离);换用Service Role Key则绕过RLS、拥有管理员级权限(需谨慎)。

Part 02 --- MCP能做什么:工具能力清单

💡 按场景对号入座:库表结构→查"数据与逻辑层"表;权限、语义搜索、存储或实时→查"安全·认证·存储·向量·实时"表;运行状态或项目配置→查"监控诊断·项目配置"表。

数据与逻辑层(Schema · 对象 · SQL · 迁移)

|-----------|---------------------------|-------------------------------------|---------------------------------------|
| 类别 | 工具 | 功能简介 | 注意事项 |
| Schema元数据 | list_tables | 列出所有可访问的表(按schema分组)。 | |
| Schema元数据 | list_table_columns | 列出表的列及元数据(类型/默认值/约束)。 | |
| Schema元数据 | list_constraints | 列出所有约束(PK/FK/UNIQUE/CHECK/EXCLUDE)。 | 可按schema/表/类型过滤。 |
| Schema元数据 | list_foreign_keys | 列出所有外键关系。 | 可按schema/表过滤。 |
| Schema元数据 | list_indexes | 列出所有索引及定义和大小。 | 可按schema/表过滤。 |
| Schema元数据 | list_migrations | 列出已应用的数据库迁移记录。 | |
| Schema元数据 | list_extensions | 列出已安装的PostgreSQL扩展。 | |
| Schema元数据 | list_available_extensions | 列出所有可安装的扩展(含已安装)。 | |
| 对象逻辑 | list_triggers | 列出所有触发器。 | 可按schema/表过滤。 |
| 对象逻辑 | get_trigger_definition | 获取触发器完整定义(含函数源码)。 | |
| 对象逻辑 | list_database_functions | 列出用户自定义数据库函数。 | 可识别SECURITY DEFINER函数。 |
| 对象逻辑 | get_function_definition | 获取数据库函数完整源码定义。 | 重载函数需指定argument_types。 |
| SQL迁移 | execute_sql | 执行任意SQL查询。 | 需配置数据库直连地址(db-url),经直连执行。 |
| SQL迁移 | apply_migration | 应用SQL迁移脚本并记录到迁移表。 | 需配置数据库直连地址(db-url);在事务中执行,确保原子性。 |
| SQL迁移 | explain_query | 获取SQL执行计划。 | 需配置数据库直连地址(db-url);ANALYZE模式会实际执行写操作。 |

安全 · 认证 · 存储 · 向量 · 实时

|--------|----------------------------|-----------------------------|-----------------------------------|
| 类别 | 工具 | 功能简介 | 注意事项 |
| 安全RLS | list_rls_policies | 列出所有RLS策略。 | 可按schema/表过滤。 |
| 安全RLS | get_rls_status | 检查表是否启用RLS及策略数量。 | 可按schema/表过滤。 |
| 安全RLS | get_advisors | 获取安全/性能建议(基于Splinter规则)。 | 可识别缺失RLS等问题。 |
| 认证用户 | list_auth_users | 列出auth.users中的用户。 | |
| 认证用户 | get_auth_user | 按ID获取指定用户详情。 | |
| 认证用户 | create_auth_user | 直接在auth.users创建用户。 | 需Service Role Key;需明文密码,不安全,谨慎使用。 |
| 认证用户 | update_auth_user | 更新auth.users用户字段。 | 密码处理不安全,需Service Role Key。 |
| 认证用户 | delete_auth_user | 按ID删除auth.users用户。 | 需Service Role Key和直连DB。 |
| 对象存储 | list_storage_buckets | 列出所有存储桶。 | |
| 对象存储 | list_storage_objects | 列出指定存储桶中的对象。 | 可按前缀过滤。 |
| 对象存储 | get_storage_config | 获取存储桶配置(大小限制/MIME/公开性)。 | |
| 对象存储 | update_storage_config | 更新存储桶配置。 | |
| 向量索引 | list_vector_indexes | 列出pgvector索引(ivfflat/hnsw)。 | pgvector未安装时返回空数组。 |
| 向量索引 | get_vector_index_stats | 获取pgvector索引使用统计和大小。 | |
| 实时订阅 | list_realtime_publications | 列出PostgreSQL发布(用于Realtime)。 | |

监控诊断 · 项目配置

|--------|---------------------------|--------------------------------|-------------------------------------------|
| 类别 | 工具 | 功能简介 | 注意事项 |
| 监控诊断 | get_database_connections | 获取活跃数据库连接信息(pg_stat_activity)。 | 需配置数据库直连地址(db-url)。 |
| 监控诊断 | get_database_stats | 获取数据库活动统计和后台写入器统计。 | 需配置数据库直连地址(db-url)。 |
| 监控诊断 | get_index_stats | 获取指定索引的详细使用统计。 | 需配置数据库直连地址(db-url)。 |
| 监控诊断 | get_logs | 获取Supabase服务日志。 | 默认最近24小时,优先查分析栈。 |
| 项目配置 | get_project_url | 获取当前Supabase项目URL。 | |
| 项目配置 | verify_jwt_secret | 检查JWT密钥是否已配置。 | |
| 项目配置 | generate_typescript_types | 从数据库Schema生成TypeScript类型。 | 使用supabase gen types CLI,须预装Supabase CLI。 |
| 项目配置 | rebuild_hooks | 重启pg_net worker。 | 需要安装pg_net扩展插件。 |

38个工具、10大类能力,覆盖后端主要操作,全程自然语言。

Part 03 --- 前期准备:打通Supabase公网访问

MCP要连上Supabase,得先把"路"修通:API Key、应用EIP、实例EIP,三件事缺一不可。

前提条件

已创建Supabase应用,且应用及其托管实例运行状态正常

已安装AI编码工具或Agent智能体(如华为云CodeArts Agent),且大模型的Token额度充足

网络可正常安装Bun与Git

第1步 获取API Key

进入Supabase应用详情页,点击"API Key"视图,获取Anon Key和Service Role Key,这两个Key用于Agent鉴权。

第2步 通过DNAT网关开启Supabase应用公网访问

绑定DNAT网关,进入应用详情页获取绑定的弹性公网EIP和访问端口。

第3步 为托管数据库实例绑定公网EIP

在应用详情页单击托管实例名称进入实例详情页,左侧"连接管理"中为数据库实例绑定公网EIP,并记下公网IP与端口(配置MCP时要用)。

⚠️ 注意区分两个公网地址:第2步的"应用EIP"填入<your-supabase-url>,本步的"实例EIP"填入<your-db-url>,别填反。

⚠️ 安全提示:绑定后实例暴露在公网,请同步配置安全组,仅放行运行MCP的机器的IP与端口,勿开放0.0.0.0/0。

Part 04 --- 对接实战:在Claude中接入Supabase MCP

以公网环境下在Claude中接入Supabase MCP为例,三步配置 + 一步演示,你的Claude就能用自然语言操作Supabase了。

配置前先自检连通性:在运行Claude的机器上,curl能访问到"应用EIP:应用访问端口"(即<your-supabase-url>);若配了<your-db-url>,还需telnet通"实例EIP:实例端口"。连不通先查安全组和网络ACL。

第1步 安装Bun工具

Bun是一体化JavaScript、TypeScript与JSX工具包,用来部署Supabase MCP Server。

复制代码
# Linux & MacOS
curl -fsSL https://bun.sh/install | bash
# Windows
powershell -c "irm bun.sh/install.ps1 | iex"

💡 安装后若命令行找不到bun命令,多半是PATH未刷新:Linux/MacOS新开一个终端窗口,或执行 source ~/.bashrc;Windows重新打开终端即可。

第2步 下载Supabase MCP Server源码

下载Supabase MCP Server开源项目源码到本地,再用Bun安装依赖。

复制代码
git clone https://github.com/HenkDz/selfhosted-supabase-mcp.git
cd selfhosted-supabase-mcp
git checkout <stable-tag> # 生产环境务必锁定稳定版本,勿直接拉取最新代码
bun install

该MCP Server来自第三方开源项目(selfhosted-supabase-mcp),非华为云官方维护。

第3步 配置并验证

在Claude中接入MCP,需编辑各自的MCP配置文件:Claude Code(CLI版)编辑 ~/.claude.json;Claude Desktop(桌面版,macOS/Windows)编辑对应平台的 claude_desktop_config.json。在mcpServers中添加Supabase MCP Server相关配置,模板如下。

复制代码
{
"mcpServers": {
"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>"
]
}
}
}

⚠️ 配置文件含API Key、数据库密码等敏感信息,为明文存储,请妥善保管。避免提交到公共代码仓库(建议加入.gitignore),并按需限制文件访问权限。生产环境建议改用环境变量或密管服务(如华为云DEW)注入,避免硬编码。

参数填写说明如下。把尖括号占位符整体替换为真实值,如 <your-anon-key> 整体换成你的真实Key。--service-key 与 --db-url 为选填,不用请连同参数名整行从 args 删除(勿留空值,否则MCP Server启动可能报错):

|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数 | 填写说明 |
| <path-to-mcp-code-dist> | 必填。指上面git clone时selfhosted-supabase-mcp的父目录,如 D:/workspace/rds-supabase/mcp/。 |
| <your-supabase-url> | 必填。填写Supabase应用的公网访问地址。按应用详情页网关地址信息所示的协议填写:已开启SSL为 https://应用EIP:应用访问端口(推荐);未开启SSL为 http://应用EIP:应用访问端口。示例:https://198.51.100.10:8443。确保本地能访问该地址。 |
| <your-anon-key> | 必填。填写Supabase应用的Anon Key。示例:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.***(已脱敏签名)。如Anon Key已重置,请填写最新生效的值。 |
| <your-service-role-key> | 选填。填写Supabase应用的Service Role Key。示例:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.***(已脱敏签名)。如Service Role Key已重置,请填写最新生效的值。该Key会绕过RLS、拥有管理员级权限,请妥善保管;不填则建/删用户等管理类工具不可用。 |
| <your-db-url> | 选填。填写数据库实例直连地址,格式:postgresql://root:<密码>@<实例EIP>:<实例端口>/supabase_db。示例:postgresql://root:xxx@203.0.113.10:5432/supabase_db。密码含特殊字符须URLEncode(如'@'→'%40'),否则功能不可用。公网环境建议为实例开启SSL并在连接串追加 ?sslmode=require。其中 root 为托管数据库实例的默认管理员账号;不填此项则 execute_sql、apply_migration 等直连数据库的工具不可用,Agent只能通过Data API访问,部分能力受限。 |

配置完成后,在命令行输入如下命令,验证Supabase MCP是否正常连接。

复制代码
claude mcp get supabase

第4步 效果演示

接入就绪后,你可以在Claude对话框中用自然语言操作Supabase应用及其托管的数据库。

🔹 查询Supabase项目基础信息(未配置数据库直连)

🗣️ 开发者:查询Supabase项目基础信息

🤖 AI Agent:调用Supabase MCP工具,扫描项目基础信息

🔹 查询PostgreSQL实例当前库表信息(已配置数据库直连)

🗣️ 开发者:查询Supabase当前业务库表概览

🤖 AI Agent:调用工具,列出当前业务库表

配置就绪,即可查到项目信息与库表结构。

Part 05 --- 对接实战:在CodeArts Agent中接入

如果你的主力IDE是华为云CodeArts Agent,公网准备与Part 03一致,直接看配置。

第1步 配置mcp_settings.json

打开本地CodeArts Agent IDE,选择"设置 > MCP工具 > 配置MCP",进入MCP配置文件(mcp_settings.json)编辑页面,在mcpServers中添加Supabase MCP Server相关配置。

配置模板与Claude一致,详见Part 04第3步。

第2步 查看工具集

配置完成后,返回MCP工具页面,查看已安装的Supabase MCP Server及其工具集信息。

第3步 效果演示

效果与Claude一致,两句自然语言查到项目信息和库表结构。

Part 06 --- 从对话到落地

故事回到小张。自从给Agent接上MCP,老板新提的"加个用户、看看RLS、查下连接数",小张不再碰接口,一句话丢给Agent就办了。从前当接口搬运工,如今写提示词就是写后端。

对话演示:一句话完成全链路操作

以下是一次真实对话还原,开发者提问、Agent调用工具操作直达数据库,且是跨工具、跨域的组合操作:

⚠️ 本演示为完整能力展示:create_auth_user 需 Service Role Key、get_database_connections 需数据库直连地址(均见Part 04第3步参数说明),最小配置(仅Anon Key)下无法复现。其中 create_auth_user 涉及明文密码处理,工具表已标注"不安全,谨慎使用",生产环境请评估更安全的替代方案。

🗣️ 开发者:帮我创建一个测试用户,然后检查业务表users的RLS策略是否生效,顺便看看最近的数据库连接情况

🤖 AI Agent:依次调用 create_auth_user 创建用户、get_rls_status 检查RLS策略、get_database_connections 查看连接状态

✅ 返回结果:用户已创建(id: a3f8...),业务表users已启用RLS并含2条策略,当前活跃连接12个。