HAQM Web Services ブログ
HAQM Bedrock Agents で MCP サーバーを活用する
本記事は 2025 年 4 月 1 日に AWS Machine Learning Blog で公開された Harness the power of MCP servers with HAQM Bedrock Agents を翻訳したものです。翻訳はプロフェッショナルサービスの松永大河が担当しました。
AI エージェントは大規模言語モデル (LLM) の機能を拡張する技術で、操作全体のコンテキストを維持し外部システムとの連携、複雑なワークフローなどを行います。HAQM Bedrock Agents は、API 連携とナレッジベースの拡張を通じて、目標達成のためのタスクを完了するために、基盤モデル (FM) とデータソース、アプリケーション、ユーザー入力を連携させることでこの機能を実現します。しかし、これまでこれらのエージェントを多様なエンタープライズシステムに接続する際、連携ごとにカスタムコードと継続的なメンテナンスが必要となり、開発のボトルネックが生じていました。これは組織のデジタルエコシステム全体でコンテキストに応じた AI 支援の提供を遅らせる標準化の課題でした。この問題は、LLM がデータソースやツールに接続するための標準化された方法を提供する Model Context Protocol (MCP) を使用することで解決できます。
現在、MCP は、エージェントに対してさまざまなタスクを実行するために利用できるツールのリストへの標準化されたアクセスを提供しています。MCP はマーケットプレイスを通じてエージェントとツールの見つけやすさを向上させ、エージェントがコンテキストを共有することでより効率的な連携のための共通のワークスペースを実現し、業界全体でエージェントの相互連携を拡大できるようになります。
本ブログでは、MCP を使用してデータソースにアクセスし、生成 AI アプリケーションを迅速に構築できる HAQM Bedrock エージェントの作成方法をご紹介します。HAQM Bedrock Agents を使用すると、この例のように MCP ベースのツールでエージェントを即座に構築することができます。
MCP を通じて AWS Cost Explorer、HAQM CloudWatch、Perplexity AI に接続し、HAQM Web Service (AWS) のコストを分析するエージェントを構築する例を紹介します。このブログで参照されているコードを使用して、エージェントを他の MCP サーバー に接続し、ビジネス上の課題に対処することができます。私たちは、エージェントが幅広いタスクを実行するために拡大し続ける MCP サーバーのリストにアクセスし利用できる世界を構想しています。
Model Context Protocol
Anthropic によって開発されたオープンプロトコルである MCP は、AI モデルをほぼすべてのデータソースやツールに接続するための標準化された方法を提供します。クライアント・サーバーアーキテクチャを使用することで、MCP は開発者が軽量な MCP サーバーを通じてデータを公開し、これらのサーバーに接続する MCP クライアントとして AI アプリケーションを構築することを可能にします。このアーキテクチャを通じて、MCP はユーザーが必要な情報やツールにシームレスにアクセスできる、より強力なコンテキスト認識型 AI エージェントを構築することを可能にします。外部システムに接続する場合でも、内部のデータストアやツールに接続する場合でも、MCP を使用して同じ方法ですべてのインターフェースを実現できるようになりました。MCP のクライアント・サーバーアーキテクチャにより、MCP サーバーの更新に応じてアプリケーションコードを変更することなく新しい機能にエージェントがアクセスできるようになります。
MCP アーキテクチャ
MCP は、以下のコンポーネントを含む クライアント・サーバーアーキテクチャ を使用しており、次の図に示されています:
- Host: **** MCP ホストは、Claude Desktop、統合開発環境 (IDE)、その他の AI アプリケーションなど、MCP プロトコルを通じてデータにアクセスするプログラムまたは AI ツールです。
- Client: サーバーと 1 対 1 の接続を行うプロトコルクライアントです。
- Server: MCP プロトコルを通じて機能を提供する軽量なプログラムです。
- Local Data Sources: MCP サーバーが安全にアクセスできるデータベース、ローカルデータソース、およびサービスです。
- Remote Services: MCP サーバーが接続できる、API を介してインターネット経由で利用可能な外部システムです。
MCP サーバーを活用する HAQM Bedrock エージェントの設定方法について説明します。
HAQM Bedrock エージェントでの MCP の使用
本ブログでは、MCP サーバーを Action Groups として HAQM Bedrock エージェントに接続し、エージェントがユーザーから提供されたタスクを実行するために使用する方法をステップバイステップで説明します。
AgentInlineSDK は、インラインエージェントを作成する簡単な方法を提供します。この SDK には MCP サーバーから提供されるツールに直接アクセスできる、組み込みの MCP クライアント実装が含まれています。この SDK を利用しない場合、以下の機能を実現するためのコードを作成しメンテナンスする必要があります:
- レスポンスストリームの解析
- リターンコントロールフローの処理
- エージェントとのやり取りにおける状態管理
- API 呼び出しの制御
エージェントを作成する際には、開発者はエージェントとの通信が必要な各 MCP サーバーを MCP クライアントに設定します。エージェントは呼び出されると、ユーザーのタスクに必要なツールを判断し、MCP サーバーツールが必要な場合は、対応する MCP クライアントを使用してそのサーバーにツールの実行を要求します。
このワークフローをオーケストレーションするために、HAQM Bedrock Agents の return control 機能を活用します。次の図は、2 つのツールを使用するリクエストを処理するエージェントの一連のフローを示しています。最初のフローでは Lambda ベースのアクションが実行され、2 番目のフローではエージェントが MCP サーバーを使用します。
ユースケース: HAQM Bedrock を含む各種 AWS サービスの利用料金管理を変革する
HAQM Bedrock エージェントが MCP サーバーをどのように使用できるか、サンプルのユースケースを見ていきましょう。「過去数週間の Bedrock の支出を知りたい」や「先月の EC2 コストをリージョンとインスタンスタイプ別に教えて」といった質問をして、ダッシュボードの数値データではなく、人が読みやすい形式で分析結果を得ることを想像してみてください。このシステムはあなたの意図を解釈し、詳細な内訳、トレンド分析、可視化、またはコスト削減の推奨事項など、必要とする情報を正確に提供します。人はデータそのものではなくインサイトに興味があるため、これはとても役立つ振る舞いです。これは、AWS の支出データを取得するための自作の MCP サーバーと、データを解釈するための Perplexity AI の MCP サーバーという 2 つの MCP サーバーを使用して実現できます。これらの 2 つの MCP サーバーを インライン HAQM Bedrock エージェントのアクショングループとして追加します。これにより、AWS の支出管理方法を変革する AI エージェントが実現します。このポストのすべてのコードはGitHubリポジトリで利用可能です。
注意: このユースケースでは支出データを Perplexity の API に入力していますが、実際に支出データなどの機微情報を利用する Agent を作成する際には扱うデータに問題がないか十分に検討をしてください。
インラインエージェントを使用してこのエージェントを作成する方法を見ていきましょう。インラインエージェントを使用すると、実行時に HAQM Bedrock エージェントを動的に定義および設定できます。事前設定されたコントロールプレーンの構成に依存することなく、必要に応じて FM、指示、アクショングループ、ガードレール、ナレッジベースを指定できるため、エージェントの機能に対してより大きな柔軟性と制御が可能になります。なお、InvokeAgent API で RETURN_CONTROL
を使用することで、インラインエージェントを使用せずにこの動作を実現することもできます。
HAQM Bedrock Agents における MCP コンポーネント
- ホスト: これは HAQM Bedrock インラインエージェントです。このエージェントは、ユーザーが AWS の支出に関する質問をした際に、RETURN_CONTROL を通じて呼び出すことができる MCP クライアントをアクショングループとして追加します。
- クライアント: それぞれのサーバーと 1 対 1 の接続を確立する 2 つのクライアントを作成します。具体的には、特定のコストサーバーパラメータを持つ Cost Explorer クライアントと、Perplexity サーバーパラメータを持つ Perplexity AI クライアントです。
- サーバー: マシン上でローカルに実行され、標準入出力を介してアプリケーションと通信する 2 つの MCP サーバーを作成します (あるいは、リモート MCP サーバーと通信するようにクライアントを設定することもできます)。
- Cost Explorer、HAQM CloudWatch Logs (HAQM Bedrock モデル呼び出しのログデータ用) および AWS 支出データを取得するための MCP サーバー。
- AWS 支出データを解釈するための Perplexity AI MCP サーバー。
- データソース: MCP サーバーは、Cost Explorer API、CloudWatch Logs、Perplexity AI 検索 API などのリモートデータソースとやり取りします。
前提条件
このブログで紹介するソリューションを実装するには、以下の前提条件が必要です。
- AWS アカウント
- FM と HAQM Bedrock の基本的な知識
- AWS Command Line Interface (AWS CLI) のインストールと認証情報の設定
- Python 3.11 以降
- AWS Cloud Development Kit (AWS CDK) CLI
- Anthropic の Claude 3.5 Sonnet v2 のモデルアクセスを有効化
- サーバーの環境変数として設定するための
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
- 2 つの MCP サーバーは Docker デーモンとして実行されるため、コンピュータにDocker がインストールされ実行されている必要です
MCP サーバーはローカルコンピュータ上で実行され、AWS サービスと Perplexity API にアクセスする必要があります。AWS 認証情報の詳細については、IAM ユーザーのアクセスキーの管理をご覧ください。認証情報には、Cost Explorer と CloudWatch への AWS Identity and Access Manager (IAM) の読み取りアクセス権限が含まれていることを確認してください。これは、AWSBillingReadOnlyAccess
と CloudWatchReadOnlyAccess
のマネージド IAM 権限を使用することで設定できます。Perplexity API キーは、Perplexity Sonar API ページから取得できます。
実行手順
前提条件が整ったら、ソリューションの実装を行います。
- InlineAgent GitHub リポジトリに移動します。
- セットアップ手順に従います。
- cost_explorer_agent に移動します。このフォルダには、このブログのコードが含まれています。
- サンプルを参考に、
cost_explorer_agent
ディレクトリに.env
ファイルを作成します。 aws-cost-explorer-mcp
サーバーをビルドします。- これで、MCP サーバーを呼び出して AWS の支出に関するインサイトを提供するエージェントを構築する準備が整いました。
python main.py
でエージェントを実行します。処理されるクエリは次の通りです:What is HAQM Bedrock? What are the AWS services where I spent most in the last 7 days? Be precise and create a bar graph
エージェントは 2 つの MCP サーバーに接続し、それぞれのツールにアクセスします。その後、エージェントは特定のツールを順番に使用する計画を立て実行します:- コードインタープリターを使用してコスト分布を示すチャートを生成
- AWS Cost Explorer MCP サーバーを使用して支出パターンを分析
- Perplexity MCP サーバーを使用して HAQM Bedrock に関する包括的な情報を取得
注意: この投稿では、シンプルさを重視し MCP のユースケースに焦点を当てるため、AWS アクセスキーの使用方法を説明していますが、本番環境では長期的なアクセスキーの代わりに AWS IAM ロールの使用を強く推奨します。アクセスキーを使用する必要がある場合は、以下のセキュリティのベストプラクティスに従ってください。アクセスキーを公開 (コードリポジトリを含む) したり、共有したりしないでください。IAM ポリシーを必要な権限のみに制限し、最小権限の原則を実装してください。また、アクセスキーを定期的に (90 日ごとを推奨) ローテーションしてください。AWS CloudTrail を使用してアクセスキーの使用状況を監視し、可能な場合は AWS STS を通じて一時的な認証情報を使用することも重要です。
実装の詳細
エージェントが生成する出力について理解できたところで、その出力を生成する重要なコードの部分について詳しく見ていきましょう。
- MCP クライアントの作成: config.py では、2 つの MCP サーバーと通信する 2 つの MCP クライアントを定義します。
- Cost Explorer と Perplexity クライアントのサーバーパラメータを定義します。このソリューションでは、クライアントが標準入出力 (stdio) ストリームを介して通信する方法を設定する
StdioServerParameters
を使用します。これには、サーバーが API を通じて必要なデータにアクセスするためのパラメータが含まれています。 main.py
では、MCP サーバーパラメータをインポートし、2 つの MCP クライアントの作成に使用します。
- Cost Explorer と Perplexity クライアントのサーバーパラメータを定義します。このソリューションでは、クライアントが標準入出力 (stdio) ストリームを介して通信する方法を設定する
- エージェントのアクショングループの設定:
main.py
は、MCP クライアントを単一のインターフェースにまとめるアクショングループを作成し、エージェントがアクセスできるようにします。これにより、エージェントは処理の受け渡しを通じて、必要に応じてこれらの MCP サーバーのいずれかを呼び出すようアプリケーションに要求できます。 - インラインエージェントの作成: インラインエージェントは以下の仕様で作成できます:
- 基盤モデル: エージェントを動作させる FM を選択して設定します。HAQM Bedrock で提供されているモデルであれば、どれでも使用できます。この例では、Anthropic の Claude 3.5 Sonnet モデルを使用しています。
- エージェントの指示: ユーザーからの問い合わせへの応答方法に関するガイドラインと手順を含む指示をエージェントに提供します。これらの指示は、エージェントが様々な種類の問い合わせに対応する際の基準となります。
- エージェント名: エージェントの名前を設定します。
- アクショングループ: エージェントがアクセスできるアクショングループを定義します。単一または複数のアクショングループを含むことができ、各グループは複数の MCP クライアントや AWS Lambda にアクセスできます。オプションとして、アプリケーションのコードを生成、実行、テストするために Code Interpreter を使用するようにエージェントを設定できます。
この例を使用して、HAQM Bedrock 上でインラインエージェントを構築し、異なる MCP サーバーとの接続を確立し、エージェントがアクセスできるように、それらのクライアントを単一のアクショングループにまとめることができます。
まとめ
Anthropic MCP プロトコルは、基盤モデルをデータソースに接続するための標準化された方法を提供しており、この機能を HAQM Bedrock Agents で利用することができます。このブログでは、HAQM Bedrock と MCP の機能を組み合わせて、AWS の支出を理解し管理するための新しい視点を提供するアプリケーションを構築する例を紹介しました。
組織は、チームに対して複雑な財務データへの自然な対話型アクセスを提供できるようになり、Perplexity のようなソースからの文脈に基づく情報によってレスポンスを強化できます。AI が進化し続けるにつれて、モデルを組織の重要なシステムに安全に接続する機能の価値はますます高まるでしょう。カスタマーサービスの変革、業務の効率化、より深いビジネスインサイトの獲得など、どのようなニーズにも、HAQM Bedrock と MCP の統合は、次の AI イノベーションのための柔軟な基盤を提供します。この MCP 統合についての詳細は、コードサンプルをご覧ください。
以下は、HAQM Bedrock Agents を MCP サーバーに接続することで構築できるエージェントの例です:
- HAQM Bedrock Knowledge Bases、Sqlite、さらにはローカルファイルシステムなど、異なるデータソースからデータを取得するマルチデータソースエージェント。
- Slack およびGitHub MCP サーバーと統合する開発者生産性支援エージェント。
- 開発環境内で直接機械学習実験の管理、可視化、追跡を行うための、Comet ML のOpik MCP サーバーと統合する機械学習実験追跡エージェント。
これらの強力な新機能を使って、どのようなビジネス課題に取り組みますか?
著者について
Mark Roy は AWS のプリンシパル機械学習アーキテクトとして、お客様の生成 AI ソリューションの設計と構築を支援しています。2023 年初頭から、AWS の主力生成 AI サービスである HAQM Bedrock のローンチに向けたソリューションアーキテクチャの取り組みをリードしています。Mark の業務は幅広いユースケースをカバーしており、特に生成 AI、エージェント、エンタープライズ全体での ML のスケーリングに重点を置いています。保険、金融サービス、メディア・エンターテインメント、ヘルスケア、公共事業、製造業など、様々な業界の企業を支援してきました。AWS 入社前は、25 年以上にわたりアーキテクト、開発者、テクノロジーリーダーとして活躍し、そのうち 19 年間は金融サービス業界で経験を積みました。ML スペシャリティ認定を含む 6 つの AWS 認定資格を保有しています。
Eashan Kaushik は、HAQM Web Services のスペシャリストソリューションアーキテクト AI/ML です。顧客中心のアプローチを重視しながら、最先端の生成 AI ソリューションの開発に取り組んでいます。現職に就く前は、NYU Tandon School of Engineering でコンピュータサイエンスの修士号を取得しました。仕事以外では、スポーツ、ウェイトトレーニング、マラソンを楽しんでいます。
Madhur Prashant は、HAQM Web Services の AI および ML ソリューションアーキテクトです。人間の思考と生成 AI が交わる領域に情熱を注いでいます。生成 AI、特にお客様に役立ち、安全性が高く、そして何よりもお客様にとって最適なソリューションの構築に関心を持っています。仕事以外では、ヨガ、ハイキング、双子の兄弟との時間、ギター演奏を楽しんでいます。
Amit Arora は HAQM Web Services の AI および ML スペシャリストアーキテクトとして、エンタープライズのお客様がクラウドベースの機械学習サービスを活用してイノベーションを迅速に拡大できるよう支援しています。また、ワシントン D.C. の Georgetown University のデータサイエンスおよび分析修士プログラムで非常勤講師も務めています。
Andy Palmer は、AWS Strategic Accounts のテクノロジーディレクターです。彼のチームは、AIML、生成 AI、データとアナリティクス、セキュリティ、ネットワーク、オープンソースソフトウェアなど、多くの専門分野にわたるスペシャリストソリューションアーキテクチャのスキルを提供しています。Andy と彼のチームは、最も先進的なお客様の生成 AI の取り組みをガイドし、既存の課題領域や新たなイノベーション、製品体験に、これらの新しいツールを適用する方法を見出すことを支援してきました。