Bỏ qua để đến nội dung

TypeScript Strands Agent đến MCP

Trình tạo connection có thể kết nối TypeScript Strands Agent của bạn với máy chủ MCP (có thể là TypeScript hoặc Python).

Trình tạo thiết lập tất cả các kết nối cần thiết để agent của bạn có thể khám phá và gọi các công cụ của máy chủ MCP, cả khi được triển khai lên AWS (thông qua Bedrock AgentCore) và khi chạy cục bộ.

Trước khi sử dụng trình tạo này, hãy đảm bảo bạn có:

  1. Một dự án TypeScript với thành phần Strands Agent
  2. Một dự án với thành phần máy chủ MCP (có thể là ts#mcp-server hoặc py#mcp-server)
  3. Cả hai thành phần được tạo với computeType: BedrockAgentCoreRuntime
  1. Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
  2. Mở Nx Console trong VSCode
  3. Nhấp Generate (UI) trong phần "Common Nx Commands"
  4. Tìm kiếm @aws/nx-plugin - connection
  5. Điền các tham số bắt buộc
    • Nhấp Generate

    Chọn dự án agent của bạn làm nguồn và dự án máy chủ MCP của bạn làm đích. Nếu các dự án của bạn chứa nhiều thành phần, hãy chỉ định các tùy chọn sourceComponenttargetComponent để phân biệt.

    Tham số Kiểu Mặc định Mô tả
    sourceProject Bắt buộc string - Dự án nguồn
    targetProject Bắt buộc string - Dự án đích để kết nối tới
    sourceComponent string - Component nguồn để kết nối từ đó (tên component, đường dẫn tương đối so với thư mục gốc của dự án nguồn, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm nguồn.
    targetComponent string - Component đích để kết nối tới (tên component, đường dẫn tương đối so với thư mục gốc của dự án đích, hoặc generator id). Sử dụng '.' để chọn rõ ràng dự án làm đích.

    Trình tạo tạo một gói agent-connection được chia sẻ và sửa đổi mã agent của bạn:

    • Thư mụcpackages/common/agent-connection
      • Thư mụcsrc
        • Thư mụcapp
          • <mcp-server-name>-client.ts Client cấp cao cho máy chủ MCP được kết nối
        • Thư mụccore
          • agentcore-mcp-client.ts Client MCP AgentCore cấp thấp với xác thực SigV4/JWT
        • index.ts Xuất tất cả các client
      • project.json
      • tsconfig.json

    Ngoài ra, nó:

    • Chuyển đổi agent.ts của agent để import và sử dụng các công cụ của máy chủ MCP
    • Cập nhật target serve-local của agent để phụ thuộc vào target serve của máy chủ MCP
    • Cài đặt các phụ thuộc cần thiết

    Trình tạo chuyển đổi agent.ts của agent để sử dụng các công cụ của máy chủ MCP:

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

    Tham số sessionId được truyền từ người gọi, đảm bảo tính nhất quán cho Bedrock AgentCore Observability.

    Sau khi chạy trình tạo kết nối, bạn cần cấp quyền cho agent để gọi máy chủ MCP:

    packages/infra/src/stacks/application-stack.ts
    const mcpServer = new MyMcpServer(this, 'MyMcpServer');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent access to bedrock models
    myAgent.agentCoreRuntime.addToRolePolicy(
    new PolicyStatement({
    actions: ['bedrock:InvokeModel', 'bedrock:InvokeModelWithResponseStream'],
    resources: ['arn:aws:bedrock:*:*:foundation-model/*', 'arn:aws:bedrock:*:*:inference-profile/*'],
    }),
    );
    // Grant the agent permissions to invoke the MCP server
    mcpServer.grantInvokeAccess(myAgent);

    ARN runtime AgentCore của máy chủ MCP được tự động đăng ký trong namespace connection của Runtime Configuration bởi CDK construct được tạo, để agent có thể khám phá nó khi chạy.

    Trình tạo cấu hình target serve-local của agent để:

    1. Tự động khởi động (các) máy chủ MCP đã kết nối
    2. Đặt SERVE_LOCAL=true để client được tạo sử dụng truyền tải HTTP trực tiếp thay vì AgentCore

    Chạy agent cục bộ với:

    Terminal window
    pnpm nx <agent-name>-serve-local <project-name>

    Điều này sẽ khởi động cả agent và tất cả các máy chủ MCP đã kết nối, với agent kết nối trực tiếp đến các máy chủ MCP qua HTTP trên các cổng cục bộ được chỉ định của chúng.