Supabase MCP
官方官方 Supabase MCP 伺服器,用於從 AI 代理管理 Supabase 專案、資料庫、驗證、儲存、邊緣函式及 SQL 工作流程。
你可以用 Supabase MCP 做什麼?
- 管理資料庫表格 — 要求AI使用
list_tables和create_table等工具列出、建立、更新或刪除 Supabase 專案中的表格。 - 取得專案設定 — 使用
get_project_url及相關設定工具擷取專案設定、環境變數和 API 憑證。 - 查詢與檢查資料 — 讓AI透過 MCP 伺服器執行唯讀 SQL 查詢或直接探索您的資料庫結構。
- 與 AI SDK 整合 — 使用
createToolSchemas()取得 Vercel AI SDK 的 MCP 客戶端的型別化輸入/輸出結構。
文件
Supabase MCP 伺服器
將您的 Supabase 專案連接到 Cursor、Claude、Windsurf 及其他 AI 助手。
模型上下文協定 (MCP) 標準化了大型語言模型 (LLM) 與 Supabase 等外部服務的通訊方式。它將 AI 助手直接與您的 Supabase 專案連接,使其能夠執行管理資料表、擷取設定和查詢資料等任務。請參閱完整工具清單。
設定
1. 遵循我們的安全最佳實踐
在設定 MCP 伺服器之前,我們建議您閱讀我們的安全最佳實踐,以了解將 LLM 連接到 Supabase 專案的風險以及如何降低這些風險。
2. 設定您的 MCP 客戶端
若要為您的客戶端設定 Supabase MCP 伺服器,請造訪我們的設定文件。您也可以前往 Supabase 儀表板中的 MCP 連線分頁,為您的專案產生自訂的 MCP URL。
您的 MCP 客戶端會在設定過程中自動提示您登入 Supabase。請務必選擇包含您要使用之專案的組織。
大多數 MCP 客戶端需要以下資訊:
{
"mcpServers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp"
}
}
}
如果您在我們的文件中找不到您的 MCP 客戶端,請查閱您客戶端的 MCP 文件,並將上述 MCP 資訊複製到其預期的格式(json、yaml 等)中。
CLI
如果您使用 Supabase CLI 在本機執行 Supabase,可以透過 http://localhost:54321/mcp 存取 MCP 伺服器。目前,CLI 環境中的 MCP 伺服器提供有限的工具子集,且不支援 OAuth 2.1。
自託管
對於自託管 Supabase,請查看啟用 MCP 伺服器頁面。目前,自託管環境中的 MCP 伺服器提供有限的工具子集,且不支援 OAuth 2.1。
設定選項與工具
請參閱 Supabase MCP 伺服器文件,以取得可用工具和設定選項的完整清單。
文件還提供了一個互動式 URL 建構器,可為您填入設定選項。
安全風險
[!TIP] 在使用 MCP 伺服器之前,請檢閱 Supabase 文件中的安全風險和建議的緩解措施。
與 AI SDK 的 MCP 客戶端搭配使用
@supabase/mcp-server-supabase 套件匯出了 createToolSchemas(),用於為 Vercel AI SDK 的 MCP 客戶端填入輸入和輸出結構描述。這使得 Supabase MCP 工具可以被視為靜態工具,並具有客戶端驗證以及針對其輸入和輸出的推斷 TypeScript 類型。
import { createToolSchemas } from '@supabase/mcp-server-supabase';
import { createMCPClient } from '@ai-sdk/mcp';
import { streamText } from 'ai';
const mcpClient = await createMCPClient({
transport: {
type: 'http',
url: 'https://mcp.supabase.com/mcp',
},
});
const tools = await mcpClient.tools({
schemas: createToolSchemas(),
});
const result = streamText({ model, tools, prompt: '...' });
for (const step of await result.steps) {
for (const toolResult of step.staticToolResults) {
if (toolResult.toolName === 'get_project_url') {
toolResult.input; // { project_id: string }
toolResult.output; // { url: string }
}
}
}
createToolSchemas() 接受與 MCP 伺服器 URL 參數類似的篩選選項:
features:限制為特定的功能群組(例如['database', 'docs'])。預設為所有預設功能群組。projectScoped:當設為true時,會從工具輸入結構描述中省略project_id,並排除帳戶層級工具 — 在連接到設定為project_ref的伺服器時使用。預設為false。readOnly:當設為true時,會排除變異工具 — 在連接到設定為read_only=true的伺服器時使用。預設為false。
const mcpClient = await createMCPClient({
transport: {
type: 'http',
url: 'https://mcp.supabase.com/mcp?project_ref=<project-ref>&read_only=true&features=database,docs',
},
});
const tools = await mcpClient.tools({
schemas: createToolSchemas({
features: ['database', 'docs'],
projectScoped: true,
readOnly: true,
}),
});
[!NOTE] 此伺服器不會在 MCP 工具結果中傳送
structuredContent。AI SDK 會退而從content文字中解析 JSON。
如需更多資訊,請參閱 AI SDK 文件中的結構描述定義和類型化工具輸出。
其他 MCP 伺服器
@supabase/mcp-server-postgrest
PostgREST MCP 伺服器允許您透過 REST API 將自己的使用者連接到您的應用程式。請參閱其專案 README 以了解更多詳細資訊。
資源
針對開發者
請參閱 CONTRIBUTING 以了解如何為此專案做出貢獻的詳細資訊。
授權
本專案採用 Apache 2.0 授權。詳情請參閱 LICENSE 檔案。