ClickHouse・DuckDB・BigQueryのMCP接続を比較する
ClickHouse・DuckDB・BigQueryをClaudeにつなぐMCPサーバーを、読み取り専用の既定値・結果の上限・料金・認証の4点で比べます。
ClickHouse・DuckDB・BigQueryは、どれもClaudeにつなげる分析(OLAP)向けのMCPサーバーがあります。ClickHouseとDuckDBは自分で起動するローカル型、BigQueryはGoogleが運用するリモート型です。読み取り専用は、ClickHouseとDuckDBでは既定で有効です。BigQueryではexecute_sql_readonlyだけを使う形に絞ります。
違いが出るのは運用の重心です。ClickHouseは自前クラスタかClickHouse Cloudかで課金の有無が変わります。DuckDBはローカルなら無料で、MotherDuckに繋ぐと有料階層に入ります。BigQueryはサーバーを自分でホストしません。
選ぶときの分かれ目は、分析データをどこに置いているかです。そこから先は、読み取り専用がどの層で効くか、1回の呼び出しで何が返るか、誰がどの権限を持つか、の3点が実運用の差になります。
3つのMCPサーバーの立ち位置が違う
ClickHouseのmcp-clickhouseとDuckDBのmcp-server-motherduckは、自分でプロセスを起動するローカル型です。BigQueryはGoogleがbigquery.googleapis.com/mcpで運用するリモートサーバーに繋ぐだけで、接続形式はStreamable HTTPです。
| 項目 | ClickHouse(mcp-clickhouse) | DuckDB(mcp-server-motherduck) | BigQuery(Google公式) |
|---|---|---|---|
| ホスト形態 | ClickHouse(mcp-clickhouse)自分で起動(自前クラスタ/ClickHouse Cloud接続) | DuckDB(mcp-server-motherduck)自分で起動(ローカルファイル/MotherDuck接続) | BigQuery(Google公式)Googleがマネージド運用 |
| 読み取り専用の既定値 | ClickHouse(mcp-clickhouse)既定で読み取り専用 | DuckDB(mcp-server-motherduck)v1系から既定で読み取り専用 | BigQuery(Google公式)ツールをexecute_sql_readonlyに限定すれば読み取り専用 |
| 料金がかかる場面 | ClickHouse(mcp-clickhouse)ClickHouse Cloud利用時のみ(自前OSSは無料) | DuckDB(mcp-server-motherduck)MotherDuck利用時のみ(ローカルDuckDBは無料) | BigQuery(Google公式)BigQuery自体の利用料金(常に発生) |
読み取り専用は3製品で別の層が守っている
「読み取り専用」と書いてあっても、どこで止めているかは3製品で違います。止める層が違えば、設定ミスをしたときに崩れ方も違います。
読み取り専用を担保する層
ClickHouse
既定でreadonly=1を付けてクエリを流します。書き込みはCLICKHOUSE_ALLOW_WRITE_ACCESS=trueで解禁します。
DuckDB
既定は読み取り専用で、--read-writeを付けたときだけ書き込めます。
BigQuery
読み取り専用のツールと書き込み可能なツールが別で、後者だけをdenyポリシーで止められます。
ClickHouseはもう一段あります。書き込みを許可しても、DROP・TRUNCATE・DELETE・UPDATEなどの破壊的な操作にはCLICKHOUSE_ALLOW_DROP=trueが別に要ります。READMEはこのゲートを「偶発事故を防ぐ努力目標のガードで、セキュリティ境界ではない」と明記しており、本当の境界はClickHouseユーザーに付けた権限(GRANT)です。書き込みモードで使うなら、SELECT, INSERT, CREATE TABLEのような必要最小限だけを与える専用ユーザーを作る構成が例示されています。
DuckDBは、読み取り専用でもローカルのファイルシステムにアクセスでき、DuckDBの設定も変えられます。READMEは、第三者に使わせる本番用途には読み取り専用だけでは足りないとして、MotherDuckのリモートMCPを案内しています。
BigQueryで読み取り専用でないツールはexecute_sqlだけです。execute_sql_readonlyはDML・DDL・PythonのUDFを受け付けません。片方に絞るなら、IAMのdenyポリシーでexecute_sqlを止めます。
1回の呼び出しで返る量と待てる時間
エージェントに大きな表を引かせると、結果が途中で切れたり、タイムアウトしたりします。上限は3製品でそれぞれ違います。
1回のクエリ呼び出しの既定の上限
ClickHouse
30秒
CLICKHOUSE_MCP_QUERY_TIMEOUTの既定。超えるとKILL QUERYで中断を試みる
DuckDB
1,024行
`--max-rows`の既定。文字数は50,000字までで、タイムアウトは無効
BigQuery
3分 / 3,000行
execute_sqlとexecute_sql_readonlyに共通
ClickHouseのlist_tablesは1ページ50件で、page_tokenを返して続きを取らせます。テーブル数が多いDBでも、エージェントが全件の定義を一度に抱え込まない作りです。
料金の発生条件
ClickHouseとDuckDBは、自前でホストする限りソフトウェア自体は無料です。課金が始まるのは、ClickHouse CloudかMotherDuckを使ったときです。
ClickHouse Cloudの料金ページには、使ったコンピュートとストレージだけを別々に計測して課金し、アイドル時はゼロまでスケールダウンする、とあります。
MotherDuckの料金ページには3階層があります。Liteは0ドルから始まり、内部の有効ユーザーは3人まで、ストレージ10GBが付きます。月10時間のPulseコンピュートも含まれます。Businessは組織あたり月250ドルに使用量が加わり、内部ユーザーは10人までです。読み取り専用のレプリカ(read-scaling replicas)もBusinessから入り、90日のスナップショット保持と99.9%のSLAも付きます。Enterpriseは個別見積もりです。
BigQueryにはオンデマンドの従量課金があります。クエリが読んだバイト数に応じて、価格ページでは1TiBあたり6.25ドルです。毎月最初の1TiBは無料です。
MCPサーバー自体には独自の割り当てがなく、中で呼ばれるBigQuery APIの割り当てがそのまま適用されます。
セットアップの手順はClaude BigQuery連携にあります。レポート作成の手順はBigQueryをClaudeで自然言語のまま分析するにあります。
エージェントに渡る道具の数と形
3製品とも、エージェントに見せるツールは少数です。ClickHouseはrun_query・list_databases・list_tablesの3本です。run_queryには、{name:Type}形式のプレースホルダーへ値を別渡しするparamsも使えます。同時に走らせるクエリのワーカー数は、CLICKHOUSE_MCP_MAX_WORKERSで決まり、既定は10です。結果のJSONでは、JavaScriptで安全に扱えない大きさの整数が文字列で返ります。
DuckDBはexecute_query・list_databases・list_tables・list_columnsの4本です。実行中にDBを切り替えるswitch_database_connectionは、--allow-switch-databasesを付けたときだけ現れます。
BigQueryは6本です。探索用はlist_dataset_ids・list_table_ids・get_dataset_info・get_table_infoの4本です。実行用がexecute_sqlとexecute_sql_readonlyです。
execute_sqlとexecute_sql_readonlyは、Googleドライブ上の外部テーブルを扱えません。execute_sql_readonlyはGraph Query Languageのクエリも扱えません。
ClickHouseには、本番のクエリを流す前の確認手段があります。DESCRIBE (<クエリ>)で結果の列の型を、EXPLAIN ESTIMATE <クエリ>でMergeTree系テーブルの推定読み取り行数を、クエリ本体を実行せずに取れます。どちらも読み取り専用の既定のままrun_queryで動きます。
認証と権限は何を用意すれば動くか
用意するものは、最短ならDuckDBのローカルファイルで、認証情報すら要りません。MotherDuckに繋ぐとmotherduck_tokenが必須です。MotherDuckを読み取り専用で使うなら、通常のトークンではなくread-scaling tokenが要ります。通常のトークンは--read-writeとセットでしか使えません。
ClickHouseは接続先のユーザー名とパスワードを環境変数で渡します。HTTP/SSEで公開する場合だけ、サーバー自身にも認証が必須です。選べるのは次の3方式で、どれも未設定だと起動が失敗します。
- 静的なベアラートークン(
CLICKHOUSE_MCP_AUTH_TOKEN) - OAuth/OIDC(Azure Entra・Google・GitHubなど)
- 開発専用の
CLICKHOUSE_MCP_AUTH_DISABLED=true
標準入出力で通信するstdioなら、この設定は要りません。
BigQueryの認証はOAuth 2.0とIAMで、スコープはhttps://www.googleapis.com/auth/bigqueryです。エージェント用には、人間とは別のIDを作ることが推奨されています。Google Cloudのプロジェクトに、次の3つのIAMロールを付けるところから始まります。
BigQuery MCPに必要なIAMロール
MCP Tool User
roles/mcp.toolUser。MCPのツール呼び出しそのものに必要です。BigQuery Job User
roles/bigquery.jobUser。クエリジョブを実行するために必要です。BigQuery Data Viewer
roles/bigquery.dataViewer。データを読むために必要です。
3製品の認証は仕組みごと別物で、BigQueryのIAMもMotherDuckのトークンもClickHouseには流用できません。乗り換えるたびに認証を作り直す前提で、移行の工数を見積もります。
実行環境の違いがチーム導入の手間を変える
ClickHouseとDuckDBの2つはuvxで起動するので、各メンバーのマシンにuvが要ります。BigQueryはリモートのサーバーに繋ぐだけなので、ローカルにランタイムは要りません。
チームで同じ基盤に繋ぐなら、BigQueryはロールを揃えれば全員が同じ手順になります。ClickHouseをチームで共有するなら、HTTP/SSEで起動して認証方式を統一する運用が現実的です。DuckDBは、--ephemeral-connectionsが既定で有効で、読み取り専用のローカルファイルではロックを保持しません。そのため書き込み用の接続が同じファイルを開いていても、並べて使えます。
実際に試す
ClickHouseは接続情報を渡すだけで、既定のまま読み取り専用として動きます。
claude mcp add clickhouse \
--env CLICKHOUSE_HOST="your-cluster.clickhouse.cloud" \
--env CLICKHOUSE_USER="default" \
--env CLICKHOUSE_PASSWORD="your-password" \
-- uvx mcp-clickhouseDuckDBのローカルファイルは、パスを渡すだけで読み取り専用です。
claude mcp add duckdb-ro \
-- uvx mcp-server-motherduck --db-path /absolute/path/to/analytics.duckdbClickHouse・DuckDB・BigQueryのどれを選ぶか
| 用途 | 向いている構成 | 理由 |
|---|---|---|
| 既存のClickHouseクラスタを分析に使いたい | 向いている構成mcp-clickhouse | 理由既定で読み取り専用、chDBでETLも省ける(CHDB_ENABLED=trueで有効化) |
| ローカルのCSV/Parquetをすぐ分析したい | 向いている構成mcp-server-motherduck(ローカル) | 理由無料で、読み取り専用が既定 |
| チームでデータを共有したい | 向いている構成MotherDuck(Business) | 理由内部ユーザー10人まで、読み取り専用のレプリカを使える |
| 既にBigQueryにデータがある | 向いている構成BigQuery公式MCPサーバー | 理由サーバー運用が不要で、権限はIAMで管理できる |
chDBは、組み込みのClickHouseエンジンです。READMEのrun_chdb_select_queryツールは、ファイルやURLから直接SQLを実行できます。既定では無効で、mcp-clickhouse[chdb]の追加インストールも必要です。
よくあるつまずき
MotherDuckの読み取り専用に通常のトークンを使う。READMEによると、MotherDuckへの読み取り専用接続にはread-scaling tokenが必要です。通常のトークンでは--read-writeを付けない限り接続できません。ローカルのDuckDBファイルにはトークン自体が要りません。
ClickHouse Cloudを、OSS版と同じ無料だと思い込む。OSS版と違い、Cloudは利用に応じた課金です。検証はOSS版、本番はCloud版と切り分けるなら、料金の違いも事前に見ておきます。
ClickHouseの書き込みを解禁したのに、DROPが通らない。 CLICKHOUSE_ALLOW_WRITE_ACCESS=trueだけでは、DROPやDELETEは止まったままです。CLICKHOUSE_ALLOW_DROP=trueも要ります。
BigQueryで大きな結果が返らない。上限は前の節の数値のとおりです。集計をSQL側で済ませ、結果を絞って返す書き方に寄せます。
まとめ
コストの発生点は、ClickHouseとDuckDBがクラウド版に繋いだとき、BigQueryは最初から、と分かれます。読み取り専用を信頼してよい範囲も、ClickHouseとDuckDBでは設定とユーザー権限、BigQueryではIAMと、守る層が違います。他の業務データベースの読み取り専用設定は、次の記事に並べています。