AgentCore Gateway đến MCP Server
Generator connection có thể đăng ký một MCP server (có thể là TypeScript hoặc Python) làm target của một AgentCore Gateway.
Sau khi được kết nối, Gateway tổng hợp các công cụ của MCP server vào một endpoint MCP duy nhất, đánh giá các lời gọi dựa trên Cedar policy engine của nó, và ký lưu lượng truy cập đi ra đến MCP server bằng IAM SigV4.
Điều kiện tiên quyết
Phần tiêu đề “Điều kiện tiên quyết”Trước khi sử dụng generator này, hãy đảm bảo bạn có:
- Một dự án
agentcore-gateway - Một component MCP server (
ts#mcp-serverhoặcpy#mcp-server) được tạo vớiinfra: agentcorevàauth: iam
Gateway phải có protocol: mcp và MCP server phải có auth: iam — generator sẽ xác thực cả hai. Các MCP server không dùng IAM không thể được đính kèm vì Gateway ký lưu lượng truy cập đi ra bằng SigV4.
Cách sử dụng
Phần tiêu đề “Cách sử dụng”Chạy Generator
Phần tiêu đề “Chạy Generator”pnpm nx g @aws/nx-plugin:connectionyarn nx g @aws/nx-plugin:connectionnpx nx g @aws/nx-plugin:connectionbunx nx g @aws/nx-plugin:connectionBạn cũng có thể thực hiện chạy thử để xem những tệp nào sẽ bị thay đổi
pnpm nx g @aws/nx-plugin:connection --dry-runyarn nx g @aws/nx-plugin:connection --dry-runnpx nx g @aws/nx-plugin:connection --dry-runbunx nx g @aws/nx-plugin:connection --dry-run- Cài đặt Nx Console VSCode Plugin nếu bạn chưa cài đặt
- Mở Nx Console trong VSCode
- Nhấp
Generate (UI)trong phần "Common Nx Commands" - Tìm kiếm
@aws/nx-plugin - connection - Điền các tham số bắt buộc
- Nhấp
Generate
Chọn dự án Gateway làm nguồn và dự án MCP server làm target. Nếu dự án MCP server chứa nhiều component, hãy chỉ định targetComponent để phân biệt.
Tùy chọn
Phần tiêu đề “Tùy chọn”| 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. |
| preferInstallDependencies | boolean | true | Có nên cài đặt các dependencies sau khi generator chạy hay không. Đặt thành false để trì hoãn việc cài đặt khi chạy nhiều generator liên tiếp (việc cài đặt vẫn sẽ chạy nếu cần thiết để các generator tiếp theo có thể tính toán Nx project graph); cài đặt một lần vào cuối. |
Kết quả của Generator
Phần tiêu đề “Kết quả của Generator”Generator kết nối các dự án hiện có với nhau thay vì tạo ra các file nguồn mới. Các file sau sẽ được sửa đổi:
Thư mụcpackages/<gateway>
- project.json target
devcủa Gateway có thêm dependency vào<mcp>-devcủa MCP server - local-dev.ts
ATTACHED_MCP_SERVERSđược cập nhật để gateway cục bộ tổng hợp MCP server
- project.json target
Target dev của dự án Gateway có thêm dependency vào target <mcp>-dev của MCP server, do đó khi chạy Gateway cục bộ cũng sẽ khởi động MCP server. MCP server cũng được đăng ký trong local-dev.ts của dự án Gateway để gateway cục bộ tổng hợp các công cụ của nó.
Thêm MCP server target vào stack của bạn
Phần tiêu đề “Thêm MCP server target vào stack của bạn”Generator không thể tự động kết nối MCP server target vào cơ sở hạ tầng của bạn vì nó không biết stack hoặc module nào khởi tạo Gateway. Hãy tự thêm một lời gọi duy nhất gateway.addMcpServer(server).
Trong stack nơi bạn khởi tạo Gateway, hãy đăng ký MCP server làm target:
const myMcpServer = new MyMcpServer(this, 'MyMcpServer');const myGateway = new MyGateway(this, 'MyGateway');
// Register the MCP server as a target of the Gateway. The target name// defaults to the MCP server's `mcpServerName` (its class name in// kebab-case, e.g. `MyMcpServer` -> `my-mcp-server`).myGateway.addMcpServer(myMcpServer);Tên target của Gateway (mặc định là mcpServerName của MCP server) được sử dụng làm tiền tố cho tên action của Cedar — định dạng action là AgentCore::Action::"<targetName>___<toolName>". Xem phần Writing Policies. Giữ tên target ngắn gọn và ổn định; việc thay đổi nó sau này sẽ làm mất hiệu lực bất kỳ Cedar policy nào tham chiếu đến tên cũ.
Để ghi đè tên target mặc định, hãy truyền gatewayTargetName:
myGateway.addMcpServer(myMcpServer, { gatewayTargetName: 'my-mcp' });Construct cấu hình target với iamCredentialProvider.service = 'bedrock-agentcore' để Gateway ký các lời gọi đi ra bằng execution role của chính nó.
Trong file Terraform nơi bạn khởi tạo Gateway, hãy kết nối MCP server target vào:
module "my_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/my-mcp-server"}
module "my_gateway" { source = "../../common/terraform/src/app/gateways/my-gateway" policy_dependencies = [aws_bedrockagentcore_gateway_target.my_mcp_server.target_id]}
# Register the MCP server as a target of the Gatewayresource "aws_bedrockagentcore_gateway_target" "my_mcp_server" { gateway_identifier = module.my_gateway.gateway_id name = "my-mcp-server"
target_configuration { mcp { mcp_server { endpoint = module.my_mcp_server.invocation_url } } }
credential_provider_configuration { gateway_iam_role { service = "bedrock-agentcore" } }}name của target (my-mcp-server ở trên) được sử dụng làm tiền tố cho tên action của Cedar — xem phần Writing Policies. policy_dependencies đảm bảo các Cedar policy tham chiếu đến các action của target này được tạo sau khi target đã đăng ký chúng.
Phát triển cục bộ
Phần tiêu đề “Phát triển cục bộ”Chạy Gateway cục bộ với:
pnpm nx dev <gateway-name>yarn nx dev <gateway-name>npx nx dev <gateway-name>bunx nx dev <gateway-name>khởi động một gateway cục bộ cùng với mọi MCP server được đính kèm trên cổng cục bộ được chỉ định của nó. Gateway cục bộ cung cấp một endpoint MCP duy nhất tổng hợp các công cụ của các server được đính kèm. Các agent được kết nối với Gateway thông qua generator kết nối gateway TypeScript hoặc Python sẽ trỏ đến nó khi chạy với LOCAL_DEV=true.