CREATE MCP SERVER¶
新しい MCP(Model Context Protocol)サーバーを作成するか、既存の MCP サーバーを置き換えます。
- こちらもご参照ください。
構文¶
CREATE [ OR REPLACE ] MCP SERVER [ IF NOT EXISTS ] <name>
FROM SPECIFICATION $$<specification_yaml>$$
パラメーター¶
nameMCP サーバーの識別子を指定する文字列。MCP サーバーが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
FROM SPECIFICATION $$specification_yaml$$MCP サーバーのツールおよび構成を定義する YAML 仕様を指定します。
仕様には、1つ以上のツール定義を含む
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ツールの場合: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 ツール用) |
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
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: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"
$$;