1. はじめに
この Codelab では、MCP Toolbox for Databases を使用して BigQuery データセットを利用できるようにします。
この Codelab では、次の手順でアプローチします。
- 一般公開の BigQuery データセット プログラムから特定の BigQuery データセット(「Google Cloud リリースノート」)を特定します。
- BigQuery データセットに接続する MCP Toolbox for Databases を設定します。
- Agent Development Kit(ADK)を使用して、MCP Toolbox を利用して Google Cloud リリースノートに関するユーザーのクエリに回答するエージェントを開発する
演習内容
- MCP Toolbox for Databases を設定して、Google Cloud リリースノート(一般公開の BigQuery データセット)を他の MCP クライアント(IDE、ツールなど)の MCP インターフェースとして公開します。
学習内容
- BigQuery の一般公開データセットを探索し、特定のデータセットを選択します。
- MCP クライアントが利用できるようにする BigQuery 一般公開データセット用に MCP Toolbox for Databases を設定します。
- Agent Development Kit(ADK)を使用して、ユーザーのクエリに回答するエージェントを設計して開発する。
- ローカル環境でエージェントとデータベース向け MCP ツールボックスをテストします。
必要なもの
- Chrome ウェブブラウザ。
- ローカル Python 開発環境。
2. 始める前に
プロジェクトを作成する
- Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- Cloud Shell(Google Cloud で動作するコマンドライン環境)を使用します。この環境には bq がプリロードされています。Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。
![[Cloud Shell をアクティブにする] ボタンの画像](https://codelabs.developers.google.cn/static/mcp-toolbox-bigquery-dataset/img/91567e2f55467574.png?hl=ja)
- Cloud Shell に接続したら、次のコマンドを使用して、すでに認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されていることを確認します。
gcloud auth list
- Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
- プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <YOUR_PROJECT_ID>
gcloud コマンドとその使用方法については、ドキュメントをご覧ください。
3. Google リリースノート データセットと MCP クライアント
まず、Google Cloud の公式リリースノートのウェブページで定期的に更新される Google Cloud リリースノートを見てみましょう。以下にそのスクリーンショットを示します。

フィード URL を登録している場合でも、エージェント チャットでリリースノートについて簡単に質問できるとしたらどうでしょうか。たとえば、「Google Cloud リリースノートの最新情報を教えて」のような簡単なクエリです。
4. データベース向け MCP ツールボックス
データベース向け MCP ツールボックスは、エンタープライズ グレードと本番環境品質を念頭に置いて設計された、データベース用のオープンソース MCP サーバーです。これにより、接続プーリングや認証などの複雑な処理に対応して、ツールの開発をより簡単、迅速、安全に行うことができます。
ツールボックスを使用すると、エージェントがデータベース内のデータにアクセスできる生成 AI ツールを構築できます。Toolbox には次の機能があります。
- 開発の簡素化: 10 行未満のコードでツールをエージェントに統合し、複数のエージェントまたはフレームワーク間でツールを再利用し、ツールの新しいバージョンをより簡単にデプロイできます。
- パフォーマンスの向上: 接続プーリングや認証などのベスト プラクティス。
- セキュリティの強化: 統合認証によるデータへの安全なアクセス
- エンドツーエンドのオブザーバビリティ: OpenTelemetry の組み込みサポートによる、すぐに使用できる指標とトレース。
- ツールボックスを使用すると、IDE 内の AI アシスタントを含め、MCP 対応の AI アシスタントにデータベースを簡単に接続できます。
ツールボックスは、アプリケーションのオーケストレーション フレームワークとデータベースの間に配置され、ツールの変更、配布、呼び出しに使用されるコントロール プレーンを提供します。ツールを保存して更新する一元化された場所を提供することで、ツールの管理を簡素化します。これにより、エージェントとアプリケーション間でツールを共有し、必ずしもアプリケーションを再デプロイしなくてもツールを更新できます。

簡単にまとめると、次のようになります。
- MCP Toolbox は、バイナリ、コンテナ イメージとして提供されています。また、ソースからビルドすることもできます。
- tools.yaml ファイルで構成する一連のツールを公開します。ツールはデータソースに接続すると考えることができます。AlloyDB、BigQuery など、サポートされているさまざまなデータソースを確認できます。
- このツールボックスは MCP をサポートするようになったため、エージェント(IDE)で使用できる MCP サーバー エンドポイントが自動的に作成されます。また、エージェント開発キット(ADK)などのさまざまなフレームワークを使用してエージェント アプリケーションを開発する際に、これらのエンドポイントを使用することもできます。
このブログ投稿では、以下のハイライト表示された領域に焦点を当てます。

要約すると、BigQuery データセットへの接続方法を認識する構成を MCP Toolbox for Databases で作成します。次に、MCP ツールボックス エンドポイントと統合し、自然言語クエリを送信してデータセットに関する質問ができるエージェントをエージェント開発キット(ADK)を使用して開発します。これは、BigQuery データセットとの通信方法を認識し、クエリを実行するエージェント アプリケーションとして開発するものです。
5. Google Cloud リリースノートの BigQuery データセット
Google Cloud 一般公開データセット プログラムは、アプリケーションで使用できるさまざまなデータセットを提供するプログラムです。このようなデータセットの 1 つが、Google Cloud リリースノート データベースです。このデータセットは、Google Cloud の公式リリースノートのウェブページと同じ情報を提供し、一般公開のクエリ可能なデータセットとして利用できます。

テストとして、次の簡単なクエリを実行してデータセットを検証します。
SELECT
product_name,description,published_at
FROM
`bigquery-public-data`.`google_cloud_release_notes`.`release_notes`
WHERE
DATE(published_at) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY product_name,description,published_at
ORDER BY published_at DESC
これにより、過去 7 日間に公開されたリリースノート データセットのレコードのリストが取得されます。
これは、任意のデータセットと、必要なクエリとパラメータに置き換えてください。あとは、これを MCP Toolbox for Databases のデータソースとツールとして設定するだけです。その方法を見てみましょう。
6. MCP Toolbox for Databases のインストール
ローカルマシンでターミナルを開き、mcp-toolbox という名前のフォルダを作成します。
mkdir mcp-toolbox
次のコマンドを使用して mcp-toolbox フォルダに移動します。
cd mcp-toolbox
次のスクリプトを使用して、MCP Toolbox for Databases のバイナリ バージョンをインストールします。以下のコマンドは Linux 用ですが、Mac または Windows を使用している場合は、正しいバイナリをダウンロードしていることを確認してください。オペレーティング システムとアーキテクチャのリリース ページを確認し、正しいバイナリをダウンロードします。
export VERSION=0.22.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
これで、ツールボックスのバイナリ バージョンを使用する準備が整いました。次のステップでは、データソースやその他の構成を使用してツールボックスを構成します。
7. MCP Toolbox for Databases を構成する
次に、MCP Toolbox for Database で必要な tools.yaml ファイルで BigQuery データセットとツールを定義する必要があります。tools.yaml ファイルは、Toolbox を構成する主な方法です。
同じフォルダ(mcp-toolbox)に tools.yaml という名前のファイルを作成します。その内容は次のとおりです。
Cloud Shell で使用できる nano エディタを使用できます。nano コマンドは「nano tools.yaml」です。
YOUR_PROJECT_ID の値は、実際の Google Cloud プロジェクト ID に置き換えてください。
sources:
my-bq-source:
kind: bigquery
project: YOUR_PROJECT_ID
tools:
search_release_notes_bq:
kind: bigquery-sql
source: my-bq-source
statement: |
SELECT
product_name,description,published_at
FROM
`bigquery-public-data`.`google_cloud_release_notes`.`release_notes`
WHERE
DATE(published_at) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY product_name,description,published_at
ORDER BY published_at DESC
description: |
Use this tool to get information on Google Cloud Release Notes.
toolsets:
my_bq_toolset:
- search_release_notes_bq
ファイルについて簡単に説明します。
- ソースは、ツールが操作できるさまざまなデータソースを表します。ソースは、ツールが操作できるデータソースを表します。tools.yaml ファイルの sources セクションで、ソースをマップとして定義できます。通常、移行元構成には、データベースに接続して操作するために必要な情報が含まれます。この例では、BigQuery ソース
my-bq-sourceを定義しています。Google Cloud プロジェクト ID を指定する必要があります。詳細については、ソースのリファレンスをご覧ください。 - ツールは、エージェントが実行できるアクション(ソースへの読み取りや書き込みなど)を定義します。ツールは、エージェントが実行できるアクション(SQL ステートメントの実行など)を表します。tools.yaml ファイルの tools セクションで、ツールをマップとして定義できます。通常、ツールは処理対象のソースを必要とします。この例では、1 つのツール
search_release_notes_bqを定義します。これは、最初の手順で定義した BigQuery ソースmy-bq-sourceを参照します。また、AI エージェント クライアントで使用されるステートメントと指示も含まれています。詳細については、ツールのリファレンスをご覧ください。 - 最後に、ツールセットがあります。ツールセットを使用すると、一緒に読み込むツール グループを定義できます。これは、エージェントまたはアプリケーションに基づいてさまざまなグループを定義する場合に役立ちます。この例では、ツールセット定義があり、現在、定義した既存のツール
search_release_notes_bqが 1 つだけ定義されています。複数のツールセットを作成して、それぞれに異なるツールの組み合わせを設定できます。
そのため、現在、クエリに従って過去 7 日間のリリースノートを取得するツールが 1 つだけ定義されています。パラメータとの組み合わせも可能です。
MCP Toolbox for Databases の BigQuery データソース構成で、構成の詳細(ソース、ツール)を確認します。
8. データベース向け MCP ツールボックスのテスト
mcp-toolbox フォルダの tools.yaml ファイルを使用して、Toolbox をダウンロードして構成しました。まずローカルで実行してみましょう。
次のコマンドを実行します。
./toolbox --tools-file="tools.yaml"
実行が成功すると、次のような出力例でサーバーが起動します。
2025-12-09T08:27:02.777619+05:30 INFO "Initialized 1 sources: my-bq-source"
2025-12-09T08:27:02.777695+05:30 INFO "Initialized 0 authServices: "
2025-12-09T08:27:02.777707+05:30 INFO "Initialized 1 tools: search_release_notes_bq"
2025-12-09T08:27:02.777716+05:30 INFO "Initialized 2 toolsets: my_bq_toolset, default"
2025-12-09T08:27:02.777719+05:30 INFO "Initialized 0 prompts: "
2025-12-09T08:27:02.777723+05:30 INFO "Initialized 1 promptsets: default"
2025-12-09T08:27:02.77773+05:30 WARN "wildcard (`*`) allows all origin to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-origins` flag to prevent DNS rebinding attacks"
2025-12-09T08:27:02.777839+05:30 INFO "Server ready to serve!"
MCP Toolbox サーバーはデフォルトでポート 5000 で実行されます。ポート 5000 がすでに使用されている場合は、次のコマンドに示すように、別のポート(7000 など)を使用してください。以降のコマンドでは、5000 ポートではなく 7000 を使用してください。
./toolbox --tools-file "tools.yaml" --port 7000
Cloud Shell を使用してテストしてみましょう。
Cloud Shell で [ウェブでプレビュー] をクリックします。

[ポートを変更] をクリックし、下図のようにポートを 5000 に設定して、[変更してプレビュー] をクリックします。

次のような出力が表示されます。

ブラウザの URL の末尾に次の文字列を追加します。
/api/toolset
現在構成されているツールが表示されます。出力例を以下に示します。
{
"serverVersion": "0.22.0+binary.linux.amd64.1a6dfe8d37d0f42fb3fd3f75c50988534dbc1b85",
"tools": {
"search_release_notes_bq": {
"description": "Use this tool to get information on Google Cloud Release Notes.\n",
"parameters": [],
"authRequired": []
}
}
}
データベース向け MCP ツールボックスの UI を使用してツールをテストする
ツールボックスは、パラメータの変更、ヘッダーの管理、呼び出しの実行など、ツールを直接操作するための視覚的なインターフェース(ツールボックス UI)を提供します。これらはすべてシンプルなウェブ UI 内で行われます。
これをテストする場合は、Toolbox Server の起動に使用した前のコマンドを --ui オプション付きで実行します。
これを行うには、実行中のデータベース サーバーの MCP ツールボックスの以前のインスタンスをシャットダウンし、次のコマンドを実行します。
./toolbox --tools-file "tools.yaml" --ui
理想的には、サーバーがデータソースに接続し、ツールセットとツールを読み込んだことを示す出力が表示されます。以下にサンプル出力を示します。Toolbox UI が起動して実行中であることがわかります。
2025-12-09T08:28:07.479989+05:30 INFO "Initialized 1 sources: my-bq-source"
2025-12-09T08:28:07.480065+05:30 INFO "Initialized 0 authServices: "
2025-12-09T08:28:07.480079+05:30 INFO "Initialized 1 tools: search_release_notes_bq"
2025-12-09T08:28:07.480087+05:30 INFO "Initialized 2 toolsets: my_bq_toolset, default"
2025-12-09T08:28:07.48009+05:30 INFO "Initialized 0 prompts: "
2025-12-09T08:28:07.480094+05:30 INFO "Initialized 1 promptsets: default"
2025-12-09T08:28:07.4801+05:30 WARN "wildcard (`*`) allows all origin to access the resource and is not secure. Use it with cautious for public, non-sensitive data, or during local development. Recommended to use `--allowed-origins` flag to prevent DNS rebinding attacks"
2025-12-09T08:28:07.480214+05:30 INFO "Server ready to serve!"
2025-12-09T08:28:07.480218+05:30 INFO "Toolbox UI is up and running at: http://127.0.0.1:5000/ui"
UI の URL をクリックし、URL の末尾に /ui があることを確認します。次のような UI が表示されます。

左側の [ツール] オプションをクリックして、構成済みのツールを表示します。この例では、下図のように 1 つのツール(search_release_notes_bq)のみが表示されます。

ツール(search_release_notes_bq)をクリックするだけで、ツールをテストするためのページが表示されます。パラメータを指定する必要がないため、[Run Tool] をクリックするだけで結果を確認できます。実行例を以下に示します。

データベース向け MCP ツールキットには、ツールの検証とテストを行うための Pythonic な方法も記載されています。この方法については、こちらをご覧ください。このセクションはスキップして、次のセクションでこれらのツールを利用する Agent Development Kit(ADK)について説明します。
9. Agent Development Kit(ADK)を使用してエージェントを作成する
Agent Development Kit(ADK)をインストールする
Cloud Shell で新しいターミナルタブを開き、次のように my-agents という名前のフォルダを作成します。my-agents フォルダにも移動します。
mkdir my-agents
cd my-agents
次に、次のように venv を使用して仮想 Python 環境を作成します。
python -m venv .venv
次のように仮想環境をアクティブにします。
source .venv/bin/activate
次のように、langchain 依存関係とともに ADK と MCP Toolbox for Databases パッケージをインストールします。
pip install google-adk toolbox-core
これで、次のように adk ユーティリティを呼び出すことができます。
adk
コマンドのリストが表示されます。
$ adk
Usage: adk [OPTIONS] COMMAND [ARGS]...
Agent Development Kit CLI tools.
Options:
--help Show this message and exit.
Commands:
api_server Starts a FastAPI server for agents.
create Creates a new app in the current folder with prepopulated agent template.
deploy Deploys agent to hosted environments.
eval Evaluates an agent given the eval sets.
run Runs an interactive CLI for a certain agent.
web Starts a FastAPI server with Web UI for agents.
最初のエージェント アプリケーションを作成する
次に、adk を使用して、次の adk create コマンドで Google Cloud リリースノート エージェント アプリケーションのスキャフォールディングを作成します。アプリ名は **(gcp-releasenotes-agent-app)**です。
adk create gcp-releasenotes-agent-app
手順に沿って、以下を選択します。
- ルート エージェントのモデルを選択するための Gemini モデル。
- バックエンドに Vertex AI を選択します。
- デフォルトの Google プロジェクト ID とリージョンが表示されます。デフォルト自体を選択します。
Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)
Choose model (1, 2): 1
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2
You need an existing Google Cloud account and project, check out this link for details:
https://google.github.io/adk-docs/get-started/quickstart/#gemini---google-cloud-vertex-ai
Enter Google Cloud project ID [YOUR_GOOGLE_PROJECT_ID]:
Enter Google Cloud region [us-central1]:
Agent created in ../my-agents/gcp-releasenotes-agent-app:
- .env
- __init__.py
- agent.py
エージェントのデフォルト テンプレートと必要なファイルが作成されたフォルダを確認します。
最初は .env ファイルです。内容は次のとおりです。
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION
これらの値は、Vertex AI を介して Gemini を使用することと、Google Cloud プロジェクト ID とロケーションのそれぞれの値を示しています。
次に、フォルダをモジュールとしてマークし、agent.py ファイルからエージェントをインポートする単一のステートメントを含む __init__.py ファイルがあります。
from . import agent
最後に、agent.py ファイルを見てみましょう。内容は次のとおりです。
from google.adk.agents import Agent
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
)
これは、ADK で記述できる最もシンプルなエージェントです。ADK ドキュメントのページでは、エージェントは特定の目標を達成するために自律的に動作するように設計された自己完結型の実行単位です。エージェントは、タスクの実行、ユーザーとのやり取り、外部ツールの利用、他のエージェントとの連携を行うことができます。
具体的には、LLMAgent(通常は Agent というエイリアスが付けられます)は、大規模言語モデル(LLM)をコアエンジンとして使用して、自然言語の理解、推論、計画、回答の生成を行い、どのように進めるか、どのツールを使用するかを動的に決定します。そのため、柔軟な言語中心のタスクに最適です。LLM エージェントの詳細については、こちらをご覧ください。
これで、Agent Development Kit(ADK)を使用して基本エージェントを生成するためのスキャフォールディングが完了しました。次に、エージェントを MCP ツールボックスに接続して、そのツールを使用してユーザーからのクエリ(この場合は Google Cloud リリースノート)に回答できるようにします。
10. エージェントをツールに接続する
このエージェントをツールに接続します。ADK のコンテキストでは、ツールは AI エージェントに提供される特定の機能を表します。これにより、エージェントはコアとなるテキスト生成と推論の能力を超えてアクションを実行し、世界とやり取りできます。
この例では、MCP Toolbox for Databases で構成したツールをエージェントに装備します。
agent.py ファイルを次のコードで変更します。コードではデフォルトのポート 5000 を使用していますが、別のポート番号を使用している場合は、そのポート番号を使用してください。
from google.adk.agents import Agent
from toolbox_core import ToolboxSyncClient
toolbox = ToolboxSyncClient("http://127.0.0.1:5000")
# Load all the tools
tools = toolbox.load_toolset('my_bq_toolset')
root_agent = Agent(
name="gcp_releasenotes_agent",
model="gemini-2.0-flash",
description=(
"Agent to answer questions about Google Cloud Release notes."
),
instruction=(
"You are a helpful agent who can answer user questions about the Google Cloud Release notes. Use the tools to answer the question"
),
tools=tools,
)
これで、MCP Toolbox for Databases で構成された BigQuery データセットから実際のデータを取得するエージェントをテストできます。
手順は次のとおりです。
Cloud Shell のターミナルの 1 つで、MCP Toolbox for Databases を起動します。前回のテストで、ポート 5000 でローカルに実行されている可能性があります。そうでない場合は、次のコマンド(mcp-toolbox フォルダから)を実行してサーバーを起動します。
./toolbox --tools_file "tools.yaml"
理想的には、サーバーがデータソースに接続し、ツールセットとツールを読み込んだことを示す出力が表示されます。
MCP サーバーが正常に起動したら、別のターミナルで、次の adk run(my-agents フォルダ内)コマンドを使用してエージェントを起動します。必要に応じて、adk web コマンドを使用することもできます。
$ adk run gcp-releasenotes-agent-app/
Log setup complete: /tmp/agents_log/agent.20250423_170001.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
Running agent gcp_releasenotes_agent, type exit to exit.
[user]: get me the google cloud release notes
[gcp_releasenotes_agent]: Here are the Google Cloud Release Notes.
Google SecOps SOAR: Release 6.3.49 is being rolled out to the first phase of regions. This release contains internal and customer bug fixes. Published: 2025-06-14
Compute Engine: Dynamic NICs let you add or remove network interfaces to or from an instance without having to restart or recreate the instance. You can also use Dynamic NICs when you need more network interfaces. The maximum number of vNICs for most machine types in Google Cloud is 10; however, you can configure up to 16 total interfaces by using Dynamic NICs. Published: 2025-06-13
Compute Engine: General purpose C4D machine types, powered by the fifth generation AMD EPYC processors (Turin) and Google Titanium, are generally available. Published: 2025-06-13
Google Agentspace: Google Agentspace Enterprise: App-level feature management. As an Agentspace administrator, you can choose to turn the following features on or off for your end users in the web app: Agents gallery, Prompt gallery, No-code agent, NotebookLM Enterprise. Published: 2025-06-13
Cloud Load Balancing: Cloud Load Balancing supports load balancing to multi-NIC instances that use Dynamic NICs. This capability is in Preview. Published: 2025-06-13
Virtual Private Cloud: Dynamic Network Interfaces (NICs) are available in Preview. Dynamic NICs let you update an instance to add or remove network interfaces without having to restart or recreate the instance. Published: 2025-06-13
Security Command Center: The following Event Threat Detection detectors for Vertex AI have been released to Preview:
- `Persistence: New Geography for AI Service`
- `Privilege Escalation: Anomalous Multistep Service Account Delegation for AI Admin Activity`
- `Privilege Escalation: Anomalous Multistep Service Account Delegation for AI Data Access`
- `Privilege Escalation: Anomalous Service Account Impersonator for AI Admin Activity`
- `Privilege Escalation: Anomalous Service Account Impersonator for AI Data Access`
- `Privilege Escalation: Anomalous Impersonation of Service Account for AI Admin Activity`
- `Persistence: New AI API Method`
......
......
エージェントは、MCP Toolbox for Databases(search_release_notes_bq)で構成したツールを利用し、BigQuery データセットからデータを取得して、それに応じてレスポンスをフォーマットします。
11. 完了
お疲れ様でした。MCP Toolbox for Databases を構成し、MCP クライアント内からアクセスできるように BigQuery データセットを構成できました。