Claude CodeからSpannerを操作してみた
はじめに
MCP Toolbox for DatabasesをMCPサーバとして利用し、Spannerデータベースを操作する手順をまとめました。
基本的にはドキュメントのとおりですが、Claude CodeのVSCode拡張機能で使用する際につまった点なども記載しています。
前提
- Spannerデータベースが作成済みであること
- gcloudコマンドが実行できること
動作確認環境
- WSL2 Ubuntu (Windows 11)
- MCP Toolbox for Databases 0.16.0
- Claude Code for VS Code 2.0.5
1. Spannerを操作できる権限をもったアカウント作成
Spannerデータベースユーザーロール(roles/spanner.databaseUser
)または同等以上の権限が必要です。
例えば、特定のSpannerデータベースに対してのユーザーロールをサービスアカウントに付与する例は下記のようになります。
gcloud spanner databases add-iam-policy-binding [DATABASE_ID] \
--instance="[INSTANCE_ID]" \
--project="[SPANNER_PROJECT_ID]" \
--member="serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
--role="roles/spanner.databaseUser"
2. アプリケーションのデフォルト認証情報作成
MCPサーバがSpannerに接続する際に使用するアプリケーションのデフォルト認証情報(Application Default Credentials、通称ADC)を作成します。いくつか方法がありますが、今回はサービスアカウントの権限借用で作成しました。
まず、権限借用を可能にするためのロール(roles/iam.serviceAccountTokenCreator
)を自身のユーザアカウントに付与します。
gcloud iam service-accounts add-iam-policy-binding [SERVICE_ACCOUNT_EMAIL] \
--project="[SERVICE_ACCOUNT_PROJECT_ID]" \
--member="user:[YOUR_USER_EMAIL]" \
--role="roles/iam.serviceAccountTokenCreator"
次に、権限を借用してADCを作成します。
gcloud auth application-default login --impersonate-service-account [SERVICE_ACCOUNT_EMAIL]
3. MCP Toolbox for Databasesのインストール
Linuxにインストールする例は下記のようになります。バージョンは0.7.0以上が必要です。執筆現在で最新のバージョン0.16.0でも動作を確認できました。
export VERSION=0.16.0
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
その他のOSの場合はこちらを参照ください。
4. Claude CodeのMCPサーバ設定に追加
プロジェクトのルートにある.mcp.json
に設定を追加します。
command
にインストールしたtoolboxのパスを指定し、env
で操作対象のSpannerの情報を設定します。データベースの言語がGoogle標準SQLではなくPostgreSQLの場合は、args
のspanner
はspanner-postgres
としてください。
{
"mcpServers": {
"spanner": {
"command": "./PATH/TO/toolbox",
"args": ["--prebuilt","spanner","--stdio"],
"env": {
"SPANNER_PROJECT": "PROJECT_ID",
"SPANNER_INSTANCE": "INSTANCE_NAME",
"SPANNER_DATABASE": "DATABASE_NAME"
}
}
}
}
5. Claude CodeからSpannerを操作
Claude CodeをCLIで起動すると、先ほど追加したMCPサーバを使用するか尋ねられるので、許可すれば使用できるようになります。
注意点として、Claude Code for VS Codeから起動するだけだと設定を認識してくれなかったので、CLIで起動する必要がありそうです。
あらかじめ.claude/settings.local.json
に設定を追加してしまうという方法もあります。
{
"enabledMcpjsonServers": [
"spanner"
]
実際にClaude Codeに指示すると、テーブル名を取得してくれました!
使用可能なツールの詳細は下記ドキュメントを参照してください。
おわりに
Claude CodeからMCP Toolbox for Databases経由でSpannerを操作する方法をまとめました。
Claude Codeが既存のテーブル構造やデータを把握できるようになるため、機能追加や不具合調査などにも役立ちそうです。ただし、データの更新や削除も可能になるので、特に本番環境での利用には十分な注意が必要です。
Discussion