iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0

封面

什麼是 MCP?

MCP(Model Context Protocol)是一個開放標準,讓 AI 助手能夠安全地連接和操作外部系統。

簡單來說:

MCP 就像是召喚出強大的暗影士兵,幫助執行各種任務,從戰鬥到探索,甚至日常事務。
賦予 AI 助手「暗影領域」的能力,讓它們從單純的「聊天對象」變成能實際「執行任務的暗影士兵」。

MCP 的核心概念

  • 工具(Tools):AI 助手可以使用的功能,比如查詢資料庫、建立資料表等
  • 資源(Resources):AI 助手可以存取的資料,比如資料庫內容、專案設定等
  • 提示(Prompts):預設的指令模板,讓 AI 助手更好地理解你的需求

為什麼需要使用 Supabase MCP?

在傳統的開發流程中,我們需要:

  1. 手動切換介面:在程式碼編輯器、資料庫管理工具、Supabase 控制台之間來回切換
  2. 記憶複雜指令:需要記住各種 SQL 語法和 Supabase CLI 指令
  3. 重複性操作:經常需要執行相似的資料庫操作

Supabase MCP 的優勢

  • 統一操作介面:在一個 AI 對話中完成所有 Supabase 操作
  • 自然語言互動:用日常語言描述需求,AI 自動轉換為對應操作
  • 降低學習門檻:不需要熟記複雜的 SQL 語法或 CLI 指令

在 macOS Cline 中安裝 Supabase MCP

接下來我們將示範如何在 macOS 的 Cline 中安裝和設定 Supabase MCP,整個過程只需要三個簡單步驟。

步驟一:建立個人存取權杖(PAT)

首先,我們需要在 Supabase 中建立一個個人存取權杖,這個權杖將用於驗證 MCP 伺服器與你的 Supabase 帳戶。

  1. 前往你的 Supabase 設定頁面
  2. 點擊「Create new token」建立新的權杖
  3. 為權杖命名,例如「Cline MCP Server」,這樣你就知道這個權杖的用途
  4. 點擊「Create token」並立即複製權杖(這個權杖只會顯示一次)

提醒:請妥善保存這個權杖,因為它只會在建立時顯示一次。如果遺失了,你需要重新建立一個新的權杖。

步驟二:在 Cline 中設定 MCP 連接

接下來,我們需要在 Cline 中設定 Supabase MCP 伺服器。這個步驟完全在 Cline 的圖形介面中完成,不需要使用終端機。

  1. 開啟 Cline 設定

    • 打開 Cline 延伸模組
  2. 新增 MCP 伺服器

    • 找到「MCP Servers」Icon 設定區域
    • 點擊「Add Server」或「編輯設定檔」
  3. 設定 Supabase MCP
    直接在 Cline 中設定以下 JSON 配置:

    {
      "mcpServers": {
        "supabase": {
          "command": "npx",
          "args": [
            "-y",
            "@supabase/mcp-server-supabase@latest",
            "--read-only",
            "--project-ref=<project-ref>"
          ],
          "env": {
            "SUPABASE_ACCESS_TOKEN": "<personal-access-token>"
          }
        }
      }
    }
    

    請將 <project-ref> 替換為你的專案參考 ID,並將 <personal-access-token> 替換為你的個人存取權杖。

  4. 儲存設定

    • 確認所有資訊都正確輸入
    • 點擊「Save」或「儲存」

預設安全設定:Supabase MCP 預設使用唯讀、專案範圍模式 --read-only ,這是為了防止 AI 助手對你的資料庫進行意外的變更。

步驟三:遵循安全最佳實務

設定完成後,遵循以下安全建議:

  1. 測試連接

    你好!請幫我列出目前可以存取的 Supabase 專案。
    
  2. 驗證權限
    確認 AI 助手只能執行你預期的操作,特別是確認唯讀模式是否正常運作。

  3. 定期檢查
    定期檢查 MCP 的操作記錄,確保沒有異常活動。

如果設定正確,AI 助手應該能夠回應並顯示你的 Supabase 專案清單。

本地 Supabase 的 MCP 支援

如果你使用的是本地 Supabase 實例,官方建議使用 Postgres MCP server 而不是 Supabase MCP server。

為什麼使用 Postgres MCP?

Supabase MCP server 是專門設計來連接雲端平台的,而本地 Supabase 實例更適合直接使用 Postgres MCP server,因為:

  • 直接連接:直接連接到本地的 PostgreSQL 資料庫
  • 更好的效能:減少不必要的網路層級
  • 安全預設:所有查詢都以唯讀交易執行

本地設定方式

在 Cline 中設定 Postgres MCP server:

  1. 伺服器名稱postgres
  2. 套件名稱@modelcontextprotocol/server-postgres
  3. 環境變數
    POSTGRES_CONNECTION_STRING=postgresql://postgres:your_password@localhost:54322/postgres
    
    注意:請將 your_password 替換為你本地 Supabase 的 PostgreSQL 密碼,預設通常是你在 .env 檔案中設定的 POSTGRES_PASSWORD

或者使用Cline 中設定以下 JSON 配置:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "<connection-string>"]
    }
  }
}

請將 <connection-string> 替換為你的連接字串。

常用功能指令

根據 官方文件,Supabase MCP 提供了豐富的工具集,以下是一些常用的功能:

專案管理

  • 列出專案:「顯示我所有的 Supabase 專案」
  • 取得專案詳情:「顯示專案 [project-id] 的詳細資訊」
  • 建立專案:「幫我建立一個新的 Supabase 專案,名稱為 [project-name]」

資料庫操作

  • 執行查詢:「在 [table-name] 資料表中查詢所有記錄」
  • 取得資料表結構:「顯示 [table-name] 資料表的結構」
  • 查看資料庫統計:「顯示資料庫的使用統計資訊」

認證管理

  • 列出使用者:「顯示所有註冊的使用者」
  • 查看認證設定:「顯示目前的認證設定」
  • 管理使用者:「顯示使用者 [user-id] 的詳細資訊」

儲存管理

  • 列出儲存桶:「顯示所有的儲存桶」
  • 查看檔案:「列出 [bucket-name] 儲存桶中的檔案」
  • 取得儲存統計:「顯示儲存空間的使用情況」

邊緣函數

  • 列出函數:「顯示所有的邊緣函數」
  • 查看函數詳情:「顯示函數 [function-name] 的詳細資訊」
  • 檢查函數日誌:「顯示函數 [function-name] 的執行日誌」

安全建議

根據 官方安全建議,使用 Supabase MCP 時請遵循以下:

1. 權杖管理

  • 使用最小權限:只給予 MCP 必要的權限
  • 定期輪換:定期更新個人存取權杖

2. 操作監控

  • 啟用日誌記錄:監控 AI 助手執行的所有操作
  • 定期審查:定期檢查操作記錄

3. 資料保護

  • 敏感資料處理:避免讓 AI 處理包含個人隱私的資料
  • RLS 設定:確保 Row Level Security 政策正確設定

小結

Supabase MCP 能讓 AI 助手直接與你的 Supabase 專案互動。無論是查詢資料、管理專案,還是監控系統狀態,AI 助手都能透過自然語言幫你快速完成。

... to be continued

有任何想討論歡迎留言,或需要指正的地方請鞭大力一點,歡迎訂閱、按讚加分享,分享給想要提升開發效率的朋友~


上一篇
第七關 - Supabase 自部署:打造專屬的後端服務
下一篇
第九關 - 有效操控暗影士兵:Supabase AI 提示詞
系列文
我獨自開發 - Supabase 打造全端應用9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言