設定 Notion 的 Snowflake MCP
了解如何將 Snowflake 連接到自訂代理程式或你的 Notion 代理程式,讓你直接在 Notion 中查詢公司資料。
跳至常見問題部分功能處於 Alpha 測試階段。
本文介紹的部分功能,包括由工作空間設定的 MCP 連接,以及自訂代理程式的個別使用者授權,目前仍處於 Alpha 測試階段,你的工作空間可能尚未開放使用。
如要申請存取權限,請聯絡你的 Notion 客戶團隊,或申請加入資料代理程式搶先體驗計畫 →
自訂代理程式和Notion 代理程式可以透過 Snowflake 管理的MCP(模型上下文協定)伺服器連接 Snowflake。設定完成後,你就能向代理程式查詢 Snowflake 倉儲資料,直接在 Notion 取得答案。
設定分為多個階段,每個階段由不同的人員負責:
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 帳號識別碼 |
| Snowflake 管理員 |
MCP 資料庫 |
| Snowflake 管理員 |
MCP 結構描述 |
| Snowflake 管理員 |
MCP 伺服器 |
| Snowflake 管理員 |
倉儲 |
| Snowflake 管理員 |
存取角色 |
| Snowflake 管理員 |
伺服器網址 |
| Snowflake 管理員 |
主要角色範圍 |
| 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 搜尋服務的 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 路徑:
處理 OAuth 回呼並交換授權碼的 API 路徑
驗證連接、執行工具並重新整理權杖的工作空間執行階段路徑
這些路徑可能會使用不同的 Notion 出口位址。如果您僅允許初始權杖交換期間使用的位址,登入可能會成功,但驗證或權杖重新整理可能會失敗。請使用 Notion 目前核准的出口範圍。請勿將瀏覽器或記錄檔中的一次性 IP 位址新增至正式環境的允許清單中。
請將此網路原則套用至 OAuth 整合,而非個別使用者。不要變更瀏覽器登入、VPN 存取或使用者網路存取的帳號層級原則。如果網路原則封鎖權杖請求,Snowflake 可能會傳回 invalid_client。這不一定表示用戶端 ID 或密鑰有誤。
請在安全的 Snowflake 工作表中執行此操作。整合名稱區分大小寫,且通常為大寫:
請透過已核准的安全管道,與您的 Notion 工作空間管理員分享用戶端 ID 及其對應的密鑰。Snowflake 提供兩個有效的密鑰,因此您可以輪替密鑰而不中斷服務。切勿將任一密鑰貼到文件、對話、工單或原始碼版本控制系統中。
由工作空間設定 MCP 連接的功能目前處於 Alpha 測試階段。
如果你的工作空間尚未開放使用,請聯絡客戶團隊,或申請加入資料代理程式搶先體驗計畫。
Snowflake 準備就緒後,工作空間擁有者或管理員只需為工作空間新增一次伺服器。之後,成員無須查看 OAuth 用戶端密鑰,就能找到該伺服器,無論是要將 Snowflake MCP 連接至自訂代理程式,還是自己的 Notion 代理程式。
前往工作空間的
設定。選取
連接→工作空間共享的 MCP。選取
新增工作空間 MCP。
填寫以下欄位,然後選取 新增 MCP 伺服器:
欄位 | 輸入內容 |
|---|---|
名稱 | 使用成員一看就懂的名稱,例如 |
說明 | 關於資料及其預期用途的簡短說明。 |
伺服器網址 | 來自工作表的確切公開 Snowflake MCP 網址。 |
手動設定驗證 | 開啟。Notion 會自動偵測 Snowflake 的 OAuth 詳細資訊。 |
使用工作空間共享的 OAuth 用戶端 | 開啟。 |
重新導向 URI | 由 Notion 產生。請確認它與您提供給 Snowflake 管理員的 URI 相符。 |
用戶端 ID | 來自 Snowflake OAuth 整合的用戶端 ID。 |
用戶端密鑰 | 透過核准的安全管道收到的對應密鑰。 |
OAuth 範圍 | 選取確切的 |
儲存後,請確認新列出現在 與此工作空間共享 下方,且 工作空間 OAuth 用戶端 顯示為 已設定。
這項設定的作用
協助成員找到已核准的伺服器。
將 OAuth 用戶端密鑰儲存於 Notion 的加密連接儲存空間中,無須重複儲存。
確保成員使用你核准的伺服器網址、用戶端及授權範圍登入。
不會建立共用的 Snowflake 工作階段,也不會繞過 Snowflake 的存取控制。
不會自動連接每位成員。每個人都必須分別登入。
如果你移除這項設定,新成員就無法再找到該伺服器。現有連接可能仍會顯示,因此請同步撤銷 Snowflake 授權並移除現有連接。
管理員設定好 Snowflake MCP 連接後,你有兩種使用方式。如果要為團隊設定,請從 11A 開始;如果只想自己提問,請跳至 11B。兩種方式也可以並用,因為它們是各自獨立的連接。
自訂代理程式讓團隊有個統一的地方,可以詢問 Snowflake 資料。你只需連接 Snowflake 一次、加入指標和資料表的相關指示,再與團隊分享代理程式。每位使用者都必須用自己的憑證登入 Snowflake,因此只能根據各自有權查看的資料取得答案。
自訂代理程式的個別使用者驗證功能目前處於 Alpha 測試階段。
如果你的工作空間尚未開放使用,請聯絡客戶團隊,或申請加入資料代理程式搶先體驗計畫。
將 Snowflake 連接到自訂代理程式
開啟你的自訂代理程式,或建立新的代理程式。
前往
設定→工具與存取權限。選取
新增連接,再選擇標示為工作空間管理的 Snowflake 伺服器。請使用這個選項,不要選取自訂 MCP 伺服器或手動輸入伺服器網址。在瀏覽器中登入 Snowflake。畫面可能會顯示你所屬組織慣用的 Okta 或單一登入(SSO)方式。
檢閱並核准所要求的 Snowflake 角色。
選擇代理程式可以使用的工具。完成測試前,請將具備寫入功能的工具及
CORTEX_AGENT_RUN設為「要求核准」。選取
連接,確認連接狀態顯示為已連接。
為代理程式提供背景資訊
這項連接讓代理程式能存取 Snowflake;你的指示則告訴代理程式公司如何使用這些資料。請在代理程式的指示中說明:各類問題該使用哪些工具、團隊如何定義關鍵指標,以及該從哪些資料表或語意檢視著手。附上幾個經過驗證的範例問題也很有幫助。若想快速上手,請參閱 Data Scout 工具組指南。
分享代理程式
按照平常分享自訂代理程式的方式,將這個代理程式分享給團隊。團隊成員第一次提出需要使用 Snowflake 的問題時,系統會提示他們以自己的 Snowflake 帳號登入,無須輸入用戶端 ID 或密鑰。
當有人直接與代理程式對話時,會採用個別使用者驗證。
排程執行和觸發式執行都沒有已登入的使用者,因此目前無法使用任何人的 Snowflake 存取權限。如果你需要定期取得 Snowflake 資料,請先與 Snowflake 管理員討論,再進行設定。
如果想在自己的對話中提問,請將 Snowflake 連接到你的 Notion 代理程式。以自己的 Snowflake 帳號登入後,代理程式就只能存取你有權查看的內容。
前往
設定→Notion AI。在
MCP 伺服器下,選取新增 MCP 伺服器。選取標示為
工作空間管理的 Snowflake 伺服器,不要選取自訂 MCP 伺服器或手動輸入伺服器網址。選取
連接。在瀏覽器中登入 Snowflake。畫面可能會顯示你所屬組織慣用的 Okta 或單一登入(SSO)方式。
檢閱並核准所要求的 Snowflake 角色。
當瀏覽器詢問是否要開啟 Notion 時,選取
開啟 Notion。確認伺服器狀態顯示為
已連接,而不是需要驗證。
連接後,你可以在對話中的所有來源 → MCP 伺服器找到 Snowflake。
無論採用哪一種方式,都不需要提供 OAuth 用戶端 ID 或密鑰。
如果 Notion 要求提供其中一項,可能是你選擇了自訂 MCP 選項,而不是由工作空間管理的伺服器;也可能是管理員尚未開啟 使用工作空間共享的 OAuth 用戶端。請返回並改選 工作空間管理 伺服器。
提出一個無害、答案已知,且預期會使用 Snowflake 回答的問題。
確認代理程式使用 Snowflake 並傳回結果。
確認你無法存取獲指派角色權限以外的資料。
如果你設定了自訂代理程式,也請一位 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。這些執行沒有使用者登入,因此目前無法透過個別使用者的 Snowflake 登入資訊存取資料。請改在對話中執行請求。
你透過瀏覽器登入後看到
oauth_security_error。帳號層級的網路原則可能封鎖了請求。管理員可以執行以下指令確認:
登入看似成功,即使範圍正確,仍出現角色錯誤。你的預設角色可能遭到封鎖,例如
ACCOUNTADMIN或BLOCKED_ROLES_LIST中的角色。管理員可以依照下列方式檢查並修正:
這些唯讀指令可協助你的管理員確認設定,不會變更任何內容。請在 Snowflake 中執行。
ACCOUNT_USAGE 檢視表可能會延遲,因此缺少資料列並不代表請求從未發生。
在找出是哪個環節出問題前,請先不要輪替密鑰、放寬政策或擴大授權範圍。
請使用這些 Snowflake 指南來完成設定:
常見問題
我應該設定自訂代理程式,還是將 Snowflake 連接至我的 Notion 代理程式?
我應該設定自訂代理程式,還是將 Snowflake 連接至我的 Notion 代理程式?
如果要為團隊設定 Snowflake MCP 連接,請建立自訂代理程式。這樣每個人都能依照相同的指示和指標定義提問,同時仍使用自己的 Snowflake 憑證登入。如果只是想自行提問,則可以將 Snowflake MCP 連接至你的 Notion 代理程式。兩種方式也可以同時使用。
將 Snowflake 連接至我的 Notion 代理程式,也會將它連接至我們的自訂代理程式嗎?
將 Snowflake 連接至我的 Notion 代理程式,也會將它連接至我們的自訂代理程式嗎?
不會。Notion 代理程式和自訂代理程式的連接彼此獨立,而且每個自訂代理程式都需要各自設定連接。步驟 1 至 10 的 Snowflake 設定可以共用,但每個人仍須各自登入。
團隊中的每個人看到的資料都一樣嗎?
團隊中的每個人看到的資料都一樣嗎?
不是。每個人都使用自己的憑證登入 Snowflake,而代理程式只能存取該帳號能存取的內容。這對自訂代理程式來說也是一樣的。
我需要和團隊分享 Snowflake 密碼嗎?
我需要和團隊分享 Snowflake 密碼嗎?
不需要。任何人都不必分享憑證。工作空間只需儲存一次 OAuth 用戶端資訊,之後每個人自行登入 Snowflake。
