MCP 服务器集成模板 - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MCP 服务器集成模板

使用模型上下文协议 (MCP) 服务器模板,您可以在 Amazon Bedrock 上部署 OpenSearch 托管的 MCP 服务器 AgentCore,从而降低 AI 代理和工具之间的集成复杂性。 OpenSearch 有关更多信息,请参阅什么是 Amazon Bedrock AgentCore? 。

模板功能

此模板包括用于部署和管理 MCP 服务器的以下关键功能。

托管 MCP 服务器部署

opensearch-mcp-server-py使用 Amazon Bedrock AgentCore Runtime 进行部署,并提供代理终端节点,用于代理对底层 MCP 服务器的请求。有关更多信息,请参阅opensearch-mcp-server-py上的GitHub

身份验证和安全

处理入站身份验证(从用户到 MCP 服务器)和出站身份验证(从 MCP 服务器到 OpenSearch),并 OAuth 支持企业身份验证。

注意

MCP 服务器模板仅在以下 AWS 区域版本中可用:

  • 美国东部(弗吉尼亚州北部)

  • 美国西部(俄勒冈州)

  • 欧洲地区(法兰克福)

  • 亚太地区(悉尼)

使用 MCP 服务器模板

按照以下步骤部署 MCP 服务器模板并将其连接到您的 OpenSearch 域。

  1. 打开亚马逊 OpenSearch 服务控制台

  2. 在左侧导航窗格中,选择集成。

  3. 找到 MCP 服务器集成模板。

  4. 选择配置域。然后,输入您的 OpenSearch 域终端节点。

如果未指定相应的可选参数,则模板将创建 AgentCore 运行时和以下组件:

  • Amazon ECR 存储库

  • Amazon Cognito 用户池作为授权方 OAuth

  • AgentCore 运行时使用的执行角色

完成此过程后,应按照以下创建后步骤进行操作:

  1. 对于 Amazon S OpenSearch ervic e:将您的执行角色 ARN 映射到 OpenSearch 后端角色以控制对您的域的访问权限。

    对 OpenSearch 于 Amazon Serverless:创建数据访问策略,允许您的执行角色访问您的馆藏。

  2. 从您的授权者那里获取 OAuth 访问令牌。然后使用此令牌通过 CloudFormation 堆栈输出中列出的 URL 访问 MCP 服务器。

有关更多信息,请参阅 OpenSearch 无服务器的策略操作

与 AI 代理集成

部署后,您可以将 MCP 服务器与任何兼容 MCP 的代理集成。有关更多信息,请参阅 Amazon Bedrock 开发者指南中的调用已部署的 MCP 服务器

开发者集成

您可以将 MCP 服务器端点添加到代理配置中。您也可以将其与 Amazon Q Developer CLI、定制代理或其他兼容 MCP 的代理一起使用。

企业部署

中央托管的代理可以 OpenSearch 作为一个组件连接到多个服务。该代理支持 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")

有关更多信息,请参阅网站上的 “使用 Amazon Bedro OpenSearch ck AgentCore 托管 MCP 服务器” OpenSearch 。