如果你是 ChatGPT 工作區管理員或 ChatGPT Plus 或 Pro 用戶,並希望透過由 Snowflake 管理的 MCP 伺服器將 ChatGPT 連接至 Snowflake,請使用本指南。
大部分設定都在 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 或 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 Agent、預存程序或 UDF。
如果啟用 SQL,除非你的機構已審核並核准寫入存取權,否則請保持唯讀。
開啟 Snowflake 工作表
登入 Snowflake 應用程式。
切換至可建立 MCP 伺服器及授予存取權的角色。
前往工作區。

建立包含 SQL 檔案的工作區。

將工作區情境設為要建立 MCP 伺服器的資料庫和結構定義。

建立 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 物件均為範例:
support-search會公開指定的 Cortex Search 服務。revenue-analyst會公開指定的語意檢視。按需要為其他檢視加入工具。sql-readonly會透過指定倉庫公開唯讀 SQL。
請使用穩定且具描述性的工具名稱,讓 ChatGPT 可以選擇正確的工具。建立 MCP 伺服器並不會自動授予對底層 Snowflake 物件的存取權。
如需其他規格選項,請參閱:建立由 Snowflake 管理的 MCP 伺服器。
授予適當的 Snowflake 權限
選擇用戶授權時將使用的 Snowflake 角色,然後向該角色授予以下項目的存取權:
資料庫和結構定義。
MCP 伺服器。
工具使用的每個底層物件,例如搜尋服務、語意檢視或倉庫。
範例:
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 Agent,亦請為該物件授予所需權限。
驗證 Snowflake 已準備就緒
執行:
SHOW MCP SERVERS IN SCHEMA CHATGPT_APPS.TOOLS;
然後執行:
DESCRIBE MCP SERVER CHATGPT_APPS.TOOLS.CHATGPT_SNOWFLAKE_MCP;
確認:
伺服器存在於預期的資料庫和結構定義中。
工具清單符合你的預期。
每項工具的
identifier均指向正確的 Snowflake 物件。連線角色對 MCP 伺服器具有
USAGE權限。連線角色對每個底層物件均具有所需權限。
在 ChatGPT 中輸入 Snowflake 伺服器詳細資料
在 ChatGPT 中,切換至應提供此應用程式的帳戶或工作區。
開啟設定。如要為整個工作區進行設定,請以工作區管理員身分開啟工作區設定。
前往外掛程式。
搜尋 Snowflake。
啟用 Snowflake - 官方範本。
開啟 Snowflake - 官方範本,輸入清晰的連線名稱,然後選擇連線。
輸入完整的受管理 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

如果設定畫面將 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 整合的角色允許清單,預設角色必須獲該清單允許,而且不得被封鎖。即使另有已核准角色,系統也不會自動選擇該角色。
在 ChatGPT 設定視窗中開啟進階 OAuth 設定,選擇用戶定義的 OAuth 用戶端,然後複製 ChatGPT 中顯示的回呼 URL。
建立自訂 OAuth 安全性整合,並將
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'及OAUTH_REDIRECT_URI設為該確切的回呼 URL。在 Snowflake 中執行以下陳述式,並使用大寫的整合名稱:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');在 JSON 結果中,將
oauth_client_id貼到 ChatGPT 的 OAuth 用戶端 ID,並將oauth_client_secret貼到 OAuth 用戶端密鑰。將 Token 端點驗證方法設為
client_secret_basic。
連接及管理 Snowflake
在同一個 ChatGPT 設定視窗中選擇繼續,登入 Snowflake 並授權連線。
如要設定工作區,請為應使用此外掛程式的成員設定外掛程式安裝政策,以及角色或群組存取權。確認 Snowflake 和 Snowflake - 官方範本均已啟用。
工作區管理員負責為應使用 Snowflake 的角色設定用戶存取權。
工作區管理員負責檢視已公開工具的動作控制。
工作區管理員負責檢視應用程式權限,以選擇 ChatGPT 應在何時於使用應用程式前詢問成員。
這些應用程式權限適用於 ChatGPT 對話。工作區智能代理會使用其建立者設定的個別智能代理控制項,決定可使用哪些應用程式動作,以及何時要求終端用戶核准。如需了解智能代理行為,請參閱:適用於 Enterprise 和 Business 的 ChatGPT 工作區智能代理。
測試應用程式
開啟聊天,選擇 Snowflake,然後測試連線。
確認 ChatGPT 能探索你設定的工具。
先執行低風險的讀取動作,例如搜尋或對已核准資料執行唯讀查詢。
確認 Snowflake 權限可防止存取已核准角色和物件範圍以外的內容。
如要設定工作區,請使用獲准且具有不同 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/authorizeToken:
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 - 官方範本並完成其連線流程。只啟用範本而不連接並不足夠。
開啟 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 主機名稱可能導致問題,建議使用連字號。
