🚀 シンプルなSnowflake MCPサーバー
企業プロキシの背後で動作するシンプルなSnowflake MCPサーバーです(既存のサーバーでは数分で設定できなかったので、自分でサーバーを作りました)。まだ良いか悪いかはわかりませんが、現時点では十分です。
🚀 クイックスタート
✨ 主要特性
サーバーは、Snowflakeとやり取りするための以下のMCPツールを公開しています。
- execute-snowflake-sql:SnowflakeでSQLクエリを実行し、結果(辞書のリスト)を返します。
- list-snowflake-warehouses:Snowflake上の利用可能なデータウェアハウス(DWH)を一覧表示します。
- list-databases:アクセス可能なすべてのSnowflakeデータベースを一覧表示します。
- list-views:データベースとスキーマ内のすべてのビューを一覧表示します。
- describe-view:ビューの詳細(列、SQL)を提供します。
- query-view:オプションの行制限でビューをクエリし(マークダウン形式の結果)、結果を返します。
- execute-query:読み取り専用モード(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)またはそうでない場合(
read_onlyがfalseの場合)でSQLクエリを実行し、結果をマークダウン形式で返します。
📦 インストール
Claude Desktop
- MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
開発/未公開サーバーの設定
"mcpServers": {
"simple_snowflake_mcp": {
"command": "uv",
"args": [
"--directory",
".", // GitHubでは現在のディレクトリを使用
"run",
"simple_snowflake_mcp"
]
}
}
公開サーバーの設定
"mcpServers": {
"simple_snowflake_mcp": {
"command": "uvx",
"args": [
"simple_snowflake_mcp"
]
}
}
Dockerセットアップ
前提条件
- システムにDockerとDocker Composeがインストールされていること
- Snowflakeの資格情報
Dockerでのクイックスタート
- リポジトリをクローンする
git clone <your-repo> cd simple_snowflake_mcp - 環境変数を設定する
cp .env.example .env # .envを編集してSnowflakeの資格情報を入力する - Docker Composeでビルドして実行する
# Dockerイメージをビルドする docker-compose build # サービスを起動する docker-compose up -d # ログを表示する docker-compose logs -f
Dockerコマンド
- Docker Composeを直接使用する場合:
# イメージをビルドする
docker-compose build
# 本番モードで起動する
docker-compose up -d
# 開発モードで起動する(ソースコードをマウントしてライブコード変更を可能にする)
docker-compose --profile dev up simple-snowflake-mcp-dev -d
# ログを表示する
docker-compose logs -f
# サービスを停止する
docker-compose down
# クリーンアップ(コンテナ、イメージ、ボリュームを削除する)
docker-compose down --rmi all --volumes --remove-orphans
- 提供されているMakefileを使用する場合(WindowsユーザーはWSLで
makeを使用するか、Windows用のmakeをインストールしてください):
# 利用可能なすべてのコマンドを表示する
make help
# ビルドして起動する
make build
make up
# 開発モードで起動する
make dev-up
# ログを表示する
make logs
# クリーンアップする
make clean
Docker設定
Dockerセットアップには以下が含まれています。
- Dockerfile:Python 3.11 slimベースイメージを使用したマルチステージビルド
- docker-compose.yml:環境変数をサポートするサービス定義
- .dockerignore:最適化されたビルドコンテキスト
- Makefile:Docker操作のための便利なコマンド
環境変数
すべてのSnowflake設定は環境変数を介して設定できます。
SNOWFLAKE_USER:Snowflakeのユーザー名(必須)SNOWFLAKE_PASSWORD:Snowflakeのパスワード(必須)SNOWFLAKE_ACCOUNT:Snowflakeのアカウント識別子(必須)SNOWFLAKE_WAREHOUSE:ウェアハウス名(オプション)SNOWFLAKE_DATABASE:デフォルトのデータベース(オプション)SNOWFLAKE_SCHEMA:デフォルトのスキーマ(オプション)MCP_READ_ONLY:読み取り専用モードに設定する場合は「TRUE」(デフォルト: TRUE)
開発モード
開発用には、ソースコードをマウントする開発プロファイルを使用します。
docker-compose --profile dev up simple-snowflake-mcp-dev -d
これにより、Dockerイメージを再ビルドすることなくコードを変更できます。
💻 使用例
新機能: Snowflake SQL実行
サーバーは、SnowflakeでSQLクエリを実行して結果を返すMCPツールexecute-snowflake-sqlを公開しています。
使い方
execute-snowflake-sql MCPツールを、実行するSQLクエリを含むsql引数とともに呼び出します。結果は辞書のリスト(行ごとに1つ)として返されます。
基本的な使用法
{
"name": "execute-snowflake-sql",
"arguments": { "sql": "SELECT CURRENT_TIMESTAMP;" }
}
結果はMCP応答で返されます。
VS Codeでのインストールと設定
- プロジェクトをクローンし、依存関係をインストールする
git clone <your-repo> cd simple_snowflake_mcp python -m venv .venv .venv/Scripts/activate # Windows pip install -r requirements.txt # 利用可能な場合は `uv sync --dev --all-extras` - Snowflakeアクセスを設定する
.env.exampleを.envにコピーする(またはルートに.envを作成する)し、資格情報を入力する:SNOWFLAKE_USER=... SNOWFLAKE_PASSWORD=... SNOWFLAKE_ACCOUNT=... # SNOWFLAKE_WAREHOUSE オプション: Snowflakeウェアハウス名 # SNOWFLAKE_DATABASE オプション: デフォルトのデータベース名 # SNOWFLAKE_SCHEMA オプション: デフォルトのスキーマ名 # MCP_READ_ONLY=true|false オプション: 読み取り専用モードを強制する場合はtrue/false
- VS CodeをMCPデバッグ用に設定する
.vscode/mcp.jsonファイルがすでに存在します:{ "servers": { "simple-snowflake-mcp": { "type": "stdio", "command": ".venv/Scripts/python.exe", "args": ["-m", "simple_snowflake_mcp"] } } }- コマンドパレットを開き(Ctrl+Shift+P)、
MCP: Start Serverと入力してsimple-snowflake-mcpを選択します。
- 使用法
- 公開されているMCPツールを使用してSnowflakeをクエリできます(list-databases、list-views、describe-view、query-view、execute-queryなど)。
- 詳細な例については、MCPプロトコルのドキュメントを参照してください:https://github.com/modelcontextprotocol/create-python-server
サポートされているMCP関数
サーバーは、Snowflakeとやり取りするための以下のMCPツールを公開しています。
- execute-snowflake-sql:SnowflakeでSQLクエリを実行し、結果(辞書のリスト)を返します。
- list-snowflake-warehouses:Snowflake上の利用可能なデータウェアハウス(DWH)を一覧表示します。
- list-databases:アクセス可能なすべてのSnowflakeデータベースを一覧表示します。
- list-views:データベースとスキーマ内のすべてのビューを一覧表示します。
- describe-view:ビューの詳細(列、SQL)を提供します。
- query-view:オプションの行制限でビューをクエリし(マークダウン形式の結果)、結果を返します。
- execute-query:読み取り専用モード(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)またはそうでない場合(
read_onlyがfalseの場合)でSQLクエリを実行し、結果をマークダウン形式で返します。
各ツールの呼び出し形式については、「使い方」セクションまたはMCPドキュメントを参照してください。
開発
ビルドと公開
パッケージを配布用に準備するには、以下の手順を実行します。
- 依存関係を同期し、ロックファイルを更新する:
uv sync
- パッケージの配布物をビルドする:
uv build
これにより、dist/ディレクトリにソースとホイールの配布物が作成されます。
3. PyPIに公開する:
uv publish
注: PyPIの資格情報は環境変数またはコマンドフラグを介して設定する必要があります。
- トークン:
--tokenまたはUV_PUBLISH_TOKEN - またはユーザー名/パスワード:
--username/UV_PUBLISH_USERNAMEおよび--password/UV_PUBLISH_PASSWORD
デバッグ
MCPサーバーは標準入出力を介して実行されるため、デバッグは困難な場合があります。最高のデバッグ体験を得るために、MCP Inspectorの使用を強くお勧めします。
以下のコマンドを使用して、npmを介してMCP Inspectorを起動できます。
npx @modelcontextprotocol/inspector uv --directory . run simple-snowflake-mcp
起動すると、Inspectorはブラウザでアクセスしてデバッグを開始できるURLを表示します。








