OpenAI
此頁面由機器翻譯。查看原文英文文章。

在 ChatGPT 中設定 Snowflake 應用程式範本

了解 ChatGPT 工作區管理員及 ChatGPT Plus 或 Pro 用戶如何將 ChatGPT 連接至由 Snowflake 管理的 MCP 伺服器。

更新日期:2 hours ago

如果你是 ChatGPT 工作區管理員或 ChatGPT Plus 或 Pro 用戶,並希望透過由 Snowflake 管理的 MCP 伺服器將 ChatGPT 連接至 Snowflake,請使用本指南。

大部分設定都在 Snowflake 中完成。Snowflake 準備就緒後,在 ChatGPT 中完成 Snowflake 範本的連接設定,再啟用使用該範本的 Snowflake 外掛程式。

  • 內置 OAuth:如果你的 Snowflake 帳戶和 ChatGPT 均支援此選項,請使用由 Snowflake 管理員啟用的 ChatGPT 合作夥伴應用程式。登入 Snowflake;如果機構已設定 SSO,請使用 SSO 登入。你無需在 ChatGPT 中輸入用戶端 ID 或用戶端密鑰。請按照下方「內置 OAuth」一節的步驟操作。

  • 自訂 OAuth 用戶端:如果機構要求使用自己的 OAuth 用戶端,或無法使用內置 OAuth,請選擇此方式。請按照下方「自訂 OAuth 用戶端」一節的步驟操作。

兩種 OAuth 方式都需要完成下述共通的 MCP 伺服器設定,並設定底層物件權限及網絡存取。設定 OAuth 前,請先完成共通設定,直至「在 ChatGPT 中輸入 Snowflake 伺服器詳細資料」一節為止。

設定內容概覽

你將建立一個由 Snowflake 管理的 MCP 伺服器,作為 ChatGPT 的連接器端點。MCP 伺服器會定義:

  • ChatGPT 可以使用哪些動作。

  • 這些工具可以存取哪些 Snowflake 資料或物件。

  • 每位用戶以哪個 Snowflake 角色授權。

  • 用來識別端點的 Snowflake 資料庫、結構定義和 MCP 伺服器名稱。

接着,你會使用受管理 MCP 伺服器的完整 URL,在 ChatGPT 中設定 Snowflake - 官方範本。範本設定畫面可能會將 URL 分成四個獨立欄位顯示:

  • Snowflake 主機前綴。

  • 資料庫。

  • 結構定義。

  • MCP 伺服器名稱。

ChatGPT 只能探索及使用 MCP 伺服器提供的工具,而且這些工具必須獲用戶授權時使用的 Snowflake 角色允許。

開始之前

你需要:

  • ChatGPT 工作區管理員或擁有者權限,或 ChatGPT Plus 或 Pro 使用權限。

  • 可建立 MCP 伺服器物件及授予權限的 Snowflake 存取權限。

  • 用來存放 MCP 伺服器的 Snowflake 資料庫和結構定義。

  • 決定允許 ChatGPT 使用哪些功能,例如 Cortex Search、Cortex Analyst、唯讀 SQL,或特定程序或函數。

  • 一個遵循最小權限原則的 Snowflake 角色,供用戶授權應用程式時使用。

  • Snowflake 帳戶的主機前綴,包括任何地區或雲端後綴。

如果你的 Snowflake 帳戶透過網絡政策或 IP 允許清單限制存取,請要求 Snowflake 管理員允許來自目前 ChatGPT 連接器出口 IP 範圍的傳入連線。這份清單會變動,應保持更新。

需要準備的值

  • Snowflake 主機前綴:Snowflake 帳戶 URL 中 .snowflakecomputing.com 之前的所有內容。

  • 資料庫:包含 MCP 伺服器的資料庫。

  • 結構定義:包含 MCP 伺服器的結構定義。

  • MCP 伺服器名稱:Snowflake MCP 伺服器的物件名稱。

  • 受管理 MCP 伺服器的完整 URL(如 ChatGPT 設定畫面要求輸入 URL)。

  • Snowflake 角色:用戶授權應用程式時應使用的角色。

  • 工具清單:你希望 ChatGPT 使用的 Snowflake 物件和動作。

決定 ChatGPT 可以執行哪些操作

只選取你希望開放的功能。常見選項包括:

  • 使用 Cortex Search 搜尋,從已建立索引的 Snowflake 資料或內容中尋找答案。

  • 透過已核准的語義檢視,使用 Cortex Analyst 進行問答。

  • 使用唯讀 SQL,提供受控的查詢存取。

  • 使用 Snowflake 智能代理、預存程序或 UDF 執行特定工作流程。

如果啟用 SQL,請維持唯讀模式,除非機構已審核並核准寫入權限。

開啟 Snowflake 工作表

  1. 登入 Snowflake 應用程式。

  2. 切換至可建立 MCP 伺服器及授予存取權限的角色。

  3. 前往工作區。

    Snowflake navigation menu showing Workspaces selected during MCP server setup.
  4. 建立一個包含 SQL 檔案的工作區。

    Snowflake workspace with a SQL file open for MCP server setup.
  5. 將工作區的執行環境設為要建立 MCP 伺服器的資料庫和結構定義。

    Snowflake worksheet context picker showing the role, warehouse, database, and schema.

建立 Snowflake MCP 伺服器

以可建立 MCP 伺服器及授予存取權限的角色登入 Snowflake。在要建立 MCP 伺服器的資料庫和結構定義中開啟工作表。

執行類似以下範例的陳述式。將當中的名稱替換為你自己的 Snowflake 資料庫、結構定義、服務、檢視、倉庫及伺服器名稱。

CREATE MCP SERVER CHATGPT_SNOWFLAKE_MCP
FROM SPECIFICATION $$
tools:
- name: "support-search"
type: "CORTEX_SEARCH_SERVICE_QUERY"
identifier: "CHATGPT_APPS.TOOLS.SUPPORT_SEARCH_SERVICE"
title: "Support Search"
description: "Search support content for relevant customer issues."
- name: "revenue-analyst"
type: "CORTEX_ANALYST_MESSAGE"
identifier: "CHATGPT_APPS.TOOLS.REVENUE_SEMANTIC_VIEW"
title: "Revenue Analyst"
description: "Answer revenue questions using the approved semantic view."
- name: "sql-readonly"
type: "SYSTEM_EXECUTE_SQL"
title: "Read-only SQL"
description: "Run read-only SQL queries against approved Snowflake data."
config:
read_only: true
query_timeout: 600
warehouse: "CHATGPT_WH"
$$;

Snowflake result confirming that the MCP server was successfully created.

此陳述式中的工具名稱和 Snowflake 物件僅為範例:

  • support-search 提供指定的 Cortex Search 服務。

  • revenue-analyst 提供指定的語義檢視。按需要為其他檢視新增工具。

  • sql-readonly 使用指定的倉庫提供唯讀 SQL 功能。

使用固定且具描述性的工具名稱,讓 ChatGPT 能夠選擇正確的工具。建立 MCP 伺服器並不會自動授予底層 Snowflake 物件的存取權限。

如需其他規格選項,請參閱:建立由 Snowflake 管理的 MCP 伺服器。

授予適當的 Snowflake 權限

選擇用戶授權時使用的 Snowflake 角色,然後授予該角色以下項目的存取權限:

  1. 資料庫和結構定義。

  2. MCP 伺服器。

  3. 工具使用的每個底層物件,例如搜尋服務、語義檢視或倉庫。

範例:

GRANT USAGE ON DATABASE CHATGPT_APPS TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON SCHEMA CHATGPT_APPS.TOOLS TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON MCP SERVER CHATGPT_APPS.TOOLS.CHATGPT_SNOWFLAKE_MCP TO ROLE CHATGPT_CONNECTOR_ROLE;

GRANT USAGE ON CORTEX SEARCH SERVICE CHATGPT_APPS.TOOLS.SUPPORT_SEARCH_SERVICE TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT SELECT ON SEMANTIC VIEW CHATGPT_APPS.TOOLS.REVENUE_SEMANTIC_VIEW TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON WAREHOUSE CHATGPT_WH TO ROLE CHATGPT_CONNECTOR_ROLE;

如果 MCP 伺服器提供 UDF、預存程序或 Cortex 智能代理,也請授予該物件所需的權限。

驗證 Snowflake 是否準備就緒

執行:

SHOW MCP SERVERS IN SCHEMA CHATGPT_APPS.TOOLS;

然後執行:

DESCRIBE MCP SERVER CHATGPT_APPS.TOOLS.CHATGPT_SNOWFLAKE_MCP;

確認以下事項:

  • 伺服器位於預期的資料庫和結構定義中。

  • 工具清單符合你的預期。

  • 每個工具的 identifier 均指向正確的 Snowflake 物件。

  • 用於連接的角色擁有 MCP 伺服器的 USAGE 權限。

  • 用於連接的角色擁有每個底層物件所需的權限。

在 ChatGPT 中輸入 Snowflake 伺服器詳細資料

  1. 在 ChatGPT 中,切換至要使用此應用程式的帳戶或工作區。

  2. 如要作個人設定,請前往設定 > 外掛程式;如要設定工作區,請以工作區管理員身分前往工作區設定 > 外掛程式。

  3. 搜尋 Snowflake。

  4. 啟用 Snowflake - 官方範本。

  5. 開啟 Snowflake - 官方範本,輸入清晰易懂的連接名稱,然後選取連接。

  6. 輸入受管理 MCP 伺服器的完整 URL:

https://<snowflake_host_prefix>.snowflakecomputing.com/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server}

範例:

https://myorg-myaccount.azure.snowflakecomputing.com/api/v2/databases/CHATGPT_APPS/schemas/TOOLS/mcp-servers/CHATGPT_SNOWFLAKE_MCP

ChatGPT Snowflake Template connection form with name, managed MCP server URL, and OAuth settings.

如果設定畫面將 Snowflake 設定分成獨立欄位顯示,請填入 URL 中的相同值:

Snowflake 主機前綴

使用 Snowflake 帳戶 URL 中 .snowflakecomputing.com 之前的所有內容,包括任何地區或雲端後綴。

例如,如果帳戶 URL 的開頭為:

https://myorg-myaccount.azure.snowflakecomputing.com

主機前綴就是:

myorg-myaccount.azure

資料庫

輸入包含 MCP 伺服器的資料庫,例如:

CHATGPT_APPS

結構定義

輸入包含 MCP 伺服器的結構定義,例如:

TOOLS

MCP 伺服器名稱

輸入 Snowflake MCP 伺服器的物件名稱,例如:

CHATGPT_SNOWFLAKE_MCP

設定 OAuth

選擇你的帳戶可用且符合機構要求的 OAuth 方式。兩種方式都使用上述共通的 MCP 伺服器設定,以及下述連接測試和存取控制。

無論採用哪種 OAuth 方式,使用 session:role:all 時,Snowflake 都會使用每位用戶的預設角色。如果 OAuth 整合已設定角色允許清單,預設角色必須在清單內,而且不得被封鎖。即使用戶擁有另一個已核准的角色,系統也不會自動選用該角色。

內置 OAuth

繼續之前,請先完成上述共通章節的步驟:建立 MCP 伺服器、授予權限、驗證伺服器,並在 ChatGPT 中輸入伺服器詳細資料。即使你直接跳到本節,也必須先完成這些步驟。

只有在你的 Snowflake 帳戶可使用 ChatGPT 合作夥伴應用程式,而且 ChatGPT 設定對話框提供內置 OAuth 時,才可採用此方式。

  1. 請要求 Snowflake 管理員在託管 MCP 伺服器的同一個 Snowflake 帳戶中,啟用 ChatGPT 合作夥伴整合。重用現有且已啟用的 ChatGPT 合作夥伴整合。

  2. 在 ChatGPT 設定對話框中使用內置 OAuth。你無需輸入用戶端 ID 或用戶端密鑰,也無需註冊回呼 URL。

  3. 接着按照下方「連接及管理 Snowflake」一節的步驟登入、同意授權,並設定存取權限。然後完成「測試應用程式」一節的步驟,包括讓獲准使用的非管理員成員進行測試。

上述預設角色、允許清單及被封鎖角色的運作方式,也適用於此方式。

自訂 OAuth 用戶端

繼續之前,請先完成上述共通章節的步驟:建立 MCP 伺服器、授予權限、驗證伺服器,並在 ChatGPT 中輸入伺服器詳細資料。即使你直接跳到本節,也必須先完成這些步驟。

使用自訂 OAuth 用戶端時,你需要從 Snowflake 取得用戶端 ID 和用戶端密鑰。上述預設角色、允許清單及被封鎖角色的運作方式,也適用於此方式。

  1. 在 ChatGPT 設定對話框中,選取進階 OAuth 設定 > 用戶定義的 OAuth 用戶端,然後原樣複製 ChatGPT 顯示的回呼 URL。

  2. 建立自訂 OAuth 安全性整合,設定 OAUTH_CLIENT_TYPE = 'CONFIDENTIAL',並將 OAUTH_REDIRECT_URI 設為與該回呼 URL 完全相同的值。

  3. 在 Snowflake 中執行以下陳述式,整合名稱須使用大寫:

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');

  4. 從 JSON 結果中複製 oauth_client_id,貼到 ChatGPT 的 OAuth 用戶端 ID 欄位;再將 oauth_client_secret 貼到 OAuth 用戶端密鑰欄位。

  5. 將權杖端點驗證方法設為 client_secret_basic。

輸入自訂用戶端憑證後,請繼續按照下方「連接及管理 Snowflake」和「測試應用程式」兩節的步驟操作。

連接及管理 Snowflake

  1. 無論採用哪種 OAuth 方式,都請在同一個 ChatGPT 設定對話框中選取繼續,登入 Snowflake 並授權連接。如果機構已設定 SSO,你可以使用 SSO 登入。

  2. 如要設定工作區,請為需要使用此外掛程式的成員設定外掛程式安裝政策,以及角色或群組存取權限。確認 Snowflake 和 Snowflake - 官方範本 均已啟用。

  3. 工作區管理員負責為需要使用 Snowflake 的角色設定用戶存取權限。

  4. 工作區管理員負責檢查所開放工具的動作控制設定。

  5. 工作區管理員負責檢查應用程式權限,決定 ChatGPT 在哪些情況下使用應用程式前須先詢問成員。

這些應用程式權限適用於 ChatGPT 對話。工作區智能代理則使用由其建立者為各個智能代理設定的控制項,決定哪些應用程式動作可供使用,以及何時需要徵求最終用戶批准。如要了解智能代理的運作方式,請參閱:適用於 Enterprise 和 Business 的 ChatGPT 工作區智能代理。

測試應用程式

  1. 開啟對話,選取 Snowflake,然後測試連接。

  2. 確認 ChatGPT 能探索到你已設定的工具。

  3. 先執行低風險的讀取動作,例如對已核准的資料進行搜尋或唯讀查詢。

  4. 確認 Snowflake 權限設定能阻止超出已核准角色及物件範圍的存取。

  5. 如要設定工作區,請讓獲准使用且擁有不同預設 Snowflake 角色的非管理員成員進行測試。管理員成功連接,並不代表每位成員都能連接。

對工作區管理員而言,只啟用 Snowflake 並不足夠。如果尚未啟用並連接 Snowflake - 官方範本,成員看到的外掛程式可能會顯示為停用。

MCP 伺服器 URL 與 OAuth 運作方式

ChatGPT 會使用由 Snowflake 管理的 MCP 伺服器完整 URL 進行連接:

https://<snowflake_host_prefix>.snowflakecomputing.com/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server}

ChatGPT 會根據該 URL 中的 Snowflake 主機前綴,確定以下 Snowflake OAuth 端點:

  • 授權:https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/authorize

  • 權杖:https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/token-request

請勿貼上 Snowsight URL、單獨的 Snowflake 帳戶根 URL,或包含額外路徑片段的 URL。MCP URL 必須包含 /api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server},並與你的 Snowflake 物件完全相符。

疑難排解

Snowflake 對管理員顯示為已啟用,但對成員顯示為停用

  • 確認工作區設定 > 外掛程式中的 Snowflake 和 Snowflake - 官方範本 均已啟用。

  • 開啟 Snowflake - 官方範本,並完成其連接流程。只啟用範本而不連接,並不足夠。

  • 開啟 Snowflake,確認該範本列為其必要應用程式。

  • 確認外掛程式安裝政策允許受影響成員所屬的角色或群組使用。

找不到 MCP 伺服器

  • 重新檢查完整的 MCP 伺服器 URL;如果設定畫面要求填寫四個範本欄位,則檢查這些欄位。

  • 確認 MCP 伺服器確實存在於所指定的資料庫和結構定義中。

ChatGPT 中沒有顯示任何工具

  • 確認 MCP 伺服器規格包含工具。

  • 確認該角色擁有 MCP 伺服器的 USAGE 權限。

工具有顯示,但使用時失敗

  • 確認該角色擁有底層 Snowflake 物件所需的權限,例如搜尋服務、語義檢視、倉庫、程序或 UDF 的權限。

SQL 工具執行失敗

  • 確認倉庫名稱正確,而且倉庫正在執行。

  • 確認該角色擁有倉庫的 USAGE 權限。

  • 如果你只打算提供唯讀存取,請確認已設定 read_only: true。

要求的角色 ALL 已被明確封鎖

請要求 Snowflake 管理員對照你的預設角色與 OAuth 整合中允許及封鎖的角色。即使你擁有另一個獲允許的角色,系統也不會自動選用該角色。如情況適合,請將預設角色改為已核准的角色,然後重新連接。更改預設角色也會影響你在 ChatGPT 以外的 Snowflake 工作階段。

授權失敗

  • 確認用戶能夠登入 Snowflake。

  • 使用 session:role:all 時,請確認 OAuth 整合允許用戶的預設角色。

  • 確認設定使用由 Snowflake 管理的 MCP OAuth 流程。

  • 如果使用自訂 OAuth 用戶端,請確認用戶端 ID 和用戶端密鑰與 Snowflake OAuth 整合相符,而且其重新導向 URI 與 ChatGPT 顯示的回呼 URL 完全一致。

    如果使用內置 OAuth,請要求 Snowflake 管理員檢查託管 MCP 伺服器的帳戶是否提供 ChatGPT 合作夥伴整合,並確認已啟用該整合。

Snowflake 網絡政策或 IP 允許清單封鎖了連接器

  • 請要求 Snowflake 管理員更新 Snowflake 網絡政策或存取規則。

  • 允許來自目前 ChatGPT 連接器出口 IP 範圍的傳入連線。

  • 請在 Snowflake 中設定此允許清單。此清單與 ChatGPT 工作區的 IP 允許清單互相獨立。

  • 由於 IP 範圍可能會變更,請盡可能根據已發佈的 JSON 自動更新。

主機名稱連接問題

使用正確的 Snowflake 主機前綴。包含底線的 Snowflake 主機名稱可能會引發問題;建議使用連字號。

參考資料

這篇文章對你有幫助嗎?