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

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

瞭解 ChatGPT 工作區管理員及 ChatGPT Plus 或 ChatGPT Pro 使用者如何將 ChatGPT 連線至由 Snowflake 管理的 MCP 伺服器。

更新日期:13 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 伺服器名稱。

接著,在 ChatGPT 中以完整的代管 MCP 伺服器 URL 設定 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 伺服器

在 Snowflake 中,以可建立 MCP 伺服器並授予存取權的角色登入。在要建立 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 主機名稱若含有底線,可能會導致問題;建議改用連字號。

參考資料

這篇文章有幫助嗎?