
ClaudeとBigQueryをMCPサーバーで接続してみる
MCPは、Anthropicが作ったLLM(大規模言語モデル)と外部データソースやツールとの連携を容易にするためのプロトコルです。MCPサーバーを介して、LLMは様々なデータソースにアクセスし、必要な情報を取得したり、外部ツールを呼び出して特定のタスクを実行したりできます。
- MCPホスト:MCPを介してデータにアクセスしたいClaude Desktop、IDE、AIツールなどのプログラム
- MCPクライアント:サーバーとの1:1接続を維持するプロトコルクライアント
- MCPサーバー:標準化されたモデルコンテキストプロトコルを通じて特定の機能を公開する軽量プログラム
- ローカルデータソース:MCPサーバーが安全にアクセスできるコンピューターのファイル、データベース、およびサービス
- リモートサービス:MCPサーバーが接続できるインターネット(APIなど)を介して利用可能な外部システム
Anthropic社が開発したLLMのClaudeと、ローカルデータソースとしてBigQueryの接続を試しいきたいと思います。
ドキュメントを見ると自身で実装することもできますが、今回は実装はしません。
LLMを使って自然言語でBigqueryのデータを取り扱いできるのかどうかを試します。
Claude Desktopのインストール
MCPをサポートするアプリケーションで手頃なのがClaude Desktopです。
ダウンロードページからダウンロードします。
※ ClaudeのWebアプリケーションは現在MCPをサポートしていません。MCP機能は、デスクトップアプリケーションでのみ使用できます
Bigqueryに接続するMCPサーバー
awesome-mcp-servers ※1 に載っている
- Google BigQuery統合のためのサーバー実装で、直接的なBigQueryデータベースアクセスとクエリ機能を提供
を使って接続していくようにしてみます。
前提条件
- Node.js 14 以上
- BigQuery が有効になっている Google Cloudプロジェクト
- Google Cloud CLIがインストールされているか、サービスアカウントのキーファイル
- Claude Desktop
今回はサービスアカウントのキーファイルを利用したマニュアルセットアップを行います。
githubのページにはクイックセットアップの方法もあるので、そちらを使う場合は参照してください。
BigQueryのパーミッション
このMCPサーバーを使うため、以下の権限が必要です。
- roles/bigquery.user (recommended)
OR both: - roles/bigquery.dataViewer
- roles/bigquery.jobUser
サービスアカウントのロールを割り当てる画面で設定します。
サービスアカウントのキーファイル
サービスアカウントの鍵のページから追加します。
キーのタイプはJSONにしておきます。
作成後はダウンロードします。
Claude Desktop(MCPクライアント)の設定
Claude Desktopの設定からclaude_desktop_config.jsonに追加
Claude Desktopの設定画面にある開発者のタブを開き、構成を編集ボタンを押します。
claude_desktop_config.jsonというファイルが保存されているフォルダが開くので、そこにある対象ファイルをエディタで開きます。
そしてMCPサーバーの設定を保存します。
{
"mcpServers": {
"bigquery": {
"command": "npx",
"args": [
"-y",
"@ergut/mcp-bigquery-server",
"--project-id",
"your-project-id",
"--location",
"us-central1",
"--key-file",
"/path/to/service-account-key.json"
]
}
}
}
- project-id: Google Cloudのproject ID
- location: BigQueryのロケーション。デフォルトは 'us-central1' です。
- key-file: ダウンロードしたサービスアカウントキーJSONファイルへのパス
アプリの再起動からの接続確認
設定を保存後、Claude Desktopアプリを再起動します。
設定画面でrunningとなっていればMCPサーバーとの接続設定はOKです。
チャット欄からも利用可能なMCPサーバーを確認できました。
チャット経由でBigQueryに接続してみる
接続しているBigQueryのプロジェクトは何?
と聞いてみると、初回は以下のように接続するかどうか聞かれます。
許可をするとLLMがMCPサーバーを介して質問内容を実行してくれました。
クエリを実行してくれます。
SalesforceのデータをBigQueryに同期しているのですが、ユーザー数を聞いてみました。
ざっくりとした質問でも、トライアンドエラーを繰り返して実行してくれますね。
テーブルやカラム名の指定をするとそこから情報を取得してくれるようになります。
2024年のキャンペーンメンバーの数を月別グラフにして
といったようなことも行なってくれました。
MCPサーバーを介してClaudeとBigQueryを接続し、チャット経由でデータを扱ってみました。
BigQueryだけでなく、その他いろいろなデータソースにもこの共通プロトコルにより接続できるようになるので、ローカルな情報を組み合わせて分析したり、売上予測,レポーティング,FAQ作成なんかも捗る可能性ありますね。