CREATE MCP SERVER¶
새 MCP(모델 컨텍스트 프로토콜) 서버를 생성하거나 기존 MCP 서버를 대체합니다.
구문¶
CREATE [ OR REPLACE ] MCP SERVER [ IF NOT EXISTS ] <name>
FROM SPECIFICATION $$<specification_yaml>$$
매개 변수¶
nameMCP 서버의 식별자를 지정하는 문자열로, 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 도구의 경우) |
스키마의 오브젝트에 대한 작업을 수행하려면 상위 데이터베이스에 대한 하나 이상의 권한과 상위 스키마에 대한 하나 이상의 권한이 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
OR REPLACE 및 IF NOT EXISTS 절은 상호 배타적입니다. 두 절을 같은 문에 함께 사용할 수 없습니다.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
MCP 서버 연결의 호스트 이름을 구성할 때 밑줄(
_) 대신 하이픈(-)을 사용합니다. 밑줄이 포함된 호스트 이름을 사용하면 MCP 서버에서 연결 문제가 발생합니다.MCP 서버 사양은 메타데이터로 저장되며 :doc:`desc-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: Agent 도구로 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"
$$;