概要
Snowflake マネージド MCP を Visual Studio Code (VS Code) から利用するまでの手順を紹介します。
手順
データベースとスキーマを準備
検証用のデータベースとスキーマを作成します。
USE ROLE ACCOUNTADMIN;
CREATE DATABASE IF NOT EXISTS MCP_01;
CREATE SCHEMA IF NOT EXISTS MCP_01.SCHEMA_01;
USE DATABASE MCP_01;
USE SCHEMA SCHEMA_01;
マネージド MCP サーバーを作成
マネージド MCP サーバーを作成します。ここでは、VS Code からの参照用途に限定するため、SQL 実行のみ可能なツール(SYSTEM_EXECUTE_SQL)を定義しています。
CREATE OR REPLACE MCP SERVER COPILOT_MCP_01
FROM SPECIFICATION $$
tools:
- title: "SQL Execution Tool"
name: "sql_exec_tool"
type: "SYSTEM_EXECUTE_SQL"
description: "VS Code Copilot schema/DDL lookup"
$$;
PAT トークンを取得
Snowflake で PAT を利用する場合、ネットワークポリシーの設定が必要です。まずネットワークルールとネットワークポリシーを作成します。
-- 本番環境では IP 制限の実施が必須
CREATE OR REPLACE NETWORK RULE copilot_pat_rule
MODE = INGRESS
TYPE = IPV4
VALUE_LIST = ('0.0.0.0/0');
CREATE OR REPLACE NETWORK POLICY copilot_pat_np
ALLOWED_NETWORK_RULE_LIST = (copilot_pat_rule);
作成したネットワークポリシーを対象ユーザーに設定します。
ALTER USER {user_name}
SET NETWORK_POLICY = copilot_pat_np;
本番環境では IP 制限を実施してください。
続いて、PAT を発行します。
ALTER USER ADD PROGRAMMATIC ACCESS TOKEN COPILOT_TOKEN
-- 本番環境ではロールを固定することを検討
-- ROLE_RESTRICTION = '<string_literal>'
-- 有効期限を設定
DAYS_TO_EXPIRY = 7;
URL を取得
作成した MCP サーバーの URL を控えます。以下では、データベース名・スキーマ名・MCP サーバー名をセッション変数に設定し、URL を生成しています。
-- 変数(セッション変数)をセット
SET DB_NAME = '';
SET SCHEMA_NAME = '';
SET MCP_SERVER = '';
-- URL 生成
SELECT
CURRENT_ORGANIZATION_NAME()
|| '-'
|| CURRENT_ACCOUNT_NAME()
|| '.snowflakecomputing.com'
|| '/api/v2'
|| '/databases/' || $DB_NAME
|| '/schemas/' || $SCHEMA_NAME
|| '/mcp-servers/' || $MCP_SERVER
AS mcp_server_url;
コマンドでの動作確認
curl で MCP サーバーが正常に呼び出せることを確認します。ここでは tools/call で sql_exec_tool を呼び出し、SELECT CURRENT_TIMESTAMP() を実行しています。
curl -sS -X POST \
"https://{mcp_server_url}" \
-H "Authorization: Bearer {pat_token}" \
-H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":2,
"method":"tools/call",
"params":{
"name":"sql_exec_tool",
"arguments":{"sql":"SELECT CURRENT_TIMESTAMP()"}
}
}'
レスポンス例は以下です。
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{\"query_id\":\"01c28250-0000-cfcc-0001-13fe000861d2\",\"result_set\":{\"data\":[[\"1771473610.901000000\"]],\"resultSetMetaData\":{\"format\":\"jsonv2\",\"numRows\":1,\"partition\":0,\"partitionInfo\":[{\"rowCount\":1,\"uncompressedSize\":24}],\"rowType\":[{\"length\":0,\"name\":\"CURRENT_TIMESTAMP()\",\"nullable\":false,\"precision\":0,\"scale\":9,\"type\":\"timestamp_ltz\"}]},\"statementHandle\":\"01c28250-0000-cfcc-0001-13fe000861d2\"}}"
}
],
"isError": false
}
}
VS Code での動作確認
.vscode/mcp.json ファイルに以下を記述します。ここでは、入力ダイアログで MCP URL とアクセストークン(PAT または OAuth)を受け取り、HTTP ヘッダーに Authorization: Bearer ... を設定する構成としています。
{
"inputs": [
{
"type": "promptString",
"id": "snowflakeMcpUrl",
"description": "Snowflake MCP URL (e.g. <host>/mcp)"
},
{
"type": "promptString",
"id": "snowflakeAccessToken",
"description": "Snowflake access token (PAT or OAuth access token)",
"password": true
}
],
"servers": {
"snowflakeMcpSqlExec": {
"type": "http",
"url": "https://${input:snowflakeMcpUrl}",
"headers": {
"Authorization": "Bearer ${input:snowflakeAccessToken}"
}
}
}
}
サーバー名の上にある Start を選択します。
上部のウィンドウで Snowflake マネージド MCP の URL を入力し、Enter を入力します。
PAT を入力します。
VS Code の Chat ウィンドウで Add Context を選択します。
Tools を選択します。
作成した MCP を選択します。
データベース一覧を提示して と入力します。
提示された SQL の妥当性を確認し、Allow を選択します。
データベース一覧に基づいた回答が実施されることを確認します。














