mcpField
O
OSS Snowflake MCP Server

OSS Snowflake MCP Server

ローカル
github.com/Snowflake-Labsデータベース30324 週間前に更新

OSS Snowflake MCP Server について

このコミュニティ製 MCP サーバーは非推奨となり、保守も終了しています。かつては Snowflake Cortex AI、オブジェクト管理、SQL 実行のツールを提供していました。現在は公式の Snowflake MCP Server への移行が案内されています。

主な機能

  1. 01非構造化データ向けの Cortex Search
  2. 02構造化データ向けの Cortex Analyst
  3. 03複数データソースを扱う Cortex Agent
  4. 04オブジェクト管理と SQL 実行(非推奨)

活用シーン

  1. 01既存の Snowflake MCP 構成を公式サーバーへ移行する
  2. 02旧版 Cortex サービスの構成を参照する

MCP 対応

このプロジェクトは MCP サーバーであり、かつて Snowflake Cortex のツールを MCP クライアントに公開していましたが、現在は保守されていません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"snowflake-labs": {
"command": "uvx",
"args": [
"snowflake-labs-mcp"
],
"env": {
"SNOWFLAKE_ACCOUNT": "<SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_HOST": "<SNOWFLAKE_HOST>",
"SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
"SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
"SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
"SNOWFLAKE_WAREHOUSE": "<SNOWFLAKE_WAREHOUSE>",
"SNOWFLAKE_PASSCODE": "<SNOWFLAKE_PASSCODE>",
"SNOWFLAKE_PRIVATE_KEY": "<SNOWFLAKE_PRIVATE_KEY>",
"SNOWFLAKE_PRIVATE_KEY_FILE": "<SNOWFLAKE_PRIVATE_KEY_FILE>",
"SNOWFLAKE_PRIVATE_KEY_FILE_PWD": "<SNOWFLAKE_PRIVATE_KEY_FILE_PWD>",
"SNOWFLAKE_MCP_HOST": "<SNOWFLAKE_MCP_HOST>",
"SNOWFLAKE_MCP_PORT": "<SNOWFLAKE_MCP_PORT>",
"SNOWFLAKE_MCP_ENDPOINT": "<SNOWFLAKE_MCP_ENDPOINT>"
}
}
}
}
起動コマンドuvx snowflake-labs-mcp
設定が必要な環境変数
SNOWFLAKE_ACCOUNTAccount identifier (e.g. xy12345.us-east-1)
SNOWFLAKE_HOSTSnowflake host URL
SNOWFLAKE_USERUsername for authentication
SNOWFLAKE_PASSWORDシークレットPassword or programmatic access token
SNOWFLAKE_ROLERole to use for connection
SNOWFLAKE_WAREHOUSEWarehouse to use for queries
SNOWFLAKE_PASSCODEMFA passcode for authentication
SNOWFLAKE_PRIVATE_KEYシークレットPrivate key for key pair authentication
SNOWFLAKE_PRIVATE_KEY_FILEシークレットPath to private key file
SNOWFLAKE_PRIVATE_KEY_FILE_PWDシークレットPassword for encrypted private key
SNOWFLAKE_MCP_HOSTHost address to bind the server to (default: 0.0.0.0)
SNOWFLAKE_MCP_PORTPort number for the server to listen on (default: 9000)
SNOWFLAKE_MCP_ENDPOINTEndpoint path for the MCP server (default: /mcp)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypisnowflake-labs-mcp1.3.5

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

[非推奨]Snowflake Cortex AI Model Context Protocol(MCP)サーバー

注意

このプロジェクトは非推奨となり、メンテナンスは終了しています。 公式の Snowflake MCP Server に移行してください。公式サーバーは積極的に開発されており、Snowflake による全面的なサポートを受け、新機能も継続的に追加されています。

このコミュニティ MCP サーバーは、以前 Snowflake Cortex AI、オブジェクト管理、SQL オーケストレーションのツールを提供していました。現在はサポートされていません。新規および既存のすべてのユースケースで、代わりに公式の Snowflake MCP Server を使用してください。


旧ドキュメント(参考情報のみ)

MCP サーバーでは、以下の機能をサポートしていました。

  • Cortex Search:検索拡張生成(RAG)アプリケーションで一般的に使用される、Snowflake 内の非構造化データのクエリ。
  • Cortex Analyst:豊富なセマンティックモデリングを通じた、Snowflake 内の構造化データのクエリ。
  • Cortex Agent:構造化データおよび非構造化データの取得を横断するエージェント型オーケストレーター
  • オブジェクト管理:作成、削除、更新など、Snowflake で最も一般的なオブジェクトに対する基本的な操作を実行します。
  • SQL 実行:ユーザーが設定した権限によって管理される、LLM 生成の SQL を実行します。
  • セマンティックビューのクエリ:Snowflake のセマンティックビューを検出してクエリします。

はじめに

サービスの設定

すべてのツールは、シンプルな設定ファイルを使用して制御します。例は services/configuration.yaml で確認できます。また、テンプレートを以下に示します。この設定ファイルのパスがサーバーに渡され、その内容を使用して起動時に MCP サーバーのツールが作成されます。

Cortex サービス

複数の Cortex Agent、Search、Analyst サービスを追加できます。適切な説明は、詳細であり、かつ互いに明確に区別できるものです。 明示的に一覧に記載された Cortex サービスのみが、MCP クライアントでツールとして利用できます。

その他のサービス

その他のサービスには、オブジェクト管理、クエリ実行、セマンティックビューの使用のツールが含まれます。 設定ファイルの other_services セクションでこれらを True に設定すると、該当するツールグループを有効にできます。

SQL ステートメントの権限

sql_statement_permissions セクションにより、Snowflake オブジェクトを変更できるツール全体で、承認済みのステートメントのみが実行されるようにします。 リストには SQL 式の種類が含まれます。True とマークされたものは許可され、False とマークされたものは許可されません。各式の種類の例については、SQL 実行を参照してください。

agent_services: # List all Cortex Agent services
  - service_name: <service_name>
    description: > # Describe contents of the agent service
      <Agent service that ...>
    database_name: <database_name>
    schema_name: <schema_name>
  - service_name: <service_name>
    description: > # Describe contents of the agent service
      <Agent service that ...>
    database_name: <database_name>
    schema_name: <schema_name>
search_services: # List all Cortex Search services
  - service_name: <service_name>
    description: > # Describe contents of the search service
      <Search services that ...>
    database_name: <database_name>
    schema_name: <schema_name>
  - service_name: <service_name>
    description: > # Describe contents of the search service
      <Search services that ...>
    database_name: <database_name>
    schema_name: <schema_name>
analyst_services: # List all Cortex Analyst semantic models/views
  - service_name: <service_name> # Create descriptive name for the service
    semantic_model: <semantic_yaml_or_view> # Fully-qualify semantic YAML model or Semantic View
    description: > # Describe contents of the analyst service
      <Analyst service that ...>
  - service_name: <service_name> # Create descriptive name for the service
    semantic_model: <semantic_yaml_or_view> # Fully-qualify semantic YAML model or Semantic View
    description: > # Describe contents of the analyst service
      <Analyst service that ...>
other_services: # Set desired tool groups to True to enable tools for that group
  object_manager: True # Perform basic operations against Snowflake's most common objects such as creation, dropping, updating, and more.
  query_manager: True # Run LLM-generated SQL managed by user-configured permissions.
  semantic_manager: True # Discover and query Snowflake Semantic Views and their components.
sql_statement_permissions: # List SQL statements to explicitly allow (True) or disallow (False).
  # - All: True # To allow everything, uncomment and set All: True.
  - Alter: True
  - Command: True
  - Comment: True
  - Commit: True
  - Copy: True
  - Create: True
  - Delete: True
  - Describe: True
  - Drop: True
  - Insert: True
  - Merge: True
  - Rollback: True
  - Select: True
  - Transaction: True
  - TruncateTable: True
  - Unknown: False # To allow unknown or unmapped statement types, set Unknown: True.
  - Update: True
  - Use: True

メモ

以前のバージョンの設定ファイルでは、各 Cortex Search サービスの列と上限に明示的な値を指定できました。現在は、これらの値はユーザープロンプトに基づいて動的に決まります。指定がない場合、検索サービスのデフォルトの search_columns が、上限 10 で返されます。

Snowflake への接続

MCP サーバーは、すべての認証方法と接続方法に Snowflake Python Connector を使用します。包括的な認証オプションとベストプラクティスについては、Snowflake の公式ドキュメントを参照してください。

MCP サーバーは、指定されたロール(接続パラメーターで渡された場合)またはユーザーのデフォルトロール(接続時にロールが渡されなかった場合)に割り当てられた RBAC 権限に従います。

接続パラメーターは、CLI 引数および/または環境変数として渡すことができます。サーバーは、以下を含む Snowflake Python Connector で利用可能なすべての認証方法をサポートしています。

  • ユーザー名/パスワード認証
  • キーペア認証
  • OAuth 認証
  • シングルサインオン(SSO)
  • 多要素認証(MFA)
接続パラメーター

接続パラメーターは、CLI 引数および/または環境変数として渡すことができます。

パラメーターCLI 引数環境変数説明
アカウント--accountSNOWFLAKE_ACCOUNTアカウント識別子(例:xy12345.us-east-1)
ホスト--hostSNOWFLAKE_HOSTSnowflake ホスト URL
ユーザー--user, --usernameSNOWFLAKE_USER認証に使用するユーザー名
パスワード--passwordSNOWFLAKE_PASSWORDパスワードまたはプログラムによるアクセス用トークン
ロール--roleSNOWFLAKE_ROLE接続に使用するロール
ウェアハウス--warehouseSNOWFLAKE_WAREHOUSEクエリに使用するウェアハウス
パスワード内のパスコード--passcode-in-password-パスコードをパスワードに埋め込むかどうか
パスコード--passcodeSNOWFLAKE_PASSCODE認証用 MFA パスコード
秘密鍵--private-keySNOWFLAKE_PRIVATE_KEYキーペア認証用の秘密鍵
秘密鍵ファイル--private-key-fileSNOWFLAKE_PRIVATE_KEY_FILE秘密鍵ファイルへのパス
秘密鍵のパスワード--private-key-file-pwdSNOWFLAKE_PRIVATE_KEY_FILE_PWD暗号化された秘密鍵のパスワード
認証器--authenticator-認証の種類(デフォルト:snowflake)
接続名--connection-name-connections.toml(または config.toml)ファイル内の接続名

警告

非推奨のお知らせ:CLI 引数 --account-identifier および --pat、ならびに環境変数 SNOWFLAKE_PAT は非推奨となっており、今後のリリースで削除される予定です。代わりに --account と --password(または SNOWFLAKE_ACCOUNT と SNOWFLAKE_PASSWORD)を使用してください。

トランスポートの設定

MCP サーバーは、複数のトランスポート方式をサポートしています。MCP トランスポートの詳細については、FastMCP Transport Protocols を参照してください。

トランスポート説明ユースケース
stdio標準入力/出力(デフォルト)ローカル開発、MCP クライアントとの統合
sse(レガシー)サーバー送信イベントストリーミングアプリケーション
streamable-httpストリーミング可能な HTTP トランスポートコンテナへのデプロイ、リモートサーバー

使用方法

# Default stdio transport
uvx snowflake-labs-mcp --service-config-file config.yaml

# HTTP transport with custom endpoint
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http --endpoint /my-endpoint

# For containers (uses streamable-http on port 9000)
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http --endpoint /snowflake-mcp

トランスポートのカスタマイズ

sse および streamable-http トランスポートで利用できるサーバーのカスタマイズ項目:

パラメーターCLI 引数環境変数デフォルト
ホスト--server-hostSNOWFLAKE_MCP_HOST"0.0.0.0"
ポート--portSNOWFLAKE_MCP_PORT9000
エンドポイント--endpointSNOWFLAKE_MCP_ENDPOINT/mcp
デバッグログ--verboseSNOWFLAKE_MCP_VERBOSEfalse

例:

export SNOWFLAKE_MCP_ENDPOINT="/my-mcp"
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http

MCP クライアントでの使用

MCP サーバーは特定のクライアントに依存せず、MCP ツールの基本機能と(任意で)リソースをサポートするほとんどの MCP クライアントで動作します。以下に、ローカルインストールの例を示します。コンテナ化されたデプロイへの接続については、MCP クライアントをコンテナに接続するを参照してください。

Claude Desktop

このサーバーを MCP クライアントとして Claude Desktop と連携するには、アプリのサーバー設定に以下を追加します。デフォルトの場所は次のとおりです。

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

サービス設定ファイルへのパスを指定し、接続方法を設定します。

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "command": "uvx",
      "args": [
        "snowflake-labs-mcp",
        "--service-config-file",
        "<path_to_file>/tools_config.yaml",
        "--connection-name",
        "default"
      ]
    }
  }
}

Cursor

Cursor を開いて「Settings -> Cursor Settings -> MCP」に移動し、Cursor に MCP サーバーを登録します。以下を追加します。

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "command": "uvx",
      "args": [
        "snowflake-labs-mcp",
        "--service-config-file",
        "<path_to_file>/tools_config.yaml",
        "--connection-name",
        "default"
      ]
    }
  }
}

チャットのコンテキストとして MCP サーバーを追加します。

README の画像

Cursor サーバーの問題をトラブルシューティングするには、「Output」パネルを開き、ドロップダウンメニューから「Cursor MCP」を選択してログを確認します。

fast-agent

fastagent.config.yaml の MCP サーバーセクションを更新し、設定ファイルのパスと接続名を指定します。

# MCP Servers
mcp:
    servers:
        mcp-server-snowflake:
            command: "uvx"
            args: ["snowflake-labs-mcp", "--service-config-file", "<path_to_file>/tools_config.yaml", "--connection-name", "default"]
README の画像

Microsoft Visual Studio Code + GitHub Copilot

前提条件、環境設定、手順を追ったガイドと説明については、こちらのブログを参照してください。

README の画像

Codex

~/.codex/config.toml に以下を追加して、Codex に MCP サーバーを登録します。

[mcp_servers.mcp-server-snowflake]
command = "uvx"
args = [
    "snowflake-labs-mcp",
    "--service-config-file",
    "<path_to_file>/tools_config.yaml",
    "--connection-name",
    "default"
]

編集後、ターミナルで codex mcp list を実行すると、出力に snowflake MCP が表示されます。

コンテナーのデプロイ

リモートアクセスや本番環境で利用するために、MCP サーバーをコンテナーとしてデプロイします。このガイドでは、Docker と Docker Compose の両方を使ったデプロイ手順を順を追って説明します。

Docker によるデプロイ

Docker を使用して MCP サーバーをデプロイするには、次の手順に従います。

手順 1:設定ファイルを準備する

MCP 設定用のディレクトリを作成し、テンプレートをコピーします。

mkdir -p ${HOME}/.mcp/
cp services/configuration.yaml ${HOME}/.mcp/tools_config.yaml
手順 2:サービスを設定する

環境に合わせて設定ファイルを編集します。

# Edit the configuration file as needed
# Update service names, database/schema references, and enable desired features
nano ${HOME}/.mcp/tools_config.yaml
手順 3:コンテナーイメージをビルドする

付属の Dockerfile から Docker イメージをビルドします。

docker build -f docker/server/Dockerfile -t mcp-server-snowflake .
手順 4:環境変数を設定する

Snowflake の接続パラメーターを設定します。次の認証方法からいずれかを選択します。

ユーザー名/パスワード認証:

export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
export SNOWFLAKE_PASSWORD=<your_password>

キーペア認証:

export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
export SNOWFLAKE_PRIVATE_KEY="$(cat <path_to_private_key.p8>)"
export SNOWFLAKE_PRIVATE_KEY_FILE_PWD=<your_key_password>
手順 5:コンテナーを実行する

設定と環境変数を指定してコンテナーを起動します。

ユーザー名/パスワード認証の場合:

docker run -d \
  --name mcp-server-snowflake \
  -p 9000:9000 \
  -e SNOWFLAKE_ACCOUNT=${SNOWFLAKE_ACCOUNT} \
  -e SNOWFLAKE_USER=${SNOWFLAKE_USER} \
  -e SNOWFLAKE_PASSWORD=${SNOWFLAKE_PASSWORD} \
  -v ${HOME}/.mcp/tools_config.yaml:/app/services/tools_config.yaml:ro \
  mcp-server-snowflake

キーペア認証の場合:

docker run -d \
  --name mcp-server-snowflake \
  -p 9000:9000 \
  -e SNOWFLAKE_ACCOUNT=${SNOWFLAKE_ACCOUNT} \
  -e SNOWFLAKE_USER=${SNOWFLAKE_USER} \
  -e SNOWFLAKE_PRIVATE_KEY="${SNOWFLAKE_PRIVATE_KEY}" \
  -e SNOWFLAKE_PRIVATE_KEY_FILE_PWD=${SNOWFLAKE_PRIVATE_KEY_FILE_PWD} \
  -v ${HOME}/.mcp/tools_config.yaml:/app/services/tools_config.yaml:ro \
  mcp-server-snowflake
手順 6:デプロイを確認する

コンテナーが実行中で、アクセス可能であることを確認します。

# Check container status
docker ps

# Check container logs
docker logs mcp-server-snowflake

# Test endpoint (should return MCP server info)
curl http://localhost:9000/snowflake-mcp

Docker Compose によるデプロイ

Docker Compose を使って簡単にデプロイするには、次の手順に従います。

手順 1:設定ファイルを準備する

設定ディレクトリを作成し、テンプレートをコピーします。

mkdir -p ${HOME}/.mcp/
cp services/configuration.yaml ${HOME}/.mcp/tools_config.yaml
手順 2:サービスを設定する

環境に合わせて設定ファイルを編集します。

# Update service configurations as needed
nano ${HOME}/.mcp/tools_config.yaml
手順 3:環境変数を設定する

Snowflake の接続パラメーターを設定します。

export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
# For username/password auth:
export SNOWFLAKE_PASSWORD=<your_password>
# For key pair auth, also set:
# export SNOWFLAKE_PRIVATE_KEY="$(cat <path_to_private_key.p8>)"
# export SNOWFLAKE_PRIVATE_KEY_FILE_PWD=<your_key_password>
手順 4:サービスを起動する

Docker Compose を使用してコンテナーを起動します。

docker-compose up -d
手順 5:デプロイを確認する

サービスが実行中であることを確認します。

# Check service status
docker-compose ps

# View logs
docker-compose logs

# Test endpoint
curl http://localhost:9000/snowflake-mcp

MCP クライアントをコンテナーに接続する

MCP サーバーがコンテナー内で起動したら、さまざまな MCP クライアントを接続できます。接続設定はすべてのクライアントで同じで、異なるのは設定形式だけです。

接続 URL の形式:

  • ローカルデプロイ:http://localhost:9000/snowflake-mcp
  • リモートデプロイ:http://<hostname>:<port>/snowflake-mcp
Claude Desktop

claude_desktop_config.json に以下を追加します。

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "url": "http://localhost:9000/snowflake-mcp"
    }
  }
}
Cursor

Cursor の MCP 設定に以下を追加します(Settings -> Cursor Settings -> MCP):

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "url": "http://localhost:9000/snowflake-mcp"
    }
  }
}
fast-agent

fastagent.config.yaml に以下を追加します:

# MCP Servers
mcp:
    servers:
        mcp-server-snowflake:
            url: "http://localhost:9000/snowflake-mcp"

注意:

  • リモート環境にデプロイする場合は、localhost:9000 をサーバーのホスト名とポートに置き換えてください
  • ファイアウォールでポート 9000(または設定したポート)への接続が許可されていることを確認してください
  • 本番環境にデプロイする場合は、HTTPS と適切な認証の使用を検討してください

Cortex サービス

構成ファイルの agent_services セクションにある Cortex Agent、search_services セクションにある Cortex Search、および analyst_services セクションにある Cortex Analyst のインスタンスは、ツールとして提供されます。これらのツールを省略するには、各セクションを空欄にしてください。

MCP サーバーでサポートされるのは Cortex Agent オブジェクトのみです。つまり、Snowflake で事前に構成された Cortex Agent オブジェクトのみをツールとして利用できます。詳細については、Cortex Agent Run API を参照してください。

すべてのサービスで、サービス名、データベース、スキーマなどのコンテキスト名が正確であることを確認してください。理想的な説明は、十分に詳しく、かつ相互に重複しないものです。

アナリストサービスの semantic_model 値には、完全修飾されたセマンティックビュー、または Snowflake ステージ内のセマンティック YAML ファイルを指定する必要があります。

  • セマンティックビューの場合:MY_DATABASE.MY_SCHEMA.MY_SEMANTIC_VIEW
  • セマンティック YAML ファイルの場合:@MY_DATABASE.MY_SCHEMA.MY_STAGE/my_semantic_file.yaml(@ に注意してください。)

オブジェクト管理

MCP サーバーには、基本的な運用管理を行うための、対象を限定した多数のツールが含まれています。高度なオブジェクト管理には Snowsight を直接使用することをおすすめします。

MCP サーバーは現在、以下のオブジェクトタイプの作成、削除、作成または変更、説明、および一覧表示をサポートしています。 これらのツールを有効にするには、構成ファイルの other_services の下で object_manager を True に設定してください。

- Database
- Schema
- Table
- View
- Warehouse
- Compute Pool
- Role
- Stage
- User
- Image Repository

これらのツールも、構成ファイルの sql_statement_permissions の下に記載された権限によって制御されることに注意してください。 オブジェクトを作成するツールおよび作成または変更するツールは、Create 権限によって制御されます。オブジェクトの削除は、Drop 権限によって制御されます。

今後のリリースでは、さらに多くの操作とオブジェクトが追加される可能性があります。

SQL の実行

汎用 SQL ツールを使用すると、MCP クライアントが生成した一般的な SQL ステートメントを実行できます。設定ファイルで、許可する SQL ステートメントの種類をすべて管理できます。

設定ファイルの sql_statement_permissions には、sqlglot の式の種類が記載されています。False に設定されたものは実行前にブロックされます。True に設定されたものは実行されます(MCP クライアントの設定によっては、実行前にユーザーに確認を求めます)。

SQL 実行ツールを有効にするには、設定ファイルの other_services で query_manager を True に設定します。 すべての SQL 式が追加の検証を通過できるようにするには、All を True に設定します。

すべての Snowflake SQL コマンドが sqlglot に対応付けられているわけではないため、一部のあまり一般的でないコマンドは、設定ファイルにまだ登録されていない場合があります。 Unknown を True に設定すると、捕捉されていないこれらのコマンドも追加の検証を通過できます。 特定の式の種類を許可するために、新しい式の種類を直接追加することもできます。

以下に、sqlglot の式の種類と、それに対応する Snowflake SQL コマンドの例を示します。

SQLGlot の式の種類SQL コマンド
AlterALTER TABLE my_table ADD COLUMN new_column VARCHAR(50);
CommandCALL my_procedure('param1_value', 123);
GRANT ROLE analyst TO USER user1;
SHOW TABLES IN SCHEMA my_database.my_schema;
CommentCOMMENT ON TABLE my_table IS 'This table stores customer data.';
CommitCOMMIT;
CreateCREATE TABLE my_table ( id INT, name VARCHAR(255), email VARCHAR(255) );
CREATE OR ALTER VIEW my_schema.my_new_view AS SELECT id, name, created_at FROM my_schema.my_table WHERE created_at >= '2023-01-01';
DeleteDELETE FROM my_table WHERE id = 101;
DescribeDESCRIBE TABLE my_table;
DropDROP TABLE my_table;
ErrorCOPY INTO my_table FROM @my_stage/data/customers.csv FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1 FIELD_DELIMITER = ',');
REVOKE ROLE analyst FROM USER user1;
UNDROP TABLE my_table;
InsertINSERT INTO my_table (id, name, email) VALUES (102, 'Jane Doe', '[email protected]');
MergeMERGE INTO my_table AS target USING (SELECT 103 AS id, 'John Smith' AS name, '[email protected]' AS email) AS source ON target.id = source.id WHEN MATCHED THEN UPDATE SET target.name = source.name, target.email = source.email WHEN NOT MATCHED THEN INSERT (id, name, email) VALUES (source.id, source.name, source.email);
RollbackROLLBACK;
SelectSELECT id, name FROM my_table WHERE id < 200 ORDER BY name;
TransactionBEGIN;
TruncateTableTRUNCATE TABLE my_table;
UpdateUPDATE my_table SET email = '[email protected]' WHERE name = 'Jane Doe';
UseUSE DATABASE my_database;

セマンティックビューのクエリ

複数のツールが、Snowflake セマンティックビューとその構成要素の検出およびクエリをサポートしています。 セマンティックビューは一覧表示および説明表示できます。さらに、メトリクスとディメンションを一覧表示できます。 最後に、セマンティックビューに直接**クエリを実行**できます。

これらのツールを有効にするには、設定ファイルの other_services で semantic_manager を True に設定します。

トラブルシューティング

MCP Inspector の実行

MCP Inspector は、MCP サーバーと直接やり取りするためのウェブインターフェースを提供する強力なデバッグツールです。設定の問題のトラブルシューティング、ツールのテスト、セットアップの検証に欠かせません。

Inspector の基本的な使い方

MCP サーバーの設定を指定して Inspector を起動します。

npx @modelcontextprotocol/inspector uvx snowflake-labs-mcp --service-config-file <path_to_file>/tools_config.yaml --connection-name "default"
Inspector で確認できる内容

起動すると、次の操作ができるウェブインターフェースが開きます。

  1. 利用可能なツールを表示:設定ファイルから読み込まれたすべての MCP ツールを確認できます
  2. ツールの実行をテスト:カスタムパラメーターを指定してツールを直接呼び出し、動作を確認できます
  3. リソースを調査:サーバーが公開しているリソースを確認できます
  4. 接続の問題をデバッグ:接続に失敗した場合、詳細なエラーメッセージを確認できます
  5. 設定を検証:サービスの設定が正しく読み込まれていることを確認できます
よくあるトラブルシューティングの状況

設定ファイルの問題:

  • ツールが表示されない場合は、tools_config.yaml の構文を確認してください
  • サービス名とデータベース/スキーマの参照が正しいことを確認してください
  • 使用するツールグループの other_services が True に設定されていることを確認してください

接続の問題:

  • Snowflake の接続パラメーターが正しいことを確認してください
  • ロールに、設定したサービスに必要な権限があることを確認してください
  • キーペア認証を使用する場合は、秘密鍵が正しい形式であることを確認してください

ツール実行時のエラー:

  • Inspector を使用して、既知の正常なパラメーターで個々のツールをテストしてください
  • サーバーログで詳細なエラーメッセージを確認してください
  • 基盤となる Snowflake オブジェクト(データベース、スキーマ、サービス)が存在することを確認してください
その他のデバッグ方法

Cursor MCP ログを使用する:

  • Cursor の出力パネルを開きます
  • ドロップダウンから「Cursor MCP」を選択します
  • MCP サーバーを操作しながら、リアルタイムのログを確認します

コマンドラインでのデバッグ:

--verbose を指定するか、SNOWFLAKE_MCP_VERBOSE=true を設定して、デバッグログを有効にします。

uvx snowflake-labs-mcp --service-config-file <path_to_file>/tools_config.yaml --connection-name "default" --verbose

FAQ

Snowflake に接続するにはどうすればよいですか?
ツールの上限に関するエラー/警告が表示されます。
  • LLM によるツールのサポート数は今後増えると考えられますが、設定ファイルでツールグループを False に設定すると、非表示にできます。 リストに記載された Cortex サービスのみがツールになります。
パスワードの代わりに Programmatic Access Token(PAT)を使用できますか?
  • はい。CLI フラグ --password に渡すか、環境変数 SNOWFLAKE_PASSWORD として設定してください。
どのように試せばよいですか?
  • MCP サーバーは、MCP エコシステムの一部として使用することを想定しています。ツールの集合体と考えてください。オーケストレーターとして機能する MCP クライアントが必要です。詳しくは、MCP の紹介をご覧ください。
これはどこにデプロイされていますか?Snowpark Container Services 上ですか?
  • この MCP サーバーのすべてのツールはマネージドサービスであり、REST API を介してアクセスできます。個別のリモートサービスをデプロイする必要はありません。代わりに、現在のバージョンのサーバーは、Claude Desktop、Cursor、fast-agent などの MCP クライアントによって起動されることを想定しています。これらの MCP クライアントにサーバーを設定すると、アプリケーションがサーバーサービスを起動します。今後のバージョンでは、MCP サーバーをリモートサービスとしてデプロイできるようになる可能性があります。
ツールの呼び出しで権限エラーが発生します。
  • Programmatic Access Token を使用する場合、セカンダリロールは評価されないことに注意してください。トークンを作成する際は、すべてのサービスとその基盤となるオブジェクトにアクセスできる単一のロールを選択するか、任意のロールを選択してください。このプロパティを変更するには、新しい PAT を作成する必要があります。
Cortex Search や Cortex Analyst はいくつ追加できますか?
  • どちらのサービスも複数のインスタンスを追加できます。MCP クライアントは、ユーザーのプロンプトに基づいて適切なインスタンスを選択します。
助けてください!SSLError が発生します。
  • アカウント名にアンダースコアが含まれている場合は、URL のハイフン版を試してください。
    • アンダースコアを含むアカウント識別子:acme-marketing_test_account
    • ハイフンを含むアカウント識別子:acme-marketing-test-account
複数のユーザー向けに、コンテナ内で MCP サーバーを実行するにはどうすればよいですか?
  • コンテナーデプロイのセクションに記載されているように、Docker または Docker Compose を使用してデプロイしてください。コンテナー化されたサーバーは HTTP で動作し、複数の MCP クライアント接続を同時に処理できます。認証用の環境変数を設定し、設定ファイルを読み取り専用ボリュームとしてマウントしてください。
Cortex サービスがツールとして表示されないのはなぜですか?
  • 設定ファイルの構文が正しいことを確認してください(MCP Inspector を使用して検証してください)
  • サービス名、データベース名、スキーマ名が Snowflake に存在するものと完全に一致していることを確認してください
  • ロールに、指定したデータベースおよびスキーマへのアクセス権があることを確認してください
  • 指定した場所に Cortex サービスが実際に存在することを確認してください
環境ごとに異なる認証方法を使用できますか?
  • はい。デプロイごとに環境変数を個別に設定する、connections.toml ファイルで異なる接続名を使用する、または異なる CLI 引数を渡すことができます。サーバーは、ユーザー名/パスワード、キーペア、OAuth、SSO など、Snowflake Python Connector のすべての認証方法に対応しています。
実行できる SQL ステートメントを制限するにはどうすればよいですか?
  • 設定ファイルの sql_statement_permissions セクションを使用してください。特定のステートメントタイプを True(許可)または False(拒否)に設定します。セキュリティを最大限に高めるには、実際に必要なステートメントタイプのみを有効にしてください。認識されないステートメントタイプをブロックするには、Unknown を False に設定してください。
MCP サーバーの起動が遅いです。これは正常ですか?
  • 起動時には、サーバーが Snowflake に接続し、設定を検証するため、数秒かかることがあります。それ以降のツール呼び出しは、はるかに速くなるはずです。起動に 30 秒以上かかる場合は、Snowflake へのネットワーク接続を確認し、認証情報が正しいことを確認してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。