MCP 连接器

概述

Snowflake 中的 MCP 连接器将 Snowflake Intelligence 和 Cortex Agents 连接到远程的模型上下文协议 (MCP) 服务器,使代理能够发现并调用由 Atlassian Jira、Salesforce 或您自己的自定义应用程序等提供商托管的工具。通过 MCP 连接器,您的代理不仅可以回答问题,还可以在企业系统中执行操作,例如创建 Jira 工单、更新 Salesforce 记录或发布到 Slack,所有这些都在 Snowflake 的治理环境中完成。

MCP 连接器的工作原理

管理员创建一个外部 MCP 服务器对象,该对象引用一个 API 集成,其中包含 OAuth 凭据。Snowflake 支持使用凭据(客户端 ID、客户端密钥)的标准 OAuth,也支持动态客户端注册 (DCR)。您可以从一组可用的 MCP 连接器中选择,也可以构建自己的自定义连接器。在将 MCP 连接器添加到代理之后,用户可以使用第三方服务进行身份验证,并直接在 Cortex Agents 和 Snowflake Intelligence 中使用这些工具。

设置流程

要创建 MCP 连接器并在 Snowflake 工作流程中使用它,请完成以下步骤:

  1. 提供商设置:账户管理员在提供商的仪表板(例如 Salesforce 或 Atlassian)上创建 MCP 服务器,并获取 OAuth 凭据。

  2. API 集成:账户管理员在 Snowflake 中创建一个 API 集成,用于存储服务器 URL、客户端 ID、客户端密钥以及 OAuth 端点。

  3. 创建外部 MCP 服务器:账户管理员创建一个外部 MCP 服务器对象,该对象引用 API 集成。

  4. 代理配置:代理开发者将外部 MCP 服务器添加到 Cortex Agent 的规范中。

  5. 用户身份验证:Snowflake Intelligence 用户通过 Snowflake Intelligence 接口连接到 MCP 服务器,并使用 OAuth 对第三方服务进行身份验证。

工具发现和调用

当代理被调用时,它会使用 tools/list 方法从每个配置的外部 MCP 服务器获取可用工具列表。在编排期间,代理使用 tools/call 方法并传递所需参数来调用特定工具。在执行任何工具调用之前,Snowflake 会检查 MCP 服务器及其底层的 API 集成是否都已启用。

访问控制

下表描述了外部 MCP 服务器操作所需的权限:

权限

对象

适用场景

CREATE EXTERNAL MCP SERVER

架构

创建外部 MCP 服务器

OWNERSHIP

MCP Server

删除 MCP 服务器

MODIFY

MCP Server

更新、删除、描述、显示和使用 MCP 服务器

USAGE

MCP Server

连接到 MCP 服务器并发现工具

USAGE

API 集成

连接到 MCP 服务器并发现工具

OWNERSHIP 或 MODIFY

API 集成

启用、禁用或删除 API 集成

默认情况下,仅账户管理员拥有这些权限。

重要

外部 MCP 服务器并非由 Snowflake 提供、维护或验证。通过连接到外部 MCP 服务器,您负责验证该服务器的可信性、确保您拥有访问和处理其所提供数据的权利,并遵守所有适用的法律以及管辖该数据的第三方条款。Snowflake 不对任何外部 MCP 服务器提供保证或支持,并且不对因使用该服务器而产生的任何错误、数据丢失或安全事件负责。

设置受支持的 MCP 连接器

您可以通过最少的配置连接到以下 MCP 服务器:

  • Atlassian

  • GitHub

  • Glean

  • Linear

  • Salesforce

对于这些 MCP 提供商,您需要完成以下工作流程:

  1. API_USER_AUTHENTICATION 类型字段中指定提供商详细信息。

  2. 设置提供商配置,该配置对于每个提供商都是唯一的。

  3. 在创建外部 MCP 服务器对象时引用此 API 集成。

备注

对于 OAuth 授权码流程,在向外部服务提供商授予同意后,客户端需要提供一个回调 URL。外部服务提供商将用户发送到回调 URL 以完成流程。通常,需要向 OAuth 应用配置提供两个 URLs:

  • 对于 Cortex Code CLI:<account_url>/oauth/complete-secret

  • 对于 Snowflake Intelligence 和 Snowsight UI:<snowsight_url>/oauth/complete-secret

Snowsight URL 可以从 SYSTEM$ALLOWLISTSYSTEM$ALLOWLIST_PRIVATELINK 获取,具体取决于是否使用 PrivateLink。选择以 apps-api``(用于公共访问)或 ``app.<region>.privatelink.snowflakecomputing``(用于 PrivateLink)开头的 ``SNOWSIGHT_DEPLOYMENT 类型。

  1. 导航到 Admin.atlassian.com

  2. 从左侧导航栏中,选择 Apps > AI Settings > Rovo MCP Server

  3. Your domains 下,选择 Add Domain 以添加上面说明中所述的两个回调 URLs。

  4. 选择 Add

  5. 登录 Snowsight

  6. 在导航菜单中,选择 AI & ML » Agents

  7. 选择 Settings

  8. 选择 Tools and Connectors

  9. 选择 Browse Connectors

  10. 选择 Atlassian

  11. 为 MCP 服务器输入名称和描述。

  12. 对于 Server URL,输入 https://mcp.atlassian.com/v1/mcp

  13. 选择要在其中创建 MCP 服务器的数据库和模式。

  14. 选择 Add

以下示例展示了为 Atlassian 创建 API 集成和 MCP 服务器的 SQL 命令:

-- Create the API integration using dynamic client registration (DCR)
CREATE API INTEGRATION jira_mcp_api_integration
  API_PROVIDER = external_mcp
  API_ALLOWED_PREFIXES = ('https://mcp.jira.atlassian.com')
  API_USER_AUTHENTICATION = (
    TYPE=OAUTH_DYNAMIC_CLIENT,
    OAUTH_RESOURCE_URL='https://mcp.atlassian.com/v1/mcp'
  )
  ENABLED = TRUE;

-- Create the external MCP server
CREATE EXTERNAL MCP SERVER atlassian_mcp_server
  WITH DISPLAY_NAME = 'Atlassian (Jira & Confluence)'
  URL='https://mcp.atlassian.com/v1/mcp'
  API_INTEGRATION = jira_mcp_api_integration;

自定义 MCP 连接器

您还可以手动配置自定义连接器以连接到任何与 MCP 兼容的端点。

  1. 在创建 API 集成时提供完整的 OAuth 配置:

     -- Create the API integration with full OAuth configuration
    CREATE API INTEGRATION custom_mcp_api_integration
       API_PROVIDER = external_mcp
       API_ALLOWED_PREFIXES = ('https://internal.mycompany.com/mcp')
       API_USER_AUTHENTICATION = (
         TYPE = OAUTH2
         OAUTH_CLIENT_ID = 'your_client_id'
         OAUTH_CLIENT_SECRET = 'your_client_secret'
         OAUTH_TOKEN_ENDPOINT = 'https://internal.mycompany.com/oauth/token'
         OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_BASIC
         OAUTH_AUTHORIZATION_ENDPOINT = 'https://internal.mycompany.com/oauth/authorize'
       )
       ENABLED = TRUE;
    

    或者,您可以将 API 集成与 DCR 一起使用:

    CREATE API INTEGRATION custom_mcp_api_integration
      API_PROVIDER = external_mcp
      API_ALLOWED_PREFIXES = ('https://internal.mycompany.com/mcp')
      API_USER_AUTHENTICATION = (
        TYPE = OAUTH_DYNAMIC_CLIENT
        OAUTH_RESOURCE_URL='https://internal.mycompany.com/mcp'
      )
      ENABLED = TRUE;
    
  2. 创建 MCP 服务器对象:

    -- Create the external MCP server
    CREATE EXTERNAL MCP SERVER mycompany_mcp_server
      WITH DISPLAY_NAME = 'Mycompany MCP server'
      API_INTEGRATION = custom_mcp_api_integration;
    
  3. 在代理配置中引用 MCP 服务器:

    -- Add MCP server to agent
    ALTER AGENT my_support_agent
      ADD MCP_SERVER = 'db.schema.MCP server';
    

自定义 MCP 服务器的 OAuth 参数

下表描述了自定义 MCP 服务器的 OAuth 参数:

参数

类型

必填

默认值

描述

OAUTH_CLIENT_ID

STRING

来自 MCP 服务器提供商的客户端 ID

OAUTH_CLIENT_SECRET

STRING

来自 MCP 服务器提供商的客户端密钥

OAUTH_DISCOVERY_URL

STRING

用于自动端点解析的 OpenID Connect 发现 URL

OAUTH_TOKEN_ENDPOINT

STRING

用于将授权码交换为访问令牌的端点

OAUTH_AUTHORIZATION_ENDPOINT

STRING

用户授权连接时使用的端点

OAUTH_CLIENT_AUTH_METHOD

STRING

CLIENT_SECRET_BASIC

身身份验证方法:CLIENT_SECRET_BASIC 或 CLIENT_SECRET_POST

将 MCP 连接器添加到 Cortex Agent

创建 MCP 服务器对象后,代理开发者会在 Cortex Agent 配置中引用它。MCP 连接器位于代理管理员 UI 中可用,开发者可在此浏览并选择已在账户级别配置的 MCP 连接器。您还可以使用 SQL 或 API 将 MCP 连接器添加到您的代理中。

  1. 登录 Snowsight

  2. 在导航菜单中,选择 AI & ML » Agents

  3. 从代理列表中选择代理名称。

  4. 选择 MCP Connectors

  5. Available Connectors 列表中,选择要添加的连接器。

  6. 查看连接器详细信息,然后选择 Add to agent

引用这些 MCP 服务器的 Cortex Agent 可以访问提供商提供的工具。例如,对于 Atlassian,工具包括创建 Jira 问题、评论问题、创建 Confluence 页面以及更新现有页面。

当代理被调用时,它会从每个 MCP 服务器获取工具列表,并将这些工具包含在其编排中。代理根据用户的查询和 MCP 服务器提供的工具描述来选择并调用工具。

在 Snowflake Intelligence 中使用 MCP 连接器

Snowflake Intelligence 用户通过 Snowflake Intelligence 接口连接到外部 MCP 服务器:

  1. 按照 访问代理 中的说明导航到 Snowflake Intelligence 接口。

  2. 打开源面板并选择 Connectors

  3. 在所选连接器旁边选择 Connect。您也可以选择 Manage Connections,然后选择 Connect

  4. 用户将被重定向到第三方服务的身份验证页面以批准连接。

  5. 身份验证后,连接器将在源列表中显示为 Connected。您现在可以与代理交互以从外部 MCP 服务器取信息。

要断开服务器连接,用户可以完成以下操作:

  1. 选择 Manage Connections

  2. 选择 MCP Server,然后选择 Disconnect

用户可以在源下拉菜单中连接和断开连接器,以将其包含在代理的编排中或从中排除。未处于 Connected 状态的连接器不会包含在编排中。

当用户的身份验证令牌过期时,Snowflake Intelligence 会提示用户重新进行身份验证。

在 Agent:run API 中使用 MCP 连接器

Agent:run API 通过客户端接口连接到 MCP 服务器。使用以下函数通过第三方服务对用户进行身份验证:

  • 启动 OAuth 流程的函数:

    -- Returns authorization URI to authenticate through the third-party service
    SELECT SYSTEM$START_USER_OAUTH_FLOW('<API_INTEGRATION_NAME>');
    
  • 完成 OAuth 流程的函数:

    SYSTEM$FINISH_OAUTH_FLOW( '<query_string>' )
    

SYSTEM$START_USER_OAUTH_FLOW 会返回一个授权 URL,用于 API_PROVIDER = EXTERNAL_MCP 的 API 集成。在浏览器中打开 URL 以完成同意授权,然后在同一会话中使用来自重定向 URL 的查询字符串运行 SYSTEM$FINISH_OAUTH_FLOW。有关 SYSTEM$FINISH_OAUTH_FLOW 的更多信息,请参阅 SYSTEM$FINISH_OAUTH_FLOW

管理 MCP 服务器

列出并描述 MCP 服务器

列出不同范围下的所有外部 MCP 服务器:

-- List all MCP servers in the account
SHOW EXTERNAL MCP SERVERS IN ACCOUNT;

-- List MCP servers in a specific database or schema
SHOW EXTERNAL MCP SERVERS IN DATABASE prod_db;
SHOW EXTERNAL MCP SERVERS IN SCHEMA prod_db.integrations;

输出内容包括服务器名称、数据库、模式、所有者、类型(预置或自定义)、MCP 服务器 URL、状态(已启用或已禁用)以及关联的 API 集成。

要查看特定服务器的完整配置,请执行以下操作:

DESCRIBE EXTERNAL MCP SERVER mycompany_mcp_server;

禁用和启用 MCP 服务器

通过更改其底层的 API 集成来禁用 MCP 服务器。禁用后,所有用户令牌会立即失效,并触发对 MCP 服务器撤销端点的调用。禁用集成时,密钥不会被删除。如果集成保持禁用状态足够长时间,这些密钥会自然过期。

-- Disable the MCP server
ALTER API INTEGRATION mycompany_mcp_integration SET ENABLED = FALSE;

-- Re-enable the MCP server
ALTER API INTEGRATION mycompany_mcp_integration SET ENABLED = TRUE;

警告

当您禁用 API 集成时,所有使用该 MCP 服务器的代理都会立即失去对其工具的访问权限。当连接器被禁用时,Snowflake Intelligence 会向用户显示一个警报。重新启用需要用户重新进行身份验证,就像首次连接一样。

您无法创建引用已禁用 API 集成的新 MCP 服务器。在代理执行期间,Snowflake 会检查 MCP 服务器和 API 集成的状态,并且仅使用已启用的服务器。

删除 MCP 服务器

先删除 MCP 服务器,然后再删除 API 集成。只有拥有 OWNERSHIP 权限的角色才能执行删除操作。

-- Drop the MCP server
DROP EXTERNAL MCP SERVER mycompany_mcp_server;

-- Drop the API integration (permanently deletes OAuth configuration and secrets)
DROP API INTEGRATION mycompany_mcp_integration;

警告

删除 API 集成会永久删除所有 OAuth 配置和存储的密钥。在删除 MCP 服务器之前,请确保当前没有代理正在使用它。如果再次需要它们,必须从头开始重新创建这两个对象。

关键注意事项和最佳实践

  • 自定义 MCP 服务器:在连接到不在可用 MCP 连接器列表中的 MCP 端点时,请使用自定义服务器。Snowflake 在 API 集成中支持 Atlassian、GitHub、Glean、Linear 和 Salesforce 的用户身份验证类型。

  • 最低权限访问: 仅授予每个角色所需的最低权限。对 MCP 服务器的访问权限不会自动授予对其工具的访问权限,您必须为每个工具单独授予权限。

  • OAuth 身份验证: Snowflake 仅支持对所有 MCP 服务器连接使用 OAuth。

  • 禁用或删除: 禁用 API 集成会保留其配置,但会使所有用户令牌立即失效并阻止工具调用。删除 API 集成会将其与所有存储的密钥一起永久删除。在执行维护时禁用集成。在停用时删除集成。

  • 主机名格式: 在配置 MCP 服务器连接时,主机名中请使用连字符 (-) 而不是下划线 (_)。包含下划线的主机名会导致连接问题。

限制

以下限制适用于 MCP 连接器:

  • 监控: MCP 工具调用不会记录到监控表中。

  • MCP 协议范围: 外部 MCP 服务器仅支持工具能力。不支持资源、提示、根、通知、版本协商、生命周期阶段和采样。

  • 已禁用的集成: 您无法创建引用已禁用 API 集成的新 MCP 服务器。

  • 主机名格式: 主机名必须使用连字符,不能使用下划线。