如果您是 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 工作表
登录 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 智能体,还需为该对象授予所需权限。
验证 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,确认该模板显示为其必需应用。
确认插件安装策略允许受影响成员所属的角色或群组。
找不到 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 主机名可能会导致问题;请优先使用连字符。
