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

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

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

更新日期:8 hours ago

如果您是 ChatGPT 工作區管理員,或是想透過 Snowflake 管理的 MCP 伺服器將 ChatGPT 連線至 Snowflake 的 ChatGPT Plus 或 ChatGPT Pro 使用者,請參閱本指南。

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

設定內容

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

  • ChatGPT 可以使用哪些動作。

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

  • 每位使用者授權時使用哪個 Snowflake 角色。

  • 以哪個 Snowflake 資料庫、結構描述和 MCP 伺服器名稱識別端點。

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

  • Snowflake 主機前置字串。

  • 資料庫。

  • 結構描述。

  • MCP 伺服器名稱。

ChatGPT 只能探索及使用 MCP 伺服器公開,且使用者授權的 Snowflake 角色允許使用的工具。

開始之前

您需要:

  • ChatGPT 工作區管理員或擁有者權限,或 ChatGPT Plus 或 ChatGPT 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 伺服器物件名稱。

  • 如果 ChatGPT 設定畫面要求輸入 URL,請準備完整的受管理 MCP 伺服器 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. 前往外掛程式

  4. 搜尋 Snowflake

  5. 啟用 Snowflake - 官方範本

  6. 開啟 Snowflake - 官方範本,輸入清楚的連線名稱,然後選取連線

  7. 輸入完整的受管理 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 用戶端

您需要 Snowflake 提供的用戶端 ID 和用戶端密鑰才能連線。

使用 session:role:all 時,Snowflake 會使用每位使用者的預設角色。如果已設定 OAuth 整合的角色允許清單,預設角色必須在其中且不得遭到封鎖。即使有其他核准的角色,也不會自動選取該角色。

  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. Token 端點驗證方法設為 client_secret_basic

連線及管理 Snowflake

  1. 在同一個 ChatGPT 設定對話方塊中,選取繼續、登入 Snowflake,然後授權連線。

  2. 若為工作區設定,請為應使用此外掛程式的成員設定外掛程式安裝原則及角色或群組存取權。確認 SnowflakeSnowflake - 官方範本皆已啟用。

  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

  • Token: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,但成員看到的是停用狀態

  • 確認已在工作區設定 > 外掛程式中同時啟用 SnowflakeSnowflake - 官方範本

  • 開啟 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 流程。

  • 確認用戶端 ID 和用戶端密鑰與 Snowflake OAuth 整合相符,且其重新導向 URI 與 ChatGPT 顯示的回呼 URL 相符。

Snowflake 網路原則或 IP 允許清單封鎖連接器

  • 請要求 Snowflake 管理員更新 Snowflake 網路原則或存取規則。

  • 允許目前的 ChatGPT 連接器輸出 IP 範圍連入。

  • 請在 Snowflake 中設定此允許清單。這與 ChatGPT 工作區的 IP 允許清單不同。

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

主機名稱連線問題

使用正確的 Snowflake 主機前置字串。Snowflake 主機名稱中的底線可能導致問題,建議使用連字號。

參考資料

這篇文章有幫助嗎?