Cursor là IDE fork từ VS Code, tích hợp sẵn agentic coding vào ngay editor thay vì chỉ chạy ở terminal như Claude Code CLI hay Gemini CLI. Với Agent Mode, Cursor có thể đọc toàn bộ codebase đang mở, tự sửa nhiều file, và — khi gắn thêm AWS MCP — tự tra cứu tài nguyên AWS thật ngay trong lúc bạn đang code, không cần rời khỏi editor để mở console hay terminal riêng. Đây là workflow đặc biệt hữu ích cho việc vừa viết code vừa cần xác nhận state hạ tầng liên tục, ví dụ khi sửa một Lambda function mà cần biết chính xác biến môi trường, IAM role, hoặc trigger hiện tại đang cấu hình ra sao trên account thật.
Kết Nối AWS MCP vào Cursor Agent Mode
Cursor đọc cấu hình MCP server từ file .cursor/mcp.json ở root project (scope project, nên commit vào repo trừ phần credential) hoặc ~/.cursor/mcp.json (scope global, áp dụng cho mọi project bạn mở bằng Cursor).
Bước 1 — chuẩn bị AWS SSO profile như các bài trước:
aws configure sso --profile ai-agent-sso
aws sso login --profile ai-agent-sso
Bước 2 — tạo file .cursor/mcp.json ở root repo:
{
"mcpServers": {
"aws-mcp": {
"command": "uvx",
"args": ["awslabs.core-mcp-server@latest"],
"env": {
"AWS_PROFILE": "ai-agent-sso",
"AWS_REGION": "ap-southeast-1"
}
}
}
}
Bước 3 — mở Cursor Settings, vào mục MCP, xác nhận server aws-mcp hiện trạng thái xanh (connected) và có thể xem danh sách tool đã expose. Sau đó, trong Agent Mode (phím tắt thường là Cmd/Ctrl+I hoặc chat panel với chế độ Agent), bạn có thể prompt trực tiếp và agent sẽ tự quyết định lúc nào cần gọi tool AWS MCP.
Một điểm khác biệt quan trọng so với công cụ chạy terminal: Cursor có UI riêng để hiển thị từng tool call agent thực hiện ngay trong luồng chat, kèm nút cho phép bạn xem chi tiết input/output của tool đó — rất hữu ích để verify agent không "bịa" dữ liệu resource mà thực sự đã gọi tool và lấy giá trị thật.
Mẹo: Sau khi thêm server mới, luôn mở lại panel MCP trong Settings để xác nhận trạng thái connected trước khi bắt đầu task — nếu bạn gõ prompt ngay trong khi server còn đang khởi động (nhất là server chạy qua
uvxlần đầu cần download package), agent có thể trả lời sai rằng "không có quyền truy cập AWS" trong khi thực chất chỉ là chưa kết nối xong.
Đối Chiếu Code Ứng Dụng Với Cấu Hình AWS Resource Thực Tế
Giá trị lớn nhất của việc chạy AWS MCP ngay trong IDE là bạn có thể vừa nhìn code, vừa yêu cầu agent xác nhận cấu hình thật khớp với những gì code đang giả định. Ví dụ khi đang sửa một Lambda handler:
Prompt: "Tôi đang mở file src/handlers/order-webhook.ts. Function này
được deploy với tên order-webhook-prod. Kiểm tra memory size, timeout,
và toàn bộ biến môi trường hiện tại trên AWS có khớp với những gì code
đang đọc qua process.env không — liệt kê biến nào code cần mà chưa thấy
trong config thực tế."
Đây là cách phát hiện rất nhanh một lớp lỗi phổ biến: code đã được cập nhật để đọc thêm một biến môi trường mới, nhưng deploy pipeline hoặc người vận hành quên set biến đó trên Lambda thật, dẫn tới lỗi runtime chỉ xuất hiện ở production.
Một ví dụ khác, khi sửa code liên quan tới permission:
Prompt: "File src/services/s3-uploader.ts vừa được sửa để gọi thêm
s3:PutObjectAcl ngoài s3:PutObject. Kiểm tra execution role của Lambda
order-webhook-prod xem đã có action s3:PutObjectAcl trong policy hay
chưa, nếu chưa thì đề xuất policy statement cần thêm."
Việc đối chiếu này nên trở thành thói quen mỗi khi pull request đụng tới cấu hình runtime hoặc quyền hạn — review bằng mắt code diff không đủ để biết infra thật có đồng bộ hay không, còn tự vào console tra tay thì chậm và dễ bỏ sót.
Mẹo: Thêm bước "đối chiếu code với resource thật qua AWS MCP" vào checklist review cho mọi PR có sửa biến môi trường, IAM policy, hoặc trigger — làm việc này ngay trong Cursor trước khi tạo PR sẽ rẻ hơn rất nhiều so với phát hiện lỗi sau khi đã deploy.
Tạo Fix Hạ Tầng Dựa Trên Trạng Thái Thực Của Account Trong Cursor
Sau khi phát hiện lệch cấu hình, bước tiếp theo tự nhiên là để agent đề xuất fix — nhưng luôn dưới dạng thay đổi trong code/IaC để bạn review, không phải áp thẳng lên AWS qua console.
Prompt: "Dựa trên phần thiếu biến môi trường DATABASE_POOL_SIZE đã phát
hiện ở trên, sửa file terraform/lambda/order-webhook.tf để thêm biến này
vào block environment, giá trị mặc định là 10. Không tự chạy terraform
apply, chỉ sửa file để tôi review diff."
Prompt: "Dựa trên policy s3:PutObjectAcl còn thiếu, sửa file
terraform/iam/order-webhook-role.tf để thêm action này vào policy
statement hiện có, resource giữ nguyên ARN cụ thể của bucket, không dùng
wildcard."
Vì Cursor hiển thị diff ngay trong editor giống một pull request nhỏ, bạn review từng dòng thay đổi trước khi accept, sau đó chạy terraform plan/terraform apply (hoặc pipeline CI/CD của team) như một bước tách biệt, có kiểm soát — AI chỉ đóng vai trò viết đúng thay đổi dựa trên state thật, con người vẫn là người quyết định apply.
Với các fix liên quan tới logic ứng dụng (không phải IaC), ví dụ xử lý lại retry khi gặp throttle từ một service AWS, bạn cũng có thể yêu cầu agent tham chiếu ngay metric thật:
Prompt: "Metric Throttles của Lambda order-webhook-prod tăng cao trong 2
giờ qua. Sửa hàm callDownstreamApi trong src/services/order-client.ts
để thêm exponential backoff, giá trị max retry và base delay nên tính
dựa trên concurrency limit hiện tại của function này."
Mẹo: Luôn yêu cầu agent trích dẫn lại số liệu thật (memory size, giá trị metric, ARN resource) ngay trong comment của đoạn code vừa sửa hoặc trong message commit — việc này giúp người review sau không phải tự tra lại AWS để hiểu vì sao con số cụ thể đó (ví dụ base delay 200ms) được chọn.
Hạn Chế và An Toàn Credential Khi Dùng Cursor
Vì Cursor chạy MCP server như một child process ngay trên máy bạn (không phải trên server riêng), credential AWS đang dùng cho AWS MCP tồn tại ngay trong session làm việc hàng ngày của bạn — rủi ro lớn nhất không phải là AWS MCP tự nó kém an toàn, mà là việc vô tình dùng chung một profile có quyền rộng cho cả việc code thường ngày và việc tra cứu AI.
Một hạn chế thực tế khác: vì Cursor là closed-source và gửi phần lớn context (bao gồm cả output từ tool AWS MCP) lên hạ tầng của Cursor để xử lý qua model, đội ngũ security/compliance ở một số công ty (đặc biệt lĩnh vực tài chính, y tế) cần review kỹ chính sách xử lý dữ liệu của Cursor trước khi cho phép AWS MCP trả về dữ liệu nhạy cảm (ví dụ log chứa PII) vào trong session Cursor.
Ngoài ra, vì Agent Mode có thể tự động chạy nhiều bước liên tiếp (đọc file, gọi tool AWS MCP, sửa file) mà không dừng lại hỏi ở mỗi bước tuỳ theo cấu hình mức độ tự động, bạn nên chủ động kiểm tra cấu hình quyền tool-call trong Settings, đặc biệt với các tool AWS MCP có khả năng ghi/xoá — luôn set những tool đó ở mức cần xác nhận thủ công (ask-before-run), không auto-approve.
Mẹo: Tạo riêng một IAM profile chỉ có quyền read-only, gắn tag rõ ràng (ví dụ
Purpose=ai-agent-readonly) để dùng cho AWS MCP trong Cursor, và audit định kỳ CloudTrail xem profile này có bao giờ được dùng để gọi action ghi/xoá không — nếu có, đó là dấu hiệu cấu hình quyền tool-call trong Cursor đang lỏng hơn bạn nghĩ.
Tổng Kết và Mẹo Sử Dụng
- Cấu hình AWS MCP qua
.cursor/mcp.json, xác nhận trạng thái connected trong Settings trước khi bắt đầu task thật. - Dùng Agent Mode để đối chiếu code với cấu hình AWS thật, đặc biệt với biến môi trường và IAM policy sau mỗi thay đổi liên quan.
- Luôn để agent sửa file IaC/code để review, không cho tự động apply thay đổi lên AWS thật.
- Trích dẫn số liệu thật vào comment/commit message để người review sau không phải tự tra lại AWS.
- Tách riêng IAM profile read-only cho AWS MCP, không auto-approve các tool có khả năng ghi/xoá trong Agent Mode.
Mẹo: Định kỳ (ví dụ mỗi quý) rà lại toàn bộ danh sách MCP server đã cấu hình trong
.cursor/mcp.jsoncủa các project đang active — dự án cũ không còn ai maintain nhưng vẫn giữ server AWS MCP kết nối với credential thật là một rủi ro bảo mật dễ bị bỏ quên.