跳转到内容

TypeScript Agent 到 MCP

connection 生成器可以将您的 TypeScript Agent 连接到 MCP 服务器(TypeScriptPython)。

该生成器设置所有必要的连接,使您的 agent 能够发现和调用 MCP 服务器的工具,无论是部署到 AWS(通过 Bedrock AgentCore)还是在本地运行。

在使用此生成器之前,请确保您具备:

  1. 一个包含 Strands Agent 组件的 TypeScript 项目
  2. 一个包含 MCP 服务器组件的项目(ts#mcp-serverpy#mcp-server
  3. 两个组件都使用 infra: agentcore 创建
Terminal window
pnpm nx g @aws/nx-plugin:connection
您还可以执行试运行以查看哪些文件会被更改
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

选择您的 agent 项目作为源,选择您的 MCP 服务器项目作为目标。如果您的项目包含多个组件,请指定 sourceComponenttargetComponent 选项以消除歧义。

参数类型默认值描述
sourceProject 必需string-源项目
targetProject 必需string-要连接到的目标项目
sourceComponent string-要从其连接的源组件(组件名称、相对于源项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为源。
targetComponent string-要连接到的目标组件(组件名称、相对于目标项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为目标。
preferInstallDependencies booleantrue是否在生成器运行后优先安装依赖项。设置为 false 可在批量运行多个生成器时延迟安装(如果后续生成器需要计算 Nx 项目图,仍会运行安装);在最后统一安装一次。

生成器会创建一个共享的 agent-connection 包并修改您的 agent 代码:

  • 文件夹packages/common/agent-connection
    • 文件夹src
      • 文件夹app
        • <mcp-server-name>-client-strands.ts High-level Strands client for the connected MCP server
      • 文件夹core
        • agentcore-endpoints.ts Framework-agnostic ARN/URL resolution
        • agentcore-fetch.ts Framework-agnostic SigV4 / JWT / session-forwarding fetch
        • agentcore-mcp-transport.ts Framework-agnostic MCP transport
        • agentcore-mcp-client-strands.ts Strands MCP client wrapping the transport
      • index.ts Exports all clients
    • project.json
    • tsconfig.json

此外,它还会:

  • 转换您的 agent 的 agent.ts 以导入和使用 MCP 服务器的工具
  • 更新 agent 的 dev 目标以依赖 MCP 服务器的 serve 目标
  • 安装所需的依赖项

生成器会转换您的 agent 的 agent.ts 以使用 MCP 服务器的工具:

packages/example/src/my-agent/agent.ts
import { Agent, tool } from '@strands-agents/sdk';
import { MyMcpServerClientStrands } from '@my-scope/agent-connection';
export const getAgent = async (sessionId: string) => {
const myMcpServerClient = await MyMcpServerClientStrands.create(sessionId);
return new Agent({
systemPrompt: '...',
tools: [myMcpServerClient],
});
};

sessionId 参数从调用者传递,确保 Bedrock AgentCore Observability 的一致性。

运行连接生成器后,您需要授予 agent 调用 MCP 服务器的权限:

packages/infra/src/stacks/application-stack.ts
const mcpServer = new MyMcpServer(this, 'MyMcpServer');
const myAgent = new MyAgent(this, 'MyAgent');
// Grant the agent permissions to invoke the MCP server
mcpServer.grantInvokeAccess(myAgent);

MCP 服务器的 AgentCore 运行时 ARN 会由生成的 CDK 构造自动注册到 运行时配置agentcore 命名空间中,以便 agent 可以在运行时发现它。

生成器会配置 agent 的 dev 目标以:

  1. 自动启动已连接的 MCP 服务器
  2. 设置 LOCAL_DEV=true,使生成的客户端使用直接 HTTP 传输而不是 AgentCore

使用以下命令在本地运行 agent:

Terminal window
pnpm nx <agent-name>-dev <project-name>

这将启动 agent 和所有已连接的 MCP 服务器,agent 将通过 HTTP 在其分配的本地端口上直接连接到 MCP 服务器。