将 AgentCore Runtime 托管的 MCP(模型上下文协议)服务器连接到 Amazon Quick

AWS ML Blog 2026-09-01T11:45:09.299341

标题:将托管于 AgentCore Runtime 的 MCP 服务器接入 Amazon Quick

模型上下文协议(MCP)服务器让基础模型能够访问外部数据和工具,为文件、数据库和 API 提供标准化且安全的访问方式。它让 AI 智能体能够与真实世界的应用交互,通过准确的上下文减少幻觉,并具备有状态的多轮对话能力。业内标准架构已迅速转向并采用 MCP 来驱动智能体式 AI 工作流。Amazon Quick 支持 MCP 集成,可用于自主执行、实时数据访问以及专门的 AI 子智能体集成。

如果你已经拥有 MCP 服务器,可以按照本集成指南将其接入 Amazon Quick。如果还没有,可以参考 AWS 官方提供的在 AWS 上部署 MCP 服务器的指导——该方案遵循 AWS Well-Architected 框架的支柱原则。

根据你的实际场景,有几种选择:

本文将介绍如何在 AgentCore Runtime 中部署和托管你的 MCP 服务器,并将其与 Amazon Quick 集成,同时涵盖必要的准备工作。通过这一模式,你可以提高复用性、避免重复建设 AI 工具——客户端可以直接复用 MCP 服务器上暴露的常用工具和智能体,而无需从零重新实现。对用户而言,他们无需为每种使用场景都构建定制连接器,就能在 Amazon Quick(聊天智能体和流程)内使用你的产品。

解决方案概览

截至目前,你可以在 Web 浏览器或桌面应用中使用 Amazon Quick,借助聊天智能体(chat agent)或 Flows 获得 AI 智能体能力。要让 AI 智能体连接 MCP 服务器、访问更多工具和子智能体能力,就需要把 MCP 服务器集成到 Amazon Quick 中。集成工作由两端的组件共同完成:Amazon Quick 端的连接器(connector),以及 AgentCore 端的 AgentCore Gateway。AgentCore Gateway 和 Runtime 都来自 Amazon Bedrock AgentCore——一项用于构建生成式 AI 应用的全托管服务。

从 Amazon Quick 到 AgentCore Gateway 的授权流程称为入站认证(Inbound Auth);从 AgentCore Gateway 到 AgentCore Runtime 的流程则称为出站认证(Outbound Auth)。

入站认证负责验证用户身份,并授权其访问 MCP 服务器。我们使用 Amazon Cognito 来满足授权需求,但你也可以换用其他身份提供商。

出站认证处理的是机器与机器之间的身份验证和授权,我们使用 AgentCore Identity——一个专为 AI 智能体打造的综合身份与访问管理服务。由于 MCP 协议目前要求使用 OAuth 2.0 作为身份验证协议,因此出站认证采用 OAuth 2.0。

前提条件

开始之前,请确认你满足以下条件,以便按照本文的分步说明在自己的 AWS 账户中部署这套方案:

关于 Amazon Bedrock AgentCore 的配置:

运行本教程需要:

实施步骤

按照以下步骤,你可以把一个在本地编写的 MCP 服务器变成 Amazon Quick 聊天代理中一个完整集成、带认证的工具:

  1. 在 AgentCore Runtime 上实现并部署一个示例远程 MCP 服务器。
  2. 通过入站和出站认证将 MCP 服务器与 AgentCore Gateway 集成。
  3. 在 Amazon Quick 中注册 MCP 集成,并绑定到你的聊天代理。
  4. 在 Amazon Quick 中测试 MCP 服务器集成。
  5. 清理资源。

第 1 步:在 AgentCore Runtime 上实现并部署远程 MCP 服务器

这一步,我们会在 AgentCore Runtime 上部署一个带基础模拟工具的示例 MCP 服务器。详细的分步代码在 GitHub 上的 AgentCore 示例笔记本里,这里只做概要介绍。

创建项目结构和文件,如下所示:

项目结构:mcp_server_project/

├── mcp_server.py          # Main MCP server code
├── requirements.txt       # Dependencies
└── __init__.py            # Python package marker

File: requirements.txt

mcp>=1.10.0
boto3
bedrock-agentcore
bedrock-agentcore-starter-toolkit>=0.1.21
strands-agents

在 Python 解释器中安装依赖,请运行以下命令:

uv venv sample-venv                   # Create Virtual Environment
source sample-venv/bin/activate       # Activate Virtual Environment
uv pip install -r requirements.txt    # Install the dependencies

下面是一个最简示例代码。关于安全认证设置的更多细节,请参阅《使用 AgentCore Gateway 与 MCP 客户端构建安全认证代码流》。

当你使用 MCP 协议配置 AgentCore Runtime 时,服务会要求 MCP 服务器容器在 0.0.0.0:8000/mcp 路径上可用,这也是大多数官方 MCP 服务器 SDK 支持的默认路径。

File: sample_mcp_server.py

from mcp.server.fastmcp import FastMCP

`mcp.run(transport="streamable-http")` 服务器基于 FastMCP 构建,并开启了 `stateless_http=True`,这是与 AgentCore Runtime 兼容所必需的。

这段代码做以下几件事:

- **FastMCP**:创建 MCP 服务器,用来承载你的工具。
- **@mcp.tool()**:装饰器,把 Python 函数变成 MCP 工具。
- **stateless_http=True**:与 AgentCore Runtime 兼容的必需配置。

你可以按照 notebook 中 "Creating Local Testing Client" 和 "Testing Locally" 两节的说明,用本地 MCP 客户端先在本地测试服务器。

测试通过后,就可以部署到 AgentCore Runtime 了。部署方式有两种:在终端中使用 Bedrock starter kit(步骤见下文),或者通过 Python 脚本完成(见 notebook 中 "Launching MCP Server to AgentCore Runtime" 一节)。本教程采用 AgentCore starter kit 的方式。

打开终端,将当前工作目录切到项目目录,然后配置项目,为部署做准备。`configure` 命令是交互式的,步骤说明很清楚,本教程直接使用默认值就行。

```bash
# Configure your AgentCore project

agentcore configure --entrypoint mcp_server.py --name simple_mcp_server 这条命令会自动完成几项关键设置:生成一个 Dockerfile 和 .dockerignore 文件,用于将 agent 容器化,确保 Python 应用在不同环境中运行一致;最重要的是,它会创建一个 .bedrock_agentcore.yaml 配置文件,存放 agent 的运行时设置和部署参数。其中 --entrypoint 参数指定包含 agent 主逻辑的 Python 文件,也就是带有 @app.entrypoint 装饰器函数所在的那个文件。--name 参数则为 agent 在你的 AWS 账户内分配一个唯一标识,用于跨 AWS 服务的资源命名和管理。

配置完成后,运行下面的命令就可以启动部署:

agentcore launch

这时你应该能在 Runtime 中看到这个 MCP server。

第 2 步:通过入站和出站身份验证,将 MCP server 与 AgentCore Gateway 集成

这一步要配置 AgentCore Gateway,让它作为 Amazon Quick 和已部署 MCP server 之间的安全桥梁。入站和出站流程都按照推荐的安全最佳实践来设置,包括开箱即用的端到端 TLS 加密。如需自定义,可以参考相应服务的文档说明。

具体要做的事情包括:为 Gateway 创建一个 IAM 角色、配置两个 Amazon Cognito 用户池来分别处理入站认证(授权来自 Amazon Quick 的请求)和出站认证(通过 OAuth 2.0 验证对 MCP server 的调用),最后创建 Gateway 端点。

如果希望通过编程方式完成设置,可以参考 GitHub 上 “MCP server as a target” 的教程。

第 2a 步:为 AgentCore Gateway 创建可代入的 IAM 角色

进入 AWS 管理控制台,打开 IAM,选择“创建角色”(Create role),然后在用例中选择 Amazon Bedrock AgentCore。你可以在“权限”(Permissions)标签页中附加以下内联 IAM 策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "MCPServerRuntimePermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:InvokeAgentRuntime",
        "bedrock-agentcore:InvokeRegistryMcp",
        "secretsmanager:GetSecretValue"
      ],
    }
  ]
}

将 AgentCore Runtime 托管的 MCP 服务器连接到 Amazon Quick

"Resource": [

"arn:aws:bedrock-agentcore:<REGION>:<ACCOUNT_ID>:runtime/<RUNTIME_ID>",

"arn:aws:bedrock-agentcore:<REGION>:<ACCOUNT_ID>:runtime/<RUNTIME_ID>/runtime-endpoint/*"

}
]

} 使用示例角色名称 agentcore-sample-mcpgateway-role(也可以自定义一个名称)。在 Resource 中,填入部署在 AgentCore Runtime 上的 MCP 服务器的运行时 ARN。

步骤 2b:创建 Amazon Cognito 用户池,用于对 Gateway 的入站授权

导航到 Amazon Cognito,创建一个新的用户池,作为入站授权层,在请求到达 Gateway 之前校验来自 Amazon Quick 的请求。

进入 Amazon Cognito,选择 Create user pool(创建用户池)。

接下来,为你的用户池配置资源服务器。在导航窗格中,选择 Branding(品牌)下的 Domain(域),新建一个资源服务器,定义受保护的自定义 scope invoke,Gateway 在授权时会校验该 scope。

请记录上述用户池中的以下入站授权详细信息,后续步骤会引用这些信息:

步骤 2c:创建 Amazon Cognito 用户池,用于出站授权

导航到 Amazon Cognito,创建第二个用户池,作为出站授权层,这样 Gateway 在调用部署于 AgentCore Runtime 上的 MCP 服务器时,可以验证自身身份。

进入 Amazon Cognito,选择 Create user pool(创建用户池)。

与入站授权类似,为出站授权创建一个资源服务器,并获取带有受保护自定义 scope invoke 的客户端 ID、客户端密钥和发现 URL。

请记录以下出站授权所需的信息,这些信息来自用户池,后续会用到:

接下来,在 AgentCore Identity 中创建 OAuth 凭据提供程序。导航到 Amazon Bedrock AgentCore,选择 Identity(身份),然后选择 Add Outbound Auth(添加出站授权)和 Create OAuth Client(创建 OAuth 客户端)。

填写表单时,使用上一步在 Outbound Auth Amazon Cognito 用户池中创建的应用客户端,填入 Discovery URL、Client ID 和 Client Secret。

Step 2d:创建 AgentCore Gateway

进入 Amazon Bedrock AgentCore,选择 Gateway,然后点击 Create Gateway。本教程中我们把它命名为 ac-gateway-mcp-server

在 Inbound Auth 部分,选择 JWT 作为认证类型,勾选 Use Existing Identity Provider Configuration,然后填入 Step 2b 创建的 Inbound Auth Amazon Cognito 用户池中的 Discovery URL 和 Client ID。

在 Permissions 部分,使用 Step 2a 创建的 IAM 角色。

在 Target 部分,把 MCP 服务器注册为目标。注意授权类型必须选择 OAuth Client,因为目前 MCP 协议还不支持其他授权方式。

构建 MCP 端点 URL 时,使用下面的模板,把 encoded_agentcore_runtime_mcp_server_arn 替换为你部署在 AgentCore Runtime 上的 MCP 服务器的 URL 编码 ARN:

https://bedrock-agentcore.us-east-1.amazonaws.com/runtimes/{encoded_agentcore_runtime_mcp_server_arn}/invocations?qualifier=DEFAULT

Outbound Auth 配置使用之前在 Outbound Auth 部分创建的 OAuth 客户端。

填好所有信息后,点击 Create Gateway,等待 Gateway 和它的 Target 都进入 Ready 状态,再继续下一步。

Step 3:在 Amazon Quick 中注册 MCP 集成

进入 Amazon Quick,选择 Connectors,然后点击 Create for your team。

选择 Model Context Protocol(MCP)作为集成类型,开始把刚创建的 Gateway 注册为 MCP 集成。

为集成填写名称和描述,以及 MCP Server Endpoint——也就是 Step 2d 创建的 AgentCore Gateway 的 Resource URL。

连接类型方面,你还可以选择私有 VPC 连接,限制 MCP 服务器在网络上的可见范围,以获得更好的安全性。

在 Authenticate 界面,填写 Step 2d 中在 AgentCore Gateway 上配置的 Inbound Auth 信息。你可以根据自己的使用场景选择合适的认证类型。

连接由 AgentCore Runtime 托管的 MCP 服务器到 Amazon QuickSight

如果你的使用场景需要验证单个用户身份,请选择 User authentication(用户认证)。如果你的场景更偏向系统级集成,那就选择 Service authentication(服务认证)。本教程中,我们使用 Amazon Cognito 做用户认证——你也可以接入自己偏好的身份提供商。根据所选身份提供商,填写客户端 ID(Client ID)、客户端密钥(Client Secret)、令牌 URL(Token URL)和授权 URL(Authorization URL)等信息。

其中,令牌 URL 请使用下面的模板格式。注意,用户池 ID 中的下划线必须去掉(例如,us-west-2_qNBcTlLbR 要写成 us-west-2qNBcTlLbR)。授权 URL 使用同样的地址,只需把其中的 token 替换为 authorize 即可。

令牌 URL 模板:

https://{user_pool_id_without_underscore}.auth.{REGION}.amazoncognito.com/oauth2/token

填写完所有信息后,点击 Create and Continue(创建并继续),检查一遍配置。此时界面上暂时只会显示 listTools,系统会同步 MCP 服务器上的工具。当 Action 状态变为 Available(可用)时,表示同步完成。此时你应该能看到工具列表已经刷新。

第 4 步:在 Amazon QuickSight 中测试 MCP 服务器集成

点击 Test Action APIs(测试 Action API),可以验证你的 MCP 工具是否可访问、运行是否正常。集成配置完成后,你可以把它作为一个 Action 添加到聊天代理(chat agent)或 Flow 中。有了 Action 集成,你的 QuickSight 代理或工作流就能调用 MCP 工具了。

本教程中,我们创建一个示例聊天代理。你其实可以通过关联 Space 或上传文件来为代理提供更多上下文,不过这里先跳过这些,只是单纯演示 MCP 服务器集成的用法。

Actions 区域,选择 Link Actions(关联 Action),然后选中我们在第 3 步创建的 Actions 集成。接下来可以在聊天代理里测试这个与 MCP 服务器的集成,验证结果没问题后,就可以启动聊天代理使用了。

第 5 步:清理资源

为了避免产生不必要的费用,请按照创建顺序的相反顺序删除本次演练中创建的资源——先删除依赖其他资源的对象,再删除被依赖的底层资源,这样可以确保依赖关系被干净地移除。你也可以参考 GitHub 上教程 notebook(Jupyter 笔记本)里的清理代码来操作。

删除 Amazon Quick 聊天代理(chat agent)或 Flow。删除 Amazon Quick Action。删除 AgentCore Gateway。删除 AgentCore Identity 资源。删除用于入站和出站身份验证的两个 Amazon Cognito 用户池。删除 AgentCore Runtime。删除 AgentCore Gateway 的 IAM 角色。

总结

在本文中,你了解了 Amazon Quick 如何与托管在 Amazon Bedrock AgentCore Runtime 上的自定义 MCP 服务器集成。我们一步一步完成了这些工作:在 AgentCore Runtime 上部署远程 MCP 服务器;使用 Amazon Cognito 和 AgentCore Identity 配置入站与出站身份验证;通过 AgentCore Gateway 将服务器桥接到 Amazon Quick;并把它注册为 Amazon Quick 中的 Action 集成。

这种模式让 AI 工具和智能体可以在整个组织中复用。团队可以借助标准化的 MCP 接口开放各自的特有能力,直接在 Amazon Quick 聊天代理和 Flow 中使用,无需为每种使用场景都开发自定义连接器。

关于 Amazon Quick 及其入门方法,请参阅博客文章《Announcing Amazon Quick: your agentic teammate for answering questions and taking action》。关于 Amazon Bedrock AgentCore,请参阅博客文章《Introducing Amazon Bedrock AgentCore Gateway: Transforming enterprise AI agent tool development》。

关于作者

查看原文