MCP 服务器集成模板 - Amazon OpenSearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

MCP 服务器集成模板

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

模板功能

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

托管的 MCP 服务器部署

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

身份验证和安全

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

注意

MCP 服务器模板仅在以下 Amazon Web Services 区域 中可用:

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

  • 美国西部(俄勒冈州)

  • 欧洲地区(法兰克福)

  • 亚太地区(悉尼)

使用 MCP 服务器模板

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

  1. 打开 Amazon OpenSearch Service 控制台

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

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

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

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

  • Amazon ECR 存储库

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

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

完成此流程后,请执行以下创建后步骤:

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

    对于 Amazon OpenSearch 无服务器:创建数据访问策略,允许执行角色访问集合。

  2. 从授权方获取 OAuth 访问令牌。然后使用此令牌访问 CloudFormation 堆栈输出中列出的 URL 上的 MCP 服务器。

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

与人工智能代理集成

部署后,您可以将 MCP 服务器与任何兼容 MCP 的代理进行集成。有关更多信息,请参阅《Amazon Bedrock 开发人员指南》中的 Invoke your deployed MCP server

开发人员集成

可将 MCP 服务器端点添加到代理配置中。也可以将其与 Amazon Q 开发者版 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")

有关更多信息,请参阅 OpenSearch 网站上的 Hosting OpenSearch MCP Server with Amazon Bedrock AgentCore