🤖

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の場合は、argsspannerspanner-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に指示すると、テーブル名を取得してくれました!

使用可能なツールの詳細は下記ドキュメントを参照してください。
https://googleapis.github.io/genai-toolbox/resources/tools/spanner/

おわりに

Claude CodeからMCP Toolbox for Databases経由でSpannerを操作する方法をまとめました。

Claude Codeが既存のテーブル構造やデータを把握できるようになるため、機能追加や不具合調査などにも役立ちそうです。ただし、データの更新や削除も可能になるので、特に本番環境での利用には十分な注意が必要です。

レスキューナウテックブログ

Discussion