mcpField
M
Mcp Snowflake Server Nsp

Mcp Snowflake Server Nsp

ローカル
github.com/nsphungデータベース22 日前に更新

Mcp Snowflake Server Nsp について

Mcp Snowflake Server Nsp は、AI アシスタントから Snowflake の SQL クエリ、スキーマ探索、データ分析を利用できる MCP サーバーです。複数の認証方式に対応し、書き込み操作を制御できます。

主な機能

  1. 01SELECT クエリと任意の書き込み実行
  2. 02データベース、スキーマ、テーブル構造の探索
  3. 03パスワード、鍵、ブラウザー、OAuth による認証
  4. 04TOML ファイルで複数環境の接続を管理
  5. 05テーブルスキーマを MCP リソースとして事前読み込み
  6. 06対象オブジェクトやツールの除外

活用シーン

  1. 01AI アシスタント経由で Snowflake のデータを検索
  2. 02データベース、スキーマ、テーブル構造の確認
  3. 03本番環境と開発環境の接続切り替え
  4. 04書き込み制限や対象オブジェクトの非表示

MCP 対応

MCP サーバーは、Snowflake のクエリ、スキーマ探索、分析ツールをクライアントに提供し、洞察や事前読み込みしたテーブルスキーマをリソースとして公開できます。書き込みツールは既定で無効です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"snowflake-server-nsphung": {
"command": "uvx",
"args": [
"mcp-snowflake-server-nsp"
],
"env": {
"SNOWFLAKE_ACCOUNT": "<SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
"SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
"SNOWFLAKE_WAREHOUSE": "<SNOWFLAKE_WAREHOUSE>",
"SNOWFLAKE_DATABASE": "<SNOWFLAKE_DATABASE>",
"SNOWFLAKE_SCHEMA": "<SNOWFLAKE_SCHEMA>",
"SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
"SNOWFLAKE_AUTHENTICATOR": "<SNOWFLAKE_AUTHENTICATOR>",
"SNOWFLAKE_PRIVATE_KEY_FILE": "<SNOWFLAKE_PRIVATE_KEY_FILE>",
"SNOWFLAKE_PRIVATE_KEY_FILE_PWD": "<SNOWFLAKE_PRIVATE_KEY_FILE_PWD>",
"SNOWFLAKE_OAUTH_CLIENT_ID": "<SNOWFLAKE_OAUTH_CLIENT_ID>",
"SNOWFLAKE_OAUTH_CLIENT_SECRET": "<SNOWFLAKE_OAUTH_CLIENT_SECRET>",
"SNOWFLAKE_OAUTH_TOKEN_REQUEST_URL": "<SNOWFLAKE_OAUTH_TOKEN_REQUEST_URL>",
"SNOWFLAKE_OAUTH_SCOPE": "<SNOWFLAKE_OAUTH_SCOPE>",
"SNOWFLAKE_TOKEN": "<SNOWFLAKE_TOKEN>"
}
}
}
}
起動コマンドuvx mcp-snowflake-server-nsp
設定が必要な環境変数
SNOWFLAKE_ACCOUNTSnowflake account identifier
SNOWFLAKE_USERSnowflake username
SNOWFLAKE_PASSWORDシークレットPassword (not required for key-pair / SSO)
SNOWFLAKE_WAREHOUSEVirtual warehouse to use
SNOWFLAKE_DATABASEDefault database
SNOWFLAKE_SCHEMADefault schema
SNOWFLAKE_ROLERole to assume
SNOWFLAKE_AUTHENTICATORシークレットAuthentication method. Defaults to 'snowflake' if not set. Valid values: snowflake, externalbrowser, snowflake_jwt, oauth, oauth_client_credentials
SNOWFLAKE_PRIVATE_KEY_FILEシークレットAbsolute path to .p8 private key file
SNOWFLAKE_PRIVATE_KEY_FILE_PWDシークレットPassphrase for encrypted private key
SNOWFLAKE_OAUTH_CLIENT_IDシークレットOAuth 2.0 client ID (required for oauth_client_credentials authenticator)
SNOWFLAKE_OAUTH_CLIENT_SECRETシークレットOAuth 2.0 client secret (required for oauth_client_credentials authenticator)
SNOWFLAKE_OAUTH_TOKEN_REQUEST_URLシークレットOAuth 2.0 token endpoint URL (required for oauth_client_credentials authenticator)
SNOWFLAKE_OAUTH_SCOPEシークレットOAuth 2.0 scope (optional, e.g. session:role:MY_ROLE)
SNOWFLAKE_TOKENシークレットPre-fetched OAuth bearer token (required for oauth authenticator)

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

パッケージ
pypimcp-snowflake-server-nsp0.14.4
ocidocker.io/nsphung/mcp-snowflake-server-nsp:0.14.4

ツール

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

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

詳細

mcp-snowflake-server-nsp-banner

PyPI • codecov • PyPI Downloads • Docker Pulls • License: MIT

Testtest codecov Docker Image Check
Lintlint Ruff Checked with mypy prek oxfmt
MetaCode of Conduct MCP Compatible made-with-python python-3.13+
SecurityCodeRabbit Pull Request Reviews CodeQL OpenSSF Scorecard Socket Badge
Best PracticesOpenSSF Best Practices OpenSSF Baseline
DocumentationAsk DeepWiki

Snowflake MCP Server NSP

Model Context Protocol (MCP) サーバー/MCP サーバーです。AI アシスタントを Snowflake に接続し、LLM クライアントから SQL クエリ、スキーマの探索、データの分析情報の取得を直接行えるようにします。

主な特長:

  • 複数の認証方式に対応:パスワード、キー ペア、外部ブラウザー、OAuth 2.0(クライアント認証情報とベアラートークン)、TOML 接続ファイル
  • TOML による複数接続の設定 — 1 つのファイルで production、staging、development 環境を管理できます
  • 書き込み安全ガード — 書き込み操作はデフォルトで無効になっており、明示的に有効にする必要があります
  • 除外パターン — 検出対象からデータベース、スキーマ、テーブルを除外できます
  • --exclude-json-results フラグ — LLM のコンテキストウィンドウの使用量を削減します
  • --exclude_tools によるツールの選択的な除外
  • プリフェッチモード — テーブルスキーマを MCP リソースとして事前に読み込みます
  • 強化されたイメージを使用する Docker サポート(DHI、root 以外のユーザー、実行時のシェルなし)

目次


クイックスタート

最も手早く試すには、TOML 接続ファイルと uvx を使用します。

# 1. Create a connections file
cat > ~/snowflake_connections.toml << 'EOF'
[myconn]
account = "your_account"
user = "your_user"
password = "your_password"
warehouse = "COMPUTE_WH"
database = "MY_DB"
schema = "PUBLIC"
role = "MYROLE"
EOF

# 2. Run the server
uvx --python=3.13 --from mcp-snowflake-server-nsp mcp_snowflake_server \
  --connections-file ~/snowflake_connections.toml \
  --connection-name myconn
Claude Code

snowflake_connections.toml を使用して、MCP クライアントの設定(例:claude_desktop_config.json)に追加します。

"mcpServers": {
  "snowflake": {
    "command": "uvx",
    "args": [
      "--python=3.13",
      "--from", "mcp-snowflake-server-nsp",
      "mcp_snowflake_server",
      "--connections-file", "/absolute/path/to/snowflake_connections.toml",
      "--connection-name", "myconn"
    ]
  }
}
Visual Studio Code(VSCode)

uvx — Install in VS Code Install in VS Code Insiders

Docker — Install in VS Code (Docker) Install in VS Code Insiders (Docker)

または、.env ファイルを使用して(認証を参照)、MCP クライアントの設定(例:.vscode/mcp.json)に手動で追加します。

"snowflake": {
      // Snowflake MCP server
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from", "mcp-snowflake-server-nsp",
        "--python=3.13",
        "mcp_snowflake_server"
      ],
      "envFile": "${workspaceFolder}/.env"
    }
OpenCode

.env ファイルを使用して(認証を参照)、MCP クライアントの設定(例:opencode.jsonc)に追加します。

"snowflake": {
  "type": "local",
  "command": [
    "uvx",
    "--from",
    "mcp-snowflake-server-nsp",
    "--python=3.13",
    "mcp_snowflake_server",
  ],
  "enabled": true,
  "timeout": 300000,
}

コンポーネント

リソース
URI説明
memo://insightsappend_insight を通じて追加されたデータインサイトを集約する、継続的に更新されるメモです。
context://table/{table_name}(プリフェッチモードのみ) 列やコメントを含む、テーブルごとのスキーマ概要です。

ツール
クエリツール
ツール説明必要なオプション
read_querySELECT クエリを実行します。入力: query(文字列)。—
write_queryINSERT、UPDATE、または DELETE クエリを実行します。入力: query(文字列)。--allow_write
create_tableCREATE TABLE 文を実行します。入力: query(文字列)。--allow_write
スキーマツール
ツール説明入力
list_databasesSnowflake インスタンス内のすべてのデータベースを一覧表示します。—
list_schemasデータベース内のすべてのスキーマを一覧表示します。database(文字列)
list_tablesデータベースとスキーマ内のすべてのテーブルを一覧表示します。database、schema(文字列)
describe_tableテーブルの列(名前、型、NULL 許容、デフォルト値、コメント)を説明します。database.schema.table 形式の table_name
分析ツール
ツール説明入力
append_insightデータのインサイトを memo://insights リソースに追加します。insight(文字列)

認証

パスワード

環境変数または CLI フラグで認証情報を設定します(設定リファレンスを参照):

SNOWFLAKE_USER="[email protected]"
SNOWFLAKE_ACCOUNT="myaccount"
SNOWFLAKE_AUTHENTICATOR="snowflake"
SNOWFLAKE_PASSWORD="secret"
SNOWFLAKE_WAREHOUSE="COMPUTE_WH"
SNOWFLAKE_DATABASE="MY_DB"
SNOWFLAKE_SCHEMA="PUBLIC"
SNOWFLAKE_ROLE="MYROLE"
キーペア

RSA(RS256)と ECDSA(ES256、ES384、ES512)の秘密鍵がサポートされています(ECDSA には snowflake-connector-python ≥ 4.5.0 が必要です)。

SNOWFLAKE_USER="[email protected]"
SNOWFLAKE_ACCOUNT="myaccount"
SNOWFLAKE_AUTHENTICATOR="snowflake_jwt"
SNOWFLAKE_PRIVATE_KEY_FILE="/absolute/path/to/key.p8"
SNOWFLAKE_PRIVATE_KEY_FILE_PWD="passphrase"  # Optional — only if key is encrypted
SNOWFLAKE_WAREHOUSE="COMPUTE_WH"
SNOWFLAKE_DATABASE="MY_DB"
SNOWFLAKE_SCHEMA="PUBLIC"
SNOWFLAKE_ROLE="MYROLE"

または CLI で指定します:--private_key_file /path/to/key.p8 --private_key_file_pwd passphrase

外部ブラウザー
SNOWFLAKE_AUTHENTICATOR="externalbrowser"

または TOML 接続エントリで指定します:authenticator = "externalbrowser"

OAuth 2.0 クライアントクレデンシャル

OAuth 2.0 クライアントクレデンシャルフローを使用して、クライアント ID とシークレットで認証します(ユーザーによる操作は不要です):

SNOWFLAKE_AUTHENTICATOR="oauth_client_credentials"
SNOWFLAKE_ACCOUNT="myaccount"
SNOWFLAKE_OAUTH_CLIENT_ID="your_client_id"
SNOWFLAKE_OAUTH_CLIENT_SECRET="your_client_secret"
SNOWFLAKE_OAUTH_TOKEN_REQUEST_URL="https://your-idp.example.com/oauth/token"
SNOWFLAKE_OAUTH_SCOPE="session:role:MY_ROLE"  # Optional
SNOWFLAKE_WAREHOUSE="COMPUTE_WH"
SNOWFLAKE_DATABASE="MY_DB"
SNOWFLAKE_SCHEMA="PUBLIC"
SNOWFLAKE_ROLE="MYROLE"
OAuth ベアラートークン

事前に取得した OAuth ベアラートークンを使用します:

SNOWFLAKE_AUTHENTICATOR="oauth"
SNOWFLAKE_ACCOUNT="myaccount"
SNOWFLAKE_TOKEN="eyJhbGciOiJSUzI1NiJ9..."
SNOWFLAKE_WAREHOUSE="COMPUTE_WH"
SNOWFLAKE_DATABASE="MY_DB"
SNOWFLAKE_SCHEMA="PUBLIC"
SNOWFLAKE_ROLE="MYROLE"
TOML 接続ファイル(推奨)

複数の環境を 1 つのファイルで管理できます。完全なテンプレートについては、example_connections.tomlを参照してください。

[production]
account = "your_account"
user = "your_user"
password = "your_password"
authenticator = "snowflake"
warehouse = "COMPUTE_WH"
database = "PROD_DB"
schema = "PUBLIC"
role = "ACCOUNTADMIN"

[development]
account = "your_account"
user = "dev_user"
authenticator = "externalbrowser"
warehouse = "DEV_WH"
database = "DEV_DB"
schema = "PUBLIC"
role = "DEVELOPER"

[reporting]
account = "your_account"
user = "reporting_user"
authenticator = "snowflake_jwt"
private_key_file = "/path/to/private_key.pem"
private_key_file_pwd = "passphrase"  # Optional
warehouse = "REPORTING_WH"
database = "REPORTING_DB"
schema = "REPORTS"
role = "REPORTING_ROLE"

[analytics_oauth]
account = "your_account"
authenticator = "oauth_client_credentials"
oauth_client_id = "your_client_id"
oauth_client_secret = "your_client_secret"
oauth_token_request_url = "https://your-idp.example.com/oauth/token"
oauth_scope = "session:role:ANALYTICS_ROLE"  # Optional
warehouse = "ANALYTICS_WH"
database = "ANALYTICS_DB"
schema = "PUBLIC"
role = "ANALYTICS_ROLE"

--connections-file でファイルを指定し、--connection-name でプロファイルを選択します。両方のフラグをセットで指定する必要があります。


インストール

パッケージは PyPI で mcp-snowflake-server-nsp として公開されています。

コントリビュートまたはソースからの実行をお考えですか? ローカル開発環境のセットアップ、テストコマンド、フォーマット、ソースからの Docker イメージのビルドについては、CONTRIBUTING.mdを参照してください。


UVX を使用する場合
TOML 設定(推奨)
"mcpServers": {
  "snowflake_production": {
    "command": "uvx",
    "args": [
      "--python=3.13",
      "--from", "mcp-snowflake-server-nsp",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "production"
      // Optional flags — see Configuration Reference
    ]
  },
  "snowflake_staging": {
    "command": "uvx",
    "args": [
      "--python=3.13",
      "--from", "mcp-snowflake-server-nsp",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "staging"
    ]
  }
}
個別のパラメーター
"mcpServers": {
  "snowflake": {
    "command": "uvx",
    "args": [
      "--python=3.13",
      "--from", "mcp-snowflake-server-nsp",
      "mcp_snowflake_server",
      "--account", "your_account",
      "--warehouse", "your_warehouse",
      "--user", "your_user",
      "--password", "your_password",
      "--role", "your_role",
      "--database", "your_database",
      "--schema", "your_schema"
      // Optional: "--private_key_file", "/absolute/path/key.p8"
      // Optional: "--private_key_file_pwd", "passphrase"
      // Optional flags — see Configuration Reference
    ]
  }
}

Docker Hub を使用する場合

イメージは Docker Hub で公開されているため、ビルド手順は不要です:

docker pull nsphung/mcp-snowflake-server-nsp

注: MCP stdio トランスポート用に stdin を開いたままにするには、-i(--interactive)が必要です。-d(デタッチ)は使用しないでください。

Claude Desktop — claude_desktop_config.json

.env ファイルを使用する場合は、認証を参照してください:

"mcpServers": {
  "snowflake": {
    "command": "docker",
    "args": [
      "run", "--rm", "-i",
      "--env-file", "/absolute/path/to/.env",
      "nsphung/mcp-snowflake-server-nsp"
    ]
  }
}

TOML 接続ファイルを使用する場合:

"mcpServers": {
  "snowflake": {
    "command": "docker",
    "args": [
      "run", "--rm", "-i",
      "-v", "/path/to/snowflake_connections.toml:/app/snowflake_connections.toml:ro",
      "nsphung/mcp-snowflake-server-nsp",
      "--connections-file", "/app/snowflake_connections.toml",
      "--connection-name", "production"
    ]
  }
}
VS Code — .vscode/mcp.json

.env ファイルを使用する場合:

"snowflake": {
  "type": "stdio",
  "command": "docker",
  "args": [
    "run", "--rm", "-i",
    "nsphung/mcp-snowflake-server-nsp"
  ],
  "envFile": "${workspaceFolder}/.env"
}

TOML 接続ファイルを使用する場合:

"snowflake": {
  "type": "stdio",
  "command": "docker",
  "args": [
    "run", "--rm", "-i",
    "-v", "/path/to/snowflake_connections.toml:/app/snowflake_connections.toml:ro",
    "nsphung/mcp-snowflake-server-nsp",
    "--connections-file", "/app/snowflake_connections.toml",
    "--connection-name", "production"
  ]
}
OpenCode — opencode.jsonc
"snowflake": {
  "type": "local",
  "command": [
    "docker", "run", "--rm", "-i",
    "--env-file", "/absolute/path/to/.env",
    "nsphung/mcp-snowflake-server-nsp"
  ],
  "enabled": true,
  "timeout": 300000
}

設定リファレンス

すべての接続パラメーターは、環境変数(SNOWFLAKE_<PARAM_UPPER>)としても設定できます。

フラグ環境変数デフォルト説明
--accountSNOWFLAKE_ACCOUNT—Snowflake アカウント識別子
--userSNOWFLAKE_USER—Snowflake のユーザー名
--passwordSNOWFLAKE_PASSWORD—パスワード(キー ペア/SSO の場合は不要)
--warehouseSNOWFLAKE_WAREHOUSE—使用する仮想ウェアハウス
--databaseSNOWFLAKE_DATABASE(必須)デフォルトのデータベース
--schemaSNOWFLAKE_SCHEMA(必須)デフォルトのスキーマ
--roleSNOWFLAKE_ROLE—引き受けるロール
--private_key_fileSNOWFLAKE_PRIVATE_KEY_FILE—RSA または ECDSA(ES256/384/512)秘密鍵ファイル(.p8 / .pem)への絶対パス
--private_key_file_pwdSNOWFLAKE_PRIVATE_KEY_FILE_PWD—暗号化された秘密鍵のパスフレーズ
--connections-file——TOML 接続ファイルへのパス
--connection-name——TOML ファイル内の接続プロファイル名(--connections-file と併用する場合は必須)
--allow_write—falsewrite_query および create_table ツールを有効にする
--prefetch / --no-prefetch—falseテーブルスキーマを context://table/* リソースとして事前読み込みする(list_tables / describe_table を無効にします)
--exclude_tools—[]無効にするツール名をスペース区切りで指定
--exclude-json-results—falseレスポンスから埋め込み JSON リソースを省略する(コンテキストウィンドウの使用量を削減します)
--log_dir——ログファイルの出力先ディレクトリ
--log_level—INFOログの詳細度:DEBUG、INFO、WARNING、ERROR、CRITICAL

除外パターン

runtime_config.json を編集して、すべての検出ツールからデータベース、スキーマ、またはテーブルを除外します。パターンは大文字と小文字を区別せず、部分文字列として照合されます。

{
  "exclude_patterns": {
    "databases": ["temp"],
    "schemas": ["temp", "information_schema"],
    "tables": ["temp"]
  }
}

サーバーは起動時に、作業ディレクトリからこのファイルを自動的に読み込みます。


ライセンス

このプロジェクトは MIT License の下でライセンスされています。全文については LICENSE ファイルを参照してください。


フォークと帰属表示

このリポジトリは isaacwasserman/mcp-snowflake-server のフォークです。

MseeP.ai セキュリティ評価バッジ

  • 上流の作者および貢献者は、それぞれの貢献に関する著作権を保持します。
  • フォーク固有の変更は nsphung が管理しています。
  • 主な変更点の概要は NOTICE で確認できます。

コメント

MCP は初めてですか?

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

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