翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MCP サーバー統合テンプレート
Model Context Protocol (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 ランタイムと以下のコンポーネントを作成します。
-
Amazon ECR リポジトリ
-
OAuth オーソライザーとしての Amazon Cognito ユーザープール
-
AgentCore ランタイムで使用される実行ロール
この手順を完了したら、作成後のステップに従う必要があります。
-
Amazon OpenSearch Service の場合: 実行ロール ARN を OpenSearch バックエンドロールにマッピングして、ドメインへのアクセスを制御します。
Amazon OpenSearch Serverless の場合: 実行ロールがコレクションにアクセスできるようにするデータアクセスポリシーを作成します。
-
オーソライザーから OAuth アクセストークンを取得します。次に、このトークンを使用して、CloudFormation スタック出力にリストされている URL の MCP サーバーにアクセスします。
詳細については、「OpenSearch Serverless でのポリシーアクション」を参照してください。
AI エージェントとの統合
デプロイ後、MCP サーバーを任意の MCP 互換エージェントと統合できます。詳細については、「Amazon Bedrock デベロッパーガイド」の「デプロイされた MCP サーバーを呼び出す」を参照してください。
- デベロッパー統合
-
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 ウェブサイトの「Amazon Bedrock AgentCore を使用した OpenSearch MCP サーバーのホスティング