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 域。
-
在左侧导航窗格中,选择集成。
-
查找 MCP 服务器集成模板。
-
选择配置域。然后,输入您的 OpenSearch 域端点。
如果未指定相应的可选参数,该模板会创建 AgentCore 运行时和以下组件:
-
Amazon ECR 存储库
-
Amazon Cognito 用户池作为 OAuth 授权方。
-
AgentCore 运行时使用的执行角色
完成此流程后,请执行以下创建后步骤:
-
对于 Amazon OpenSearch Service:将执行角色 ARN 映射到 OpenSearch 后端角色,以控制对域的访问权限。
对于 Amazon OpenSearch 无服务器:创建数据访问策略,允许执行角色访问集合。
-
从授权方获取 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