mcpField
M
mcp-clickhouse

mcp-clickhouse

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

mcp-clickhouse について

mcp-clickhouseは、ClickHouseの調査、クエリ、管理を行うクライアント向けのMCPサーバーです。SQL文を分類し、アクセスモードに応じて操作を制限し、破壊的操作には別途制御を設けます。

主な機能

  1. 01スキーマとテーブル統計の確認
  2. 02行数上限付き読み取りクエリ
  3. 03読み書きモードでの書き込み実行
  4. 04管理者モードによる破壊的SQLの制限
  5. 05データベース許可リストと保護対象
  6. 06ドライランとJSON監査ログ

活用シーン

  1. 01ClickHouseのスキーマやテーブルサイズを確認
  2. 02行数を制限して分析データを検索
  3. 03実行中のクエリとサーバーメトリクスを確認
  4. 04データベース変更を制限または事前確認

MCP 対応

MCPクライアントにClickHouseの調査、クエリ、監視、管理ツールを公開します。利用可能な操作は、設定されたアクセスモードとSQL分類によって決まります。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dockndevai-mcp-clickhouse": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-clickhouse"
],
"env": {
"CLICKHOUSE_URL": "<CLICKHOUSE_URL>",
"CLICKHOUSE_USER": "<CLICKHOUSE_USER>",
"CLICKHOUSE_PASSWORD": "<CLICKHOUSE_PASSWORD>",
"CLICKHOUSE_MODE": "<CLICKHOUSE_MODE>"
}
}
}
}
起動コマンドnpx -y @dockndevai/mcp-clickhouse
設定が必要な環境変数
CLICKHOUSE_URLClickHouse HTTP endpoint.
CLICKHOUSE_USERClickHouse user (prefer a read-only user).
CLICKHOUSE_PASSWORDシークレットClickHouse password.
CLICKHOUSE_MODEAccess mode: read-only | read-write | admin.

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

パッケージ
npm@dockndevai/mcp-clickhouse0.3.0

ツール

9

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

mcp-clickhouse

CI License: MIT npm

ClickHouse 向けの Model Context Protocol サーバーです。MCP 対応クライアント(Claude Desktop、Claude Code など)から、スキーマの調査、分析クエリの実行、データベースの管理を行えます。動作はすべてフラグで制御されます。

セキュリティモデルはステートメントを認識します。すべての SQL ステートメントを読み取り、書き込み、破壊的操作に分類し、現在のアクセスモードに照らして許可を判定します。読み取り専用モードでは、ClickHouse 自身の readonly=1 設定でもクエリを実行します。

機能

  • 調査と監視 — データベース、テーブル、カラム、SHOW CREATE、テーブル統計(パーツ/行数/バイト数)、実行中のクエリ、サーバーメトリクス、クラスターのトポロジー。
  • 読み取りクエリ — 読み取りステートメントのみを受け付け、CLICKHOUSE_MAX_ROWS を上限とする query ツール。
  • 管理 — INSERT/CREATE/ALTER(読み書き)用の execute ツールと、DROP/TRUNCATE/DELETE(管理者用)。いずれも分類に基づいて許可を判定します。
  • アクセスモード — read-only → read-write → admin。各モードは階層化されており、自身のレベルを超えるステートメントを許可しません。
  • セキュリティフラグ — データベースの許可リスト、保護対象データベース、破壊的操作の許可、行数上限、ドライラン、JSON 監査ログ(以下を参照)。

セキュリティモデル

懸念事項フラグデフォルト効果
サーバーに許可する操作CLICKHOUSE_MODEread-onlyread-only では読み取りツールのみを公開し(query では SELECT 以外を拒否)、read-write では書き込み用の execute を追加し、admin では破壊的ステートメントを許可します。
対象となるデータベースCLICKHOUSE_DATABASE_ALLOWLIST(すべて)設定すると、その他のデータベースに対する操作を拒否します。
常に読み取り専用とするデータベースCLICKHOUSE_PROTECTED_DATABASESsystem,information_schema読み取り可能ですが、変更できません。
破壊的な SQL の実行CLICKHOUSE_ALLOW_DELETEfalseDROP/TRUNCATE/DELETE/…には、この設定と admin モードの両方が必要です。
結果サイズの上限CLICKHOUSE_MAX_ROWS1000モデルに返す行数の上限です。
実行せずにプレビューCLICKHOUSE_DRY_RUNfalse書き込み/破壊的ステートメントの妥当性を確認して意図をログに記録した後、戻ります。
監査ログCLICKHOUSE_AUDIT_LOGtrue保護対象の操作ごとに、JSON 形式の1行を stderr に出力します。
対話形式の確認(自動)—破壊的な操作と影響の大きい操作を実行する前に、MCP のエリシテーションを通じて人間に承認を求めます。エリシテーションに対応していないクライアントでは、*_ALLOW_* の許可設定にフォールバックします。

ステートメントの分類は src/sql.ts にあり、安全側に倒す設計です。ALTER … DELETE/UPDATE は破壊的操作として扱われ、解析できないものもすべて破壊的操作として扱われます。

ツール

読み取り(read-only+):list_databases、list_tables、describe_table、show_create_table、table_stats、running_queries、server_metrics、cluster_info、query

書き込み/管理者(read-write+):execute — 分類後に単一のステートメントを実行します。書き込みには read-write モードが必要で、破壊的ステートメントには admin モードと CLICKHOUSE_ALLOW_DELETE が必要です。

クイックスタート — エージェントに追加する

npm で @dockndevai/mcp-clickhouse として公開されています。クローンやビルドは不要です。MCP クライアントが必要に応じて npx で実行します。まずは read-only モードで開始してください。すべての変数については .env.example を、クライアントごとの詳しいガイドについては docs/CLIENTS.md を参照してください。

Claude Code(CLI)

claude mcp add clickhouse -e CLICKHOUSE_URL="http://localhost:8123" -e CLICKHOUSE_USER="default" -e CLICKHOUSE_MODE="read-only" -- npx -y @dockndevai/mcp-clickhouse

Claude Desktop · Cursor · Windsurf — claude_desktop_config.json、.cursor/mcp.json、または ~/.codeium/windsurf/mcp_config.json に同じブロックを記述します:

{
  "mcpServers": {
    "clickhouse": {
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_URL": "http://localhost:8123",
        "CLICKHOUSE_USER": "default",
        "CLICKHOUSE_MODE": "read-only"
      }
    }
  }
}

OpenAI Codex CLI — ~/.codex/config.toml に記述します:

[mcp_servers.clickhouse]
command = "npx"
args = ["-y", "@dockndevai/mcp-clickhouse"]
env = { CLICKHOUSE_URL = "http://localhost:8123", CLICKHOUSE_USER = "default", CLICKHOUSE_MODE = "read-only" }

VS Code(GitHub Copilot、エージェントモード) — .vscode/mcp.json に記述します:

{
  "servers": {
    "clickhouse": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_URL": "http://localhost:8123",
        "CLICKHOUSE_USER": "default",
        "CLICKHOUSE_MODE": "read-only"
      }
    }
  }
}

プロンプトの例

  • 「analytics データベースで最も大きなテーブルは何ですか?」
  • 「events のスキーマを表示して、今週の日次件数をクエリしてください。」
  • 「現在実行中で、最も多くのメモリを使用しているクエリはどれですか?」

ソースから実行する(開発)

上記の公開パッケージを推奨します。クローンから実行する場合:

npm install
npm run build
node dist/index.js   # with the environment variables set

開発

npm run dev
npm test          # SQL classification + security policy (30 tests)
npm run typecheck

公開

このサーバーには、公式 MCP レジストリ用の server.json と、npm の所有権検証用の mcpName が含まれています。npm への公開と、MCP レジストリ、Smithery、Glama、Cursor、PulseMCP への掲載については、PUBLISHING.md を参照してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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