翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MCP サーバー統合テンプレート
モデルコンテキストプロトコル (MCP) サーバーテンプレートを使用すると、OpenSearch がホストする MCP サーバーを Amazon Bedrock AgentCore にデプロイできるため、AI エージェントと OpenSearch ツールの統合の複雑さを軽減できます。詳細については、「Amazon Bedrock AgentCore とは何ですか?」を参照してください
テンプレートの機能
このテンプレートには、MCP サーバーをデプロイおよび管理するための以下の主要な機能が含まれています。
- マネージド MCP サーバーのデプロイ
-
Amazon Bedrock AgentCore ランタイムを使用して [opensearch-mcp-server-py] をデプロイし、基盤となる MCP サーバーにリクエストをプロキシするエージェントエンドポイントを提供します。詳細については、GitHub の「opensearch-mcp-server-py
」を参照してください。 - 認証とセキュリティ
-
インバウンド認証 (ユーザーから MCP サーバーへ) とアウトバウンド認証 (MCP サーバーから OpenSearch へ) の両方を処理し、エンタープライズ認証用の OAuth をサポートします。
注記
MCP サーバーテンプレートは、次の AWS リージョンでのみ使用できます:
-
米国東部 (バージニア北部)
-
米国西部 (オレゴン)
-
欧州 (フランクフルト)
-
アジアパシフィック (シドニー)
MCP サーバーテンプレートを使用するには
MCP サーバーテンプレートをデプロイし、OpenSearch ドメインに接続するには、次の手順に従います。
-
左側のナビゲーションペインから、[統合] を選択します。
-
[MCP サーバー統合] テンプレートを検索します。
-
[ドメインの設定] を選択します。次に、OpenSearch ドメインエンドポイントを入力します。
対応するオプションパラメータが指定されていない場合、テンプレートは AgentCore Runtime と以下のコンポーネントを作成します。
-
Amazon ECR リポジトリ
-
オーソライザ―としての Amazon Cognito ユーザープール
-
AgentCore Runtime によって使用される実行ロール
この手順を完了したら、作成後のステップに従う必要があります:
-
Amazon OpenSearch Service の場合: 実行ロール ARN を OpenSearch バックエンドロールにマッピングして、ドメインへのアクセスを制御します。
Amazon OpenSearch Serverless の場合: 実行ロールがコレクションにアクセスできるようにするデータアクセスポリシーを作成します。
-
オーソライザーから OAuth アクセストークンを取得します。次に、このトークンを使用して、CloudFormation スタック出力にリストされている URL で MCP サーバーにアクセスします。
詳細については、「OpenSearch Serverless でのポリシーアクション」を参照してください。
AI エージェントとの統合
デプロイ後、MCP サーバーを任意の MCP 互換エージェントと統合できます。詳細については、「Amazon Bedrock デベロッパーガイド」の「Invoke your deployed MCP server」を参照してください。
- デベロッパー統合
-
MCP サーバーのエンドポイントをエージェント設定に追加できます。Amazon Q Developer CLI、カスタムエージェント、またはその他の MCP 互換エージェントでも使用できます。
- エンタープライズデプロイ
-
中央ホスト型エージェントは、OpenSearch を構成要素の 1 つとして複数のサービスに接続できます。このエージェントは、OAuth およびエンタープライズ認証システムをサポートし、複数のユーザーとユースケースをサポートするようにスケーリングします。
import os
import requests
from strands import Agent
from strands.tools.mcp import MCPClient
from mcp.client.streamable_http import streamablehttp_client
def get_bearer_token(discovery_url: str, client_id: str, client_secret: str):
response = requests.get(discovery_url)
discovery_data = response.json()
token_endpoint = discovery_data['token_endpoint']
data = {
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': client_secret
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.post(token_endpoint, data=data, headers=headers)
token_data = response.json()
return token_data['access_token']
if __name__ == "__main__":
discovery_url = os.environ["DISCOVERY_URL"]
client_id = os.environ["CLIENT_ID"]
client_secret = os.environ["CLIENT_SECRET"]
mcp_url = os.environ["MCP_URL"]
bearer_token = get_bearer_token(discovery_url, client_id, client_secret)
opensearch_mcp_client = MCPClient(lambda: streamablehttp_client(mcp_url, {
"authorization": f"Bearer {bearer_token}",
"Content-Type": "application/json"
}))
with opensearch_mcp_client:
tools = opensearch_mcp_client.list_tools_sync()
agent = Agent(tools=tools)
agent("list indices")詳細については、OpenSearch ウェブサイトの「Hosting OpenSearch MCP Server with Amazon Bedrock AgentCore