CREATE MCP SERVER

创建一个新的 MCP(模型上下文协议)服务器或替换现有的 MCP 服务器。

另请参阅:

DESCRIBE MCP SERVERDROP MCP SERVERSHOW MCP SERVERS

语法

CREATE [ OR REPLACE ] MCP SERVER [ IF NOT EXISTS ] <name>
  FROM SPECIFICATION $$<specification_yaml>$$
Copy

参数

name

指定 MCP 服务器标识符的字符串;对于在 MCP 服务器中创建任务的架构必须是唯一的。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

FROM SPECIFICATION $$specification_yaml$$

指定 MCP 服务器所使用的工具和配置的 YAML 规范。

规范必须包括包含一个或多个工具定义的 tools 数组。每个工具必须指定:

  • name:选择使用 时默认使用的角色和仓库。工具的唯一标识符

  • type:选择使用 时默认使用的角色和仓库。工具类型(请参阅支持的工具类型)

  • title:选择使用 时默认使用的角色和仓库。人类可读的工具标题

  • description:选择使用 时默认使用的角色和仓库。该工具功能的描述

支持的工具类型:

  • CORTEX_SEARCH_SERVICE_QUERY:选择使用 时默认使用的角色和仓库。Cortex Search Service 工具

  • CORTEX_ANALYST_MESSAGE:选择使用 时默认使用的角色和仓库。Cortex Analyst 工具

  • SYSTEM_EXECUTE_SQL:SQL 执行工具

  • CORTEX_AGENT_RUN:选择使用 时默认使用的角色和仓库。Cortex Agent 工具

  • CUSTOM:选择使用 时默认使用的角色和仓库。UDFs 自定义工具和存储过程

特定于工具的要求:

对于 CORTEX_SEARCH_SERVICE_QUERYCORTEX_ANALYST_MESSAGECORTEX_AGENT_RUN 工具:

  • identifier:选择使用 时默认使用的角色和仓库。基础对象的完全限定名称(例如,database.schema.object_name

对于 CUSTOM 工具:

  • identifier:选择使用 时默认使用的角色和仓库。UDF 或存储过程的完全限定名称

  • config:选择使用 时默认使用的角色和仓库。配置对象指定:

    • type:选择使用 时默认使用的角色和仓库。要么 ``function``(对于 UDF)或 ``procedure``(适用于存储过程)

    • warehouse:选择使用 时默认使用的角色和仓库。用于执行的仓库

    • input_schema:定义函数/过程参数的 JSON 架构

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

CREATE MCP SERVER

架构

USAGE

架构

对于引用其他对象的工具,需要额外的权限:

权限

对象

USAGE

Cortex Search Service(用于 CORTEX_SEARCH_SERVICE_QUERY 工具)

SELECT

语义视图(用于 CORTEX_ANALYST_MESSAGE 工具)

USAGE

Cortex Agent(用于 CORTEX_AGENT_RUN 工具)

USAGE

用户定义的函数或存储过程(用于 CUSTOM 工具)

USAGE

仓库(用于 CUSTOM 工具)

对架构中的对象进行操作至少需要父数据库的一项权限和父架构的一项权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • OR REPLACE 和 IF NOT EXISTS 子句互斥。它们不能同时用于同一条语句中。

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 配置用于 MCP 服务器连接的主机名时,使用连字符 (-) 而不是下划线 (_)。MCP 服务器与包含下划线的主机名存在连接问题。

  • MCP 服务器规范存储为元数据,可以使用 DESCRIBE MCP SERVER 查看。

  • 可以在单个 MCP 服务器规范中定义多个工具。

  • 工具名称在单个 MCP 服务器中必须是唯一的。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

示例 1:创建具有 Cortex Search 和 Analyst 工具的 MCP 服务器

CREATE MCP SERVER my_mcp_server
  FROM SPECIFICATION $$
    tools:
      - name: "product-search"
        type: "CORTEX_SEARCH_SERVICE_QUERY"
        identifier: "database1.schema1.cortex_search_service1"
        description: "Cortex search service for all products"
        title: "Product Search"

      - name: "revenue-semantic-view"
        type: "CORTEX_ANALYST_MESSAGE"
        identifier: "database1.schema1.semantic_view_1"
        description: "Semantic view for all revenue tables"
        title: "Semantic view for revenue"
  $$;
Copy

示例 2:创建具有 SQL 执行工具的 MCP 服务器

CREATE MCP SERVER sql_exec_server
  FROM SPECIFICATION $$
    tools:
      - title: "SQL Execution Tool"
        name: "sql_exec_tool"
        type: "SYSTEM_EXECUTE_SQL"
        description: "A tool to execute SQL queries against the connected Snowflake database."
  $$;
Copy

示例 3:创建具有自定义 UDF 工具的 MCP 服务器

CREATE MCP SERVER custom_tools_server
  FROM SPECIFICATION $$
    tools:
      - title: "Multiply by Ten"
        identifier: "example_database.agents.multiply_by_ten"
        name: "multiply_by_ten"
        type: "CUSTOM"
        description: "Multiplies input value by ten and returns the result."
        config:
          type: "function"
          warehouse: "compute_service_warehouse"
          input_schema:
            type: "object"
            properties:
              x:
                description: "A number to be multiplied by ten"
                type: "number"
  $$;
Copy

示例 4:创建具有自定义存储过程工具的 MCP 服务器

CREATE MCP SERVER procedure_tools_server
  FROM SPECIFICATION $$
    tools:
      - title: "Calculate Values"
        identifier: "example_database.agents.calculate_values_sp"
        name: "calculate_values_sp"
        type: "CUSTOM"
        description: "Calculates the product and sum of two numbers and returns them in a JSON object."
        config:
          type: "procedure"
          warehouse: "compute_service_warehouse"
          input_schema:
            type: "object"
            properties:
              x:
                description: "First number"
                type: "number"
              y:
                description: "Second number"
                type: "number"
  $$;
Copy

示例 5:创建具有代理工具的 MCP 服务器

CREATE MCP SERVER agent_server
  FROM SPECIFICATION $$
    tools:
      - title: "Customer Service Agent"
        name: "customer_agent"
        type: "CORTEX_AGENT_RUN"
        identifier: "support_db.agents_schema.customer_service_agent"
        description: "Agent that handles customer service inquiries"
  $$;
Copy
语言: 中文