Supabase MCP 用 mcp.supabase.com/mcp,查询参数写进 url
CLI:codex mcp add supabase --url https://mcp.supabase.com/mcp,再 mcp login。官方查询 read_only=true、project_ref=abc123 写进 url。不要 PAT 当主路径,也不要抄 experimental_use_rmcp_client。
Supabase 托管的是远程 Streamable HTTP + OAuth(动态客户端登记)。官方 Codex 节:
codex mcp add supabase --url "https://mcp.supabase.com/mcp"
codex mcp login supabase
[mcp_servers.supabase]
url = "https://mcp.supabase.com/mcp"
enabled = true
这和 Datadog 不同:Datadog 在 Codex 里要用 http_headers 选工具集;Supabase 官方就是把查询参数写进 url。常用三个:
?read_only=true:SQL 以只读 Postgres 用户跑?project_ref=abc123:限定到一个项目(官方表示例就是abc123)。加上之后 account 类工具会关掉?features=database,docs:只开指定工具组。Storage 组默认关,要用再写进features
可以组合:
[mcp_servers.supabase]
url = "https://mcp.supabase.com/mcp?project_ref=abc123&read_only=true"
enabled = true
本机 Supabase CLI 是另一台:http://localhost:54321/mcp,工具子集,没有 OAuth。不要把托管 URL 抄到本地,也不要把本地地址拿去 mcp login。
日常不要 PAT。CI 不能开浏览器时才用个人访问令牌,走 bearer_token_env_var,变量必须在启动 Codex 的那个进程里。不要把 Authorization: Bearer 写进 http_headers:
[mcp_servers.supabase]
url = "https://mcp.supabase.com/mcp?project_ref=abc123&read_only=true"
bearer_token_env_var = "SUPABASE_ACCESS_TOKEN"
enabled = true
键里是变量名。不要和已经 mcp login 的 OAuth 写在同一张表。
不要做这些:
- 不要抄旧文的
experimental_use_rmcp_client,也不要抄[mcp] remote_mcp_client_enabled = true。那是 Studio / 旧客户端旗标,不是 Codex 配置面;Supabase 自己已经从流程里删掉。 - 不要抄 Claude 的
--transport http,也不要抄mcpServersJSON。 - 不要套
mcp-remote。 - 不要给它
required = true挂全局。生产库带着写工具不是每条会话都要的依赖。 - 不要一上来
--yolo。SQL 结果和工单正文都可能带提示注入,保持工具批准。
网页 Cloud 不读 ~/.codex/config.toml。改完新开会话。用 codex mcp get supabase 看传输是 streamable_http。会话里 /mcp 只是核对工具,不是唯一登录入口。