CREATE MCP SERVER¶
创建一个新的 MCP(模型上下文协议)服务器或替换现有的 MCP 服务器。
语法¶
CREATE [ OR REPLACE ] MCP SERVER [ IF NOT EXISTS ] <name>
FROM SPECIFICATION $$<specification_yaml>$$
参数¶
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_QUERY、CORTEX_ANALYST_MESSAGE和CORTEX_AGENT_RUN工具:identifier:选择使用 时默认使用的角色和仓库。基础对象的完全限定名称(例如,database.schema.object_name)
对于
CUSTOM工具:
访问控制要求¶
权限 |
对象 |
|---|---|
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 工具) |
对架构中的对象进行操作至少需要父数据库的一项权限和父架构的一项权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
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"
$$;
示例 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."
$$;
示例 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"
$$;
示例 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"
$$;
示例 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"
$$;