設定 Notion 的 Snowflake MCP

在此說明文件中

了解如何將 Snowflake 連接到自訂代理程式或你的 Notion 代理程式,直接在 Notion 中詢問公司資料相關問題。

跳至常見問題

部分功能處於 Alpha 測試階段。

本文介紹的部分功能,包括由工作空間設定的 MCP 連接,以及自訂代理程式的個別使用者授權,目前仍處於 Alpha 測試階段,你的工作空間可能尚未開放使用。

如需申請存取權限,請聯絡你的 Notion 客戶團隊,或申請加入資料代理程式搶先體驗計畫 →

你的 自訂代理程式和 Notion 代理程式可以透過 Snowflake 執行的 MCP(模型上下文協定)伺服器連接到 Snowflake。設定完成後,就能在 Notion 中向代理程式詢問 Snowflake 資料倉儲中的資料,並直接取得答案。

設定分為多個階段,且每個階段由不同的人員負責:

  • Snowflake 管理員 會設定角色、倉儲以及由 Snowflake 管理的 MCP 伺服器。

  • Notion 工作空間擁有者或管理員 會為工作空間設定 Snowflake MCP 連接。

  • 工作空間成員接著可以使用自己的 Snowflake 憑證,透過自訂代理程式連接到 Snowflake MCP,或直接將 Snowflake 連接到自己的 Notion 代理程式。兩種方式的步驟 1–10 相同;從步驟 11 開始,請依你要連接的代理程式選擇對應步驟。

  • 可用工具可能因 Snowflake 雲端區域而異。

  • Snowflake 管理的 MCP 伺服器無法在中國大陸或政府專用區域使用。

  • Notion 工作空間必須使用商業版或企業版。

  • 請使用網頁版或桌面版 Notion。此功能無法在行動裝置上使用。

  • 公司需要有 Snowflake 帳號。

  • 若要建立 自訂代理程式,你需要有在工作空間中建立代理程式的權限。

共用設定並不代表每個人都能存取相同的資料。

工作空間會儲存 OAuth 用戶端 ID、密鑰等連接設定資訊,但這些資訊並非共用的登入憑證。每個人都使用自己的帳號登入 Snowflake。無論使用自訂代理程式或自己的 Notion 代理程式,代理程式都只能存取該帳號有權存取的資料。

團隊將 Snowflake 連接到 Notion 前,Snowflake 管理員需先設定存取權限。這是步驟最多的環節,但只需設定一次。請與 Notion 工作空間管理員合作:Notion 提供重新導向 URI,Snowflake 則提供 OAuth 用戶端 ID 和密鑰。

接下來要設定角色與倉儲、建立 Snowflake 管理的 MCP 伺服器、授予伺服器所需資源的存取權限、設定 OAuth 範圍與安全性整合;如果組織有要求,還需新增網路原則。

開始前,請與 Notion 工作空間管理員一起填寫這份工作表。成員不必填寫;設定完成後,即可使用自己的 Snowflake 帳號登入。

請將 OAuth 用戶端密鑰保密。

請勿將密鑰貼到 Slack、工單、原始碼版本控制系統或終端機歷史記錄中。請只透過經核准的安全管道分享。

欄位

值

負責人

Snowflake 帳號識別碼

<organization-account>

Snowflake 管理員

MCP 資料庫

<database_name>

Snowflake 管理員

MCP 結構描述

<schema_name>

Snowflake 管理員

MCP 伺服器

<mcp_server_name>

Snowflake 管理員

倉儲

<warehouse_name>

Snowflake 管理員

存取角色

<mcp_access_role>

Snowflake 管理員

伺服器網址

https://<account_host>/api/v2/databases/<database_name>/schemas/<schema_name>/mcp-servers/<mcp_server_name>

Snowflake 管理員

主要角色範圍

session:role:<mcp_access_role>

Snowflake 管理員

重新導向 URI

複製 Notion 產生的 URI

Notion 工作空間管理員

OAuth 用戶端 ID

從 Snowflake 擷取

Snowflake 管理員

OAuth 用戶端密鑰

透過已核准的機密管道傳輸

Snowflake 管理員

帳號主機名稱使用連字號,而非底線。請確保伺服器網址中的每個物件名稱與 Snowflake 中的對應物件名稱相符。

請盡可能使用專用、權限最小化的角色以及一個核准的倉儲。

受限角色,不使用次要角色(建議)。此模型更容易理解及稽核。請設定 OAUTH_USE_SECONDARY_ROLES = NONE、指定 ALLOWED_ROLES_LIST,並使用 Notion 範圍 session:role:<mcp_access_role>。

使用者的預設次要角色(選用)。 僅在伺服器需要繼承自每個使用者 Snowflake DEFAULT_SECONDARY_ROLES 的權限時,才使用此模型。請設定 OAUTH_USE_SECONDARY_ROLES = IMPLICIT,省略 ALLOWED_ROLES_LIST,並使用明確的主要角色範圍。Snowflake 不允許將 IMPLICIT 次要角色與 ALLOWED_ROLES_LIST 一起使用,因此使用此模型時請省略允許清單。

請盡可能為 MCP 伺服器使用專用、權限最小化的角色。

請透過既有的身分管理流程授予此角色。如果 Snowflake 角色的成員由 Okta 或 SCIM 管理,請不要繞過該流程手動新增使用者。

建立或選擇一個由負責執行伺服器的團隊擁有的資料庫與結構描述。

對於需要治理的業務問題,可以將 Cortex Agent 提供給成員作為工具使用。它能將語意檢視、已驗證的查詢、搜尋及協調功能整合在一處。Cortex Agent 為選用項目;若要建立,請使用下方規格。若要替換現有的代理程式,請確認新代理程式符合已核准的規格。

execution_environment 必須維持嵌套在 Analyst 工具資源之下。

如果你將 warehouse 放在最上層,代理程式定義可能仍會建立成功,但工具在執行時將無法使用執行用的倉儲。

其他支援的 Snowflake MCP 工具類型包括 CORTEX_ANALYST_MESSAGE、CORTEX_SEARCH_SERVICE_QUERY、GENERIC 以及 SYSTEM_EXECUTE_SQL。

如需直接存取 SQL,請透過獨立的 MCP 伺服器提供這項功能,並為該伺服器設定專屬的最小權限角色,確保該角色只有唯讀權限。

將 SYSTEM_EXECUTE_SQL 加入受控代理程式的伺服器,可能讓用戶端繞過代理程式的語意檢視和已驗證的查詢。

為每個工具設定清楚的名稱和描述,說明工具涵蓋哪些資料、結果有多詳細,以及何時適合使用,幫助代理程式選擇合適的工具。

MCP 伺服器的 USAGE 權限可讓角色連接伺服器並查看可用工具,但不包含倉儲、代理程式、語意檢視、搜尋服務、預存程序或基礎資料的存取權限。請另外授予該角色存取伺服器工具所需各項資源的權限。

僅授予每個工具所需的額外資源存取權限。例如,授予已核准語意檢視上的 SELECT、Cortex Search 服務上的 USAGE,或特定函數或程序上的 USAGE。請勿將角色授予 PUBLIC,也不要為目前或未來的物件新增廣泛的權限。

在設定 OAuth 之前,請檢查 MCP 伺服器及其授權:

設定 MCP 結構描述以宣告成員應請求的確切角色:

請使用明確的角色範圍。請勿使用 session:role:all。Snowflake 會將該值視為使用者的預設主要角色,而非對每個角色的存取權,且特權角色的原則可能會封鎖它。明確的角色會使請求的存取權限更清晰且更容易檢查。

在執行此 SQL 之前,請與您的 Notion 工作空間管理員協調。請他們在工作空間 MCP 設定表單中輸入 Snowflake 伺服器網址,並開啟 手動設定驗證 與 使用工作空間共享的 OAuth 用戶端。Notion 會產生一個重新導向 URI。請複製該 URI 並傳送給 Snowflake 管理員。在 Snowflake 建立用戶端 ID 與密鑰後,工作空間管理員即可完成連線設定。

請完全依照 Notion 提供的重新導向 URI 使用。請勿新增結尾斜線或查詢參數,也不要變更主機。

設定 IS_AGENTIC = TRUE 會將透過此整合建立的工作階段標記為代理程式工作階段。Snowflake 的 IS_AGENT_ACTIVATED() 函數隨後會傳回 TRUE,讓 Snowflake 能套用代理程式專屬的稽核與管控。如果使用選用的次要角色模型,請設定 OAUTH_USE_SECONDARY_ROLES = IMPLICIT,並省略 ALLOWED_ROLES_LIST。

重新整理權杖的有效期限值 7776000 秒等於 90 天。在使用之前,請確認它符合貴組織的重新授權與權杖輪替政策。對於例行變更,請避免使用 CREATE OR REPLACE SECURITY INTEGRATION。取代整合可能會中斷現有的連接。

若要檢查整合而不顯示其密鑰,請執行:

確認整合已開啟、重新導向 URI 完全相符、角色已獲准且未被封鎖、重新整理權杖與 PKCE 已啟用,且授權與權杖端點皆使用 Snowflake 的公開帳戶主機。

此步驟僅在貴組織要求網路原則時才需要。請要求您的安全性或網路負責人核准 Notion 目前的出口範圍。

OAuth 整合必須允許這兩個 Notion 路徑:

  1. 處理 OAuth 回呼與交換授權碼的 API 路徑

  2. 驗證連接、執行工具並重新整理權杖的工作空間執行階段路徑

這些路徑可能會使用不同的 Notion 出口位址。如果您僅允許初始權杖交換期間使用的位址,登入可能會成功,但驗證或權杖重新整理可能會失敗。請使用 Notion 目前核准的出口範圍。請勿將瀏覽器或記錄檔中的一次性 IP 位址新增至正式環境的允許清單。

請將此網路原則附加至 OAuth 整合,而非個別使用者。請勿變更您帳戶層級的瀏覽器登入、VPN 存取或使用者網路存取原則。如果網路原則封鎖了權杖請求,Snowflake 可能會傳回 invalid_client。此錯誤並不一定代表用戶端 ID 或密鑰不正確。

請在安全的 Snowflake 工作表中執行此操作。整合名稱區分大小寫,且通常為大寫:

請透過已核准的安全管道,與您的 Notion 工作空間管理員分享用戶端 ID 及其對應的密鑰。Snowflake 提供兩組有效的密鑰,因此您可以在不中斷服務的情況下輪替密鑰。切勿將任一密鑰貼到文件、對話、工單或原始碼控制系統中。

由工作空間設定 MCP 連接的功能目前處於 Alpha 測試階段。

如果你的工作空間尚未開放使用,請聯絡你的客戶團隊,或申請加入資料代理程式搶先體驗計畫。

Snowflake 準備就緒後,工作空間擁有者或管理員只需為工作空間新增一次伺服器。之後,成員無須查看 OAuth 用戶端密鑰,就能找到該伺服器,無論是要將 Snowflake MCP 連接至自訂代理程式,還是自己的 Notion 代理程式。

  1. 前往工作空間的 設定。

  2. 選取 連接 → 工作空間共享的 MCP。

  3. 選取 新增工作空間 MCP。

填寫這些欄位,然後選取 新增 MCP 伺服器:

欄位

輸入內容

名稱

一個清晰、成員可見的名稱,例如 Company Snowflake Data Agent。

說明

關於資料及其預期用途的簡短說明。

伺服器網址

工作表中確切的公開 Snowflake MCP 網址。

手動設定驗證

開啟。Notion 會自動偵測 Snowflake 的 OAuth 詳細資訊。

使用工作空間共享的 OAuth 用戶端

開啟。

重新導向 URI

由 Notion 產生。請確認它與您提供給 Snowflake 管理員的 URI 相符。

用戶端 ID

來自 Snowflake OAuth 整合的用戶端 ID。

用戶端密鑰

透過已核准的安全管道收到的對應密鑰。

OAuth 範圍

選取確切的 session:role:<mcp_access_role> 範圍。只有在 Snowflake 宣告的範圍僅有這個已核准範圍,沒有其他更廣泛的範圍時,才能選取 所有範圍。

儲存後,請確認新列出現在 與此工作空間共享 下方,且 工作空間 OAuth 用戶端 顯示為 已設定。

這項設定的作用

  • 協助成員找到已核准的伺服器。

  • 將 OAuth 用戶端祕密金鑰儲存至 Notion 的加密連接儲存空間,只需設定一次。

  • 確保成員使用你核准的伺服器網址、用戶端和授權範圍登入。

  • 不會建立共用的 Snowflake 工作階段,也不會繞過 Snowflake 的存取控制。

  • 不會自動為每位成員建立連接。每個人都必須分別登入。

如果你移除這項設定,新成員就無法再找到該伺服器。現有連接可能仍會顯示,請同時撤銷 Snowflake 授權並移除現有連接。

管理員準備好 Snowflake MCP 連接後,你有兩種使用方式。如果是為團隊設定,請從 11A 開始;如果只想提出自己的問題,請跳至 11B。兩種方式也可以並用,且各自使用獨立的連接。

自訂代理程式讓團隊能在同一個地方詢問 Snowflake 資料。你只需連接 Snowflake 一次,加入指標和資料表的相關指示,再將代理程式分享給團隊。每位使用者都必須以自己的憑證登入 Snowflake,因此只能取得根據自身有權查看的資料所產生的答案。

自訂代理程式的個別使用者驗證功能目前處於 Alpha 測試階段。

如果你的工作空間尚未開放使用,請聯絡你的客戶團隊,或申請加入資料代理程式搶先體驗計畫。

將 Snowflake 連接到自訂代理程式

  1. 開啟你的自訂代理程式,或建立新的自訂代理程式。

  2. 前往 設定 → 工具與存取權。

  3. 選取 新增連接,然後選擇標示為 工作空間管理 的 Snowflake 伺服器。請勿選取 自訂 MCP 伺服器 或手動輸入伺服器網址。

  4. 在瀏覽器中登入 Snowflake。你可能會看到組織慣用的 Okta 或單一登入 (SSO) 畫面。

  5. 檢閱並核准要求的 Snowflake 角色。

  6. 選擇代理程式可以使用哪些工具。在測試完成前,請將具備寫入能力的工具與 CORTEX_AGENT_RUN 設定為需要核准。

  7. 選取 連接,並確認連接顯示為 已連接。

為代理程式提供背景資訊

這項連接讓代理程式可以存取 Snowflake。你提供的指示則會說明公司如何使用這些資料。在代理程式的指示中,說明各類問題應使用哪些工具、團隊如何定義關鍵指標,以及該從哪些資料表或語意檢視開始。附上幾個經過驗證的範例問題,也會很有幫助。如需現成的起點,請參閱 Data Scout 工具組指南。

分享代理程式

和分享其他自訂代理程式一樣,將這個代理程式分享給你的團隊。成員第一次提出需要 Snowflake 資料的問題時,系統會提示他們以自己的 Snowflake 帳號登入,不必輸入用戶端 ID 或祕密金鑰。

只有直接與代理程式對話時,才會使用個別使用者驗證。

排程執行和已觸發的執行沒有登入的使用者,因此目前無法使用任何人的 Snowflake 存取權限。如果你需要定期取得 Snowflake 資料,請先與 Snowflake 管理員討論,再設定排程。

如果想在自己的對話中提問,請將 Snowflake 連接到你的 Notion 代理程式。以自己的 Snowflake 帳號登入後,代理程式就只能存取你有權查看的內容。

  1. 前往 設定 → Notion AI。

  2. 在 MCP 伺服器 下,選取 新增 MCP 伺服器。

  3. 選取標示為 工作空間管理 的 Snowflake 伺服器。請勿選取 自訂 MCP 伺服器 或手動輸入伺服器網址。

  4. 選取 連接。

  5. 在瀏覽器中登入 Snowflake。你可能會看到組織慣用的 Okta 或單一登入 (SSO) 畫面。

  6. 檢閱並核准要求的 Snowflake 角色。

  7. 瀏覽器詢問是否開啟 Notion 時,選取 開啟 Notion。

  8. 確認伺服器狀態為 已連接,而非 需要驗證。

連接後,你可以在對話的 所有來源 → MCP 伺服器 中找到 Snowflake。

使用這兩種方式時,都無須提供 OAuth 用戶端 ID 或密鑰。

如果 Notion 要求你提供其中任何一項,可能是因為你選了自訂 MCP 選項,而不是由工作空間管理的伺服器;也可能是管理員尚未開啟 使用工作空間共享的 OAuth 用戶端。請返回並改選 工作空間管理 伺服器。

  1. 提出一個答案已知、需要使用 Snowflake 才能回答的簡單問題。

  2. 確認代理程式使用 Snowflake 並傳回結果。

  3. 確認你無法存取超出所獲角色權限範圍的資料。

如果你設定了自訂代理程式,也請一位 Snowflake 角色權限較低的團隊成員試用。他們應該只能看到自己有權存取的資料,而不是你有權存取的所有資料。這是確認代理程式使用每個人的存取權限,而非建立者權限的最快方式。

若要進一步檢查,請 Snowflake 管理員確認你的使用者帳號、角色、虛擬倉儲和查詢記錄。成功登入只能確認身分,無法保證每項授權都正確。

向代理程式提出關於你的 Snowflake 資料的具體問題,例如:

  • 「從 Snowflake 來看,我們上個月的總註冊數是多少?」

  • 「從 Snowflake 來看,我們本季營收最高的 10 個帳號是哪些?」

使用自訂代理程式時,只要指示已清楚說明何時使用 Snowflake,通常就可以省略「從 Snowflake」這幾個字。使用 Notion 代理程式時,明確提及 Snowflake 則有助於代理程式選擇正確的來源。

需要處理大量資料的請求可能耗時較久,甚至逾時。遇到這種情況,可以縮小問題範圍,或將請求拆成幾個較小的問題。

大多數時候,你不必做任何事就能維持連接。Snowflake 使用短效存取權杖,Notion 會在背景自動更新。存取權杖即將過期,不會因此中斷連接。

發生以下情況時,你需要重新登入:

  • 你的重新整理權杖過期,或管理員撤銷該權杖

  • 管理員更換 OAuth 整合設定或用戶端祕密金鑰

  • 你的 Snowflake 角色已遭移除

  • 管理員移除了工作空間設定或你的連接

  • 網路原則封鎖了權杖重新整理

使用自訂代理程式時,每個人都會分別登入。即使有人需要重新登入,也不會影響其他人,建立代理程式的人也不必採取任何動作。

如果你正在輪替用戶端密鑰: 請使用 Snowflake 的雙密鑰輪替,而不是更換整合。請確保兩組密鑰在更新與測試工作空間設定期間皆保持有效,再停用舊的密鑰。

ALTER SECURITY INTEGRATION <oauth_integration_name>
REFRESH OAUTH_CLIENT_SECRET_2;

  • 未列出 Snowflake MCP 連接。 工作空間管理員可能尚未新增此連接,或工作空間限制使用自訂伺服器。請向管理員尋求幫助。

  • 系統要求你提供用戶端 ID 或密鑰。 你可能選到了自訂 MCP 選項。請返回並選擇標記為 工作空間管理 的 Snowflake 伺服器。

  • 系統要求你重新登入。 你的 Snowflake 工作階段可能已過期,或管理員已更新連接。請再次登入 Snowflake。

  • 你開啟自訂代理程式時,系統要求你登入 Snowflake。 第一次使用時出現這項要求是正常的。每位使用受管理自訂代理程式的人,都必須使用自己的 Snowflake 憑證登入。

  • 團隊成員使用同一個自訂代理程式,卻得到不同結果。 這是正常的。代理程式會依照每個人的 Snowflake 存取權限取得資料,因此角色不同,看到的資料也會不同。

  • 自訂代理程式在對話中運作正常,但排程執行時無法運作。 排程執行和已觸發的執行都沒有已登入的使用者,因此目前無法透過個人登入使用 Snowflake。

  • 你已登入,但無法連接,或工具無法運作。 登入只能確認身分;能否存取仍取決於 Snowflake 授權。請 Snowflake 管理員確認你的角色是否有權存取伺服器、倉儲、代理程式和資料。

  • 代理程式找不到表格。 代理程式只能存取你的 Snowflake 帳號有權存取的資料。請檢查 Snowflake 權限,並在問題中附上表格名稱。

  • 請求逾時。 請提出更具體的問題,或將請求拆成幾個較小的問題。

這些錯誤通常源自 Snowflake 設定,而非 Notion。請將錯誤訊息提供給 Snowflake 管理員。

  • 伺服器網址看起來重複了,例如 https://https%3A... 貼上網址時,前方多出了一個 https://。請修正網址,讓它只以一個 https:// 開頭。

  • 你看到「此伺服器不支援 OAuth 驗證。」 安全整合未設定 OAuth,或伺服器網址有誤。請 Snowflake 管理員檢查 OAuth 安全整合與伺服器網址。

  • 你在登入或重新整理時看到 invalid_client。 用戶端 ID 或密鑰有誤,或密鑰已變更。請向管理員詢問目前的用戶端 ID 與密鑰。

  • 登入成功,但隨即失敗。 你的角色可能無法存取伺服器,或有角色或網路規則阻擋了工作階段。請管理員檢查你的授權與原則。

  • 你看到「The role ALL requested has been explicitly blocked.」 連接嘗試一次請求所有角色(session:role:all),但遭到封鎖。請改用單一角色,將 session:role:analyst 中的 analyst 換成你實際的角色名稱。

  • 你看到重新導向錯誤(錯誤 390307)。 儲存在 Snowflake 中的重新導向網址與 Notion 使用的不符。請管理員將安全整合中的重新導向網址設為與 Notion 使用的網址完全一致。

  • 你看到錯誤 390311,指出代碼挑戰無效。 這表示 PKCE 設定不符。請管理員確認安全整合中的 OAUTH_ENFORCE_PKCE 設定是否正確。

  • 你已連接,但沒有顯示任何工具。 你的角色可能沒有 MCP 伺服器的 USAGE 權限。請管理員確認授權,再執行 DESCRIBE MCP SERVER 檢查設定。

  • 你能存取的資料比預期多或少。 次要角色會影響工作階段可查看的資料。請與管理員確認工作階段目前啟用了哪些角色。

  • 之前運作正常,但變更密鑰後,所有人都無法連接。 用戶端密鑰已輪替,儲存的連接資訊因此不再適用。請向管理員索取新密鑰,再重新連接。

  • 之前運作正常,但現在只有你無法使用。 角色、授權或原則可能已變更,或你的工作階段已過期。請重新登入,再請管理員確認你的存取權限是否有變動。

  • 你的帳號識別碼遭到拒絕。 請使用 organization-account 格式,以連字號分隔,而非點號,例如 myorg-myaccount。

  • PrivateLink 帳號無法連接。 PrivateLink 帳號需要額外設定網路。請向管理員確認 PrivateLink 是否允許連接 Notion。

  • Snowflake 無法在排程或已觸發的執行中使用。 這些執行沒有已登入的使用者,因此目前無法使用個人登入功能。請改在對話中執行你的請求。

  • 你透過瀏覽器登入後看到 oauth_security_error。 帳號層級的網路原則可能封鎖了請求。管理員可執行以下指令確認:

  • 登入似乎成功,卻仍出現角色錯誤,即使範圍正確也一樣。 你的預設角色可能遭到封鎖,例如 ACCOUNTADMIN 或 BLOCKED_ROLES_LIST 中的角色。管理員可以檢查並修正此問題:

這些唯讀指令可協助管理員確認設定,且不會進行任何變更。請在 Snowflake 中執行這些指令。

ACCOUNT_USAGE 檢視可能會延遲,因此缺少資料列並不代表請求從未發生。

請先確認是哪個環節出了問題,再考慮輪替密鑰、放寬原則或擴大授權。

請使用這些 Snowflake 指南來完成設定:


常見問題

我應該建立自訂代理程式,還是將 Snowflake 連接到自己的 Notion 代理程式?

如果要為團隊設定 Snowflake MCP 連接,請建立自訂代理程式。這樣大家就能使用相同的指示和指標定義,也有統一的提問窗口,同時仍各自使用自己的 Snowflake 憑證登入。如果只想查詢自己的問題,則可將 Snowflake MCP 連接到你的 Notion 代理程式。兩種方式也可以並用。

將 Snowflake 連接到我的 Notion 代理程式後,也會連接到團隊的自訂代理程式嗎?

不會。這是兩個獨立的連接,每個自訂代理程式也都需要各自建立連接。步驟 1 – 10 的 Snowflake 設定可以共用,但每個人仍須各自登入。

團隊中的每個人看到的資料都一樣嗎?

不會。每個人都使用自己的憑證登入 Snowflake,代理程式只能存取該帳號有權存取的資料。自訂代理程式也是如此。

我需要和團隊分享 Snowflake 密碼嗎?

不需要。任何人都無須分享憑證。工作空間只需儲存一次 OAuth 用戶端資訊,每個人再自行登入 Snowflake。


給予回饋

這項資源有用嗎?


Powered by Fruition