

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

# 通过 Gate AgentCore way 连接到你的知识库
<a name="kb-gateway-target"></a>

AgentCore Gateway 允许您使用模型上下文协议 (MCP) 将您的 Amazon Bedrock 托管知识库作为工具公开。将知识库目标添加到网关后，任何 MCP-compatible 客户端都可以将知识库作为标准 MCP 工具进行查询。连接器公开了两个工具：
+ `AgenticRetrieveStream`— 一种多步骤的流媒体代理检索，可规划、迭代检索和流式传输结果，还有一个可选的合成的、有引文支持的答案。
+ `Retrieve`— 单次搜索，返回最相关的段落和来源参考文献。

网关充当处理身份验证、参数注入和架构子集设置的中介。作为管理员，您可以绑定知识库并控制哪些参数向呼叫代理公开，哪些参数使用预先配置的默认值隐藏。

**注意**  
只有托管知识库才支持知识库网关目标，并且仅支持 IAM-based 出站身份验证（`GATEWAY_IAM_ROLE`凭据提供者类型）。

**先决条件**
+ 托管知识库及其知识库 ID。
+ 一个 AgentCore 网关和一个有权从知识库（在知识库 ARN `bedrock:Retrieve` 上）进行检索的网关服务角色。

*有关完整说明（包括使用 AWS SDK 或 AWS CLI 创建网关目标、配置网关服务角色和信任策略、控制代理可以设置的检索参数、调用工具以及完整的输入和响应架构），请参阅《Amazon Bedrock 开发者指南》中的 [Amazon Bedrock 托管知识库作为连接器目标](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-target-connector-managed-kb.html)。 AgentCore *

## 使用 Strands 特工调用
<a name="kb-gateway-target-invoke-strands"></a>

如果您有使用 [Strands Agents SDK 和[AgentCore入门工具包](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-get-started-toolkit.html)构建的现有代理](https://strandsagents.com/latest/)，则可以通过将 MCP 客户端切换为对网关端点使用 Sigv4 身份验证将其连接到知识库网关目标。

安装 `mcp-proxy-for-aws` 包：

```
pip install mcp-proxy-for-aws
```

然后更新您的 MCP 客户端，使其指向使用 IAM 身份验证的网关 URL：

```
from mcp_proxy_for_aws.client import aws_iam_streamablehttp_client
from strands.tools.mcp.mcp_client import MCPClient

GATEWAY_URL = "{{https://your-gateway-url/mcp}}"

def get_streamable_http_mcp_client() -> MCPClient:
    """Returns an MCP Client with SigV4 auth for AgentCore Gateway."""
    return MCPClient(lambda: aws_iam_streamablehttp_client(
        endpoint=GATEWAY_URL,
        aws_region="{{us-west-2}}",
        aws_service="bedrock-agentcore",
    ))
```

与标准 MCP 客户端设置相比，主要的变化是：
+ 将`mcp`包裹`streamablehttp_client`中的内容替换为 f `aws_iam_streamablehttp_client` rom `mcp-proxy-for-aws`。
+ 将设置`endpoint`为您的 AgentCore 网关 URL。
+ 指定`aws_service="bedrock-agentcore"`用于 Sigv4 签名。

连接后，知识库工具将通过自动发现`tools/list`并可供代理使用，无需额外配置。