コンテンツに移動
デベロッパー

Google ADK と MCP の外部サーバーとのインテグレーション ガイド

2025年5月28日
Wei Yih Yap

Generative AI Field Solutions Architect

Alan Blount

Product Manager

Try Gemini 2.5

Our most intelligent model is now available on Vertex AI

Try now

※この投稿は米国時間 2025 年 5 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。

AI を活用したエージェントが有益かつ実用的なタスクを実行するには、ベースモデルの外部にあるツールや最新情報に確実にアクセスできる必要があります。Anthropic の Model Context Protocol(MCP)は、この点に対処するために設計されており、エージェントが応答や対応を通知するために必要とする重要な外部コンテキストを取得するための、標準化された方法を提供するものです。

これは企業データや一般公開ツールの活用が可能な高度なエージェントの構築とデプロイを必要とするデベロッパーにとっては不可欠です。しかし、Google のエージェント開発キット(ADK)で構築されたエージェントを統合して、MCP サーバー、特に外部でホストされているサーバーと効果的に通信させようとすると、インテグレーションに関する問題がいくつか生じる可能性があります。

今回は、外部の MCP サーバーに接続する ADK エージェントの開発について、まずは、サーバー送信イベント(SSE)の使用について説明します。MCP を活用して Wikipedia の記事にアクセスする ADK エージェントの例を紹介します。これは、外部の専門的なデータを取得する一般的なユースケースです。また、MCP 通信における SSE の後継として設計された次世代トランスポート プロトコルである Streamable HTTP も紹介します。

簡単な復習

始める前に、以下の用語を理解していることを確認します。

  • SSE : SSE を使用すると、サーバーは永続的な HTTP 接続を介してクライアントにデータを push できます。MCP の一般的な設定では、2 つの異なるエンドポイントを使用します。1 つは、クライアントがサーバーにリクエストを送信するためのエンドポイント(通常は HTTP POST 経由)で、もう 1 つは、クライアントが SSE 接続を確立して(HTTP GET)、ストリーミング応答とサーバー起動のメッセージを受信するための個別のエンドポイントです。

  • MCP: 大規模言語モデル(LLM)がエージェント ツールとして外部のデータソース、API、リソースとやり取りする方法を標準化するために設計されたオープン標準です。断片化されたカスタム インテグレーションの現在の状況を、普遍的で標準化されたフレームワークに置き換えることを目指しています。

  • Streamable HTTP: クライアントからサーバーへのリクエストの送信と、サーバーからクライアントへのレスポンスと通知の受信の両方に単一の HTTP エンドポイントを使用します。

ステップ 1: MCP サーバーを作成する

次に進む前に、次の Python パッケージを仮想環境にインストールしておく必要があります。このブログ記事では、uv ツールを使用します。

lang-py
読み込んでいます...

Python コード server.py についての説明は次のとおりです。

  • FastMCP を使用して MCP サーバーのインスタンスを作成します。

  • @mcp.tool で修飾された extract_wikipedia_article というツールを定義します。

  • MCP サーバーとのやり取りに一般的に使用される、リアルタイム通信を可能にする SSE トランスポート メカニズム SseServerTransport を構成します。

  • Starlette フレームワークを使用してウェブ アプリケーション インスタンスを作成し、messagesse の 2 つのルートを定義します。

  • SSE トランスポート プロトコルの詳細については、こちらをご覧ください。

lang-py
読み込んでいます...

サーバーを起動するには、コマンド uv run server.py を実行します。

追加のヒント: MCP Inspector を使用してサーバーをデバッグするには、コマンド uv run mcp dev server.py を実行します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/01-mcp-inspector.max-1800x1800.png

ステップ 2: ADK エージェントの作成時に MCP サーバーをアタッチする

次に、agent.py ファイルの Python コードについて説明します。

  • MCPToolset.from_serverSseServerParams を使用して、URI エンドポイントへの SSE 接続を確立します。このデモでは http://localhost:8001/sse を使用しますが、本番環境ではリモート サーバーを使用します。

  • ADK エージェントを作成し、get_tools_async を呼び出して MCP サーバーからツールを取得します。

lang-py
読み込んでいます...

ステップ 3: エージェントをテストする

ADK デベロッパー ツールを使用してエージェントをテストします。

次のディレクトリ構造を作成します。

lang-py
読み込んでいます...

__init__.py.env のコンテンツは次のとおりです。

lang-py
読み込んでいます...

lang-py
読み込んでいます...

次のコマンドで UI を起動します。

lang-py
読み込んでいます...

次に示すように、ADK デベロッパー ツールのインターフェースが開きます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/02-adk-web.max-1800x1800.png

Streamable HTTP

2025 年 3 月に MCP は、 Streamable HTTP という新しいトランスポート プロトコルをリリースしました。Streamable HTTP トランスポートを使用すると、サーバーが HTTP POST リクエストと GET リクエストを介して複数のクライアント接続を管理する独立したプロセスとして機能します。サーバーには、複数のメッセージをストリーミングするためのサーバー送信イベント(SSE)をオプションで実装できます。実装すると、基本的な MCP サーバーだけでなく、ストリーミングや、サーバーによって開始される通信を備えたより高度なサーバーのサポートも可能となります。

次のコードは、Streamable HTTP サーバーの実装方法を示しています。ここでは、コードを簡素化するために、extract_wikipedia_article ツールはダミー文字列を返します。

lang-py
読み込んでいます...

Streamable HTTP MCP サーバーを起動するには、次のコマンドを実行します。

lang-py
読み込んでいます...

MCP Inspector でデバッグするには、[Streamable HTTP] を選択し、MCP サーバー URL http://localhost:3000/mcp を入力します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/03-streamable-http.max-2100x2100.png

認証

MCP サーバーを本番環境にデプロイする場合、堅牢な認証は重要なセキュリティ上の考慮事項です。この分野は執筆時点で活発に開発が進められており、詳細については認証に関する MCP の仕様を参照することをおすすめします。

MCP と同様にエージェント ツールを生成できるエンタープライズ グレードの API ガバナンス システムの場合:

  • Apigee は、あらゆる API を一元管理し、完全な制御、バージョニング、ガバナンスを実現

  • API ハブは、あらゆる API とドキュメントのメタデータを整理

  • Application Integration は、ユーザー アクセス制御をサポートする多くの既存の API 接続をサポート

  • ADK は、これらの Google Cloud マネージド ツールを、ほぼ同じコード行数でサポート

使ってみる

今すぐ利用を開始するには、ADK のドキュメントをご覧ください。ADK を使用して、オープン コミュニティで利用可能な MCP サーバーにアクセスできる独自のエージェントを作成できます。

-生成 AI ソリューション アーキテクト、Wei Yih Yap

投稿先