Nếu bạn đã quen với việc dùng AI agent (Claude Code, Cursor, Gemini CLI...) để đọc code, chạy test, hay thao tác Git, thì GCP MCP (Google Cloud Platform Model Context Protocol) là bước tiếp theo: cho agent "cầm" được các công cụ Google Cloud thật — Cloud Storage, BigQuery, Cloud Run, Cloud Logging — thông qua một giao thức chuẩn hóa gọi là MCP (Model Context Protocol). Thay vì bạn phải tự gõ gcloud, tự viết SQL, tự lục log trên Console, agent có thể tự gọi các "tool" này để trả lời câu hỏi, debug lỗi deploy, hay phân tích dữ liệu — miễn là bạn cấu hình đúng quyền và phạm vi truy cập. Bài này sẽ đi từ khái niệm, các tool cốt lõi, đến cách thiết kế quyền an toàn để agent không "phá" hệ thống production.
Các Tool Cốt Lõi Của GCP MCP: Cloud Storage, BigQuery, Cloud Run Và Cloud Logging
GCP MCP không phải một API monolithic mà là một tập hợp tool (function) được expose qua MCP server, mỗi tool tương ứng với một action cụ thể trên một GCP service. Hiểu rõ phạm vi của từng tool giúp bạn biết agent "làm được gì" và "không làm được gì" trước khi giao task.
Cloud Storage (GCS) — tool nhóm này cho agent list bucket, list object theo prefix, đọc metadata file, và trong một số MCP server còn hỗ trợ đọc nội dung file text/JSON nhỏ trực tiếp. Ví dụ tool gcs_list_objects nhận tham số bucket và prefix, trả về danh sách object key kèm size, thời gian cập nhật.
BigQuery — đây là nhóm tool mạnh nhất và cũng rủi ro nhất về chi phí. Thường có bigquery_list_datasets, bigquery_get_table_schema, bigquery_run_query (hoặc bigquery_dry_run để estimate trước khi chạy thật). Agent có thể tự viết SQL dựa trên schema thật, nhưng bạn cần kiểm soát để nó không quét full table trên dataset hàng terabyte.
Cloud Run — tool đọc thông tin service, revision, traffic split, và log liên quan (run_describe_service, run_list_revisions). Đây chủ yếu là tool đọc (read-only) trong hầu hết setup mặc định — an toàn để agent tự do khám phá khi debug.
Cloud Logging — tool query log theo filter (giống cú pháp gcloud logging read), hữu ích khi agent cần trace một lỗi 500 hay tìm request ID cụ thể trong hàng triệu log entry.
Ví dụ cấu hình MCP server tối giản (dùng cho Claude Code, lưu trong .mcp.json ở root project):
{
"mcpServers": {
"gcp-mcp": {
"command": "npx",
"args": ["-y", "@google-cloud/mcp-server", "--project=my-gcp-project-id"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/Users/you/.config/gcloud/adc-key.json"
}
}
}
}
Mẹo: Trước khi giao bất kỳ task nào cho agent, hãy tự hỏi "tool này là read hay write?". Với BigQuery và Cloud Run, luôn ưu tiên bật các tool ở chế độ read-only (
--read-onlyhoặc scope IAM viewer) cho giai đoạn khám phá, chỉ mở quyền write khi task thực sự cần deploy hoặc backfill dữ liệu.
Xác Thực GCP MCP: Service Account, ADC Và Project Scoping
MCP server không tự có quyền — nó mượn credential của bạn hoặc của một service account (tài khoản dịch vụ) để gọi API GCP. Có ba cách phổ biến, mỗi cách có trade-off khác nhau.
Application Default Credentials (ADC) là cách nhanh nhất cho máy cá nhân: chạy gcloud auth application-default login, GCP SDK sẽ lưu credential vào ~/.config/gcloud/application_default_credentials.json và mọi thư viện client (bao gồm MCP server) tự động dùng nó. Ưu điểm: setup 30 giây. Nhược điểm: credential này gắn với tài khoản cá nhân của bạn — nếu agent chạy query nặng, log audit sẽ ghi nhận là bạn chạy, không phân biệt được "người" và "agent".
Service account key file — tạo một service account riêng cho agent (agent-mcp-sa@my-project.iam.gserviceaccount.com), generate key JSON, và set biến môi trường GOOGLE_APPLICATION_CREDENTIALS chỉ tới file đó. Đây là cách tôi khuyên dùng cho môi trường team hoặc CI, vì bạn có thể audit riêng, revoke riêng, và gắn IAM role tối thiểu (least privilege) riêng cho agent mà không ảnh hưởng account cá nhân.
gcloud iam service-accounts create agent-mcp-sa \
--display-name="AI Agent MCP Service Account"
gcloud iam service-accounts keys create ./agent-mcp-sa-key.json \
--iam-account=agent-mcp-sa@my-gcp-project-id.iam.gserviceaccount.com
Workload Identity Federation — nếu agent chạy trong CI/CD (GitHub Actions, GitLab CI), tránh dùng key file tĩnh (rất dễ leak). Thay vào đó, cấu hình Workload Identity Federation để CI "đổi" token OIDC lấy quyền truy cập GCP tạm thời, không cần lưu key JSON nào cả.
Về project scoping: luôn set rõ --project khi khởi tạo MCP server, đừng để agent tự suy luận project nào đang active từ gcloud config. Trong tổ chức có nhiều project (dev/staging/prod), việc agent gõ nhầm project là rủi ro thật — tôi đã từng thấy agent chạy query trên dataset staging vì gcloud config đang set nhầm, dẫn đến kết quả phân tích sai mà không ai nhận ra ngay.
Mẹo: Luôn tạo một service account riêng theo từng môi trường (dev-agent-sa, prod-agent-sa) và không bao giờ cấp key của prod-agent-sa cho máy local của developer — chỉ nên cấp trong pipeline CI có audit log.
AI Có Thể Tự Động Hóa Gì Trên GCP: Data Query, Kiểm Tra Deploy, Phân Tích Log
Với bộ tool trên, agent thực sự hữu dụng ở ba nhóm việc chính.
Data query & phân tích — bạn có thể hỏi bằng ngôn ngữ tự nhiên: "Tìm 10 khách hàng có giá trị order trung bình cao nhất trong Q2 2026 từ dataset sales.orders", agent sẽ tự lấy schema, viết SQL, chạy dry-run estimate cost, rồi mới thực thi nếu bạn xác nhận. Đây tiết kiệm rất nhiều thời gian so với việc bạn tự nhớ tên cột, tự viết JOIN.
Kiểm tra deploy (deploy inspection) — khi một service Cloud Run vừa deploy xong nhưng traffic không chuyển hết sang revision mới, bạn có thể hỏi "Revision mới nhất của service checkout-api có đang nhận traffic không? Nếu không thì vì sao?" — agent sẽ gọi run_describe_service, đọc traffic split, kiểm tra trạng thái revision (Ready/Failed), và tóm tắt nguyên nhân (ví dụ container health check fail).
Phân tích log — khi có alert lỗi 500 tăng đột biến, thay vì bạn tự mở Cloud Logging Console và viết filter, agent có thể query trực tiếp: "Tìm tất cả log ERROR của service payment-service trong 30 phút qua, group theo error message" rồi tổng hợp pattern lỗi phổ biến nhất.
Ví dụ prompt thực tế gửi cho agent (qua Claude Code hoặc Cursor):
Dùng GCP MCP, kiểm tra schema của table `analytics.daily_active_users`,
sau đó viết query BigQuery tính % tăng trưởng DAU theo tuần trong 8 tuần gần nhất.
Chạy dry-run trước để estimate chi phí, chỉ chạy thật nếu ước tính dưới 1GB scanned.
Mẹo: Luôn yêu cầu agent "dry-run trước, chạy thật sau" thành một quy tắc cố định trong system prompt hoặc project instructions — điều này giúp bạn tránh việc agent vô tình quét full table và tốn phí BigQuery không cần thiết.
Thiết Kế IAM Role Và Guardrail Về Billing Cho Agent Access
Đây là phần quan trọng nhất và cũng dễ bị bỏ qua nhất khi mới setup GCP MCP: quyền hạn của agent chính là quyền hạn của service account mà nó dùng, và một agent hoạt động sai (hoặc bị prompt injection dẫn dụ) với quyền quá rộng có thể gây thiệt hại thật — từ xóa nhầm dữ liệu đến chạy query tốn hàng trăm đô.
Nguyên tắc least privilege (đặc quyền tối thiểu): chỉ cấp đúng role cần cho từng nhóm tool, tách riêng theo môi trường.
gcloud projects add-iam-policy-binding my-gcp-project-id \
--member="serviceAccount:agent-mcp-sa@my-gcp-project-id.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"
gcloud projects add-iam-policy-binding my-gcp-project-id \
--member="serviceAccount:agent-mcp-sa@my-gcp-project-id.iam.gserviceaccount.com" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding my-gcp-project-id \
--member="serviceAccount:agent-mcp-sa@my-gcp-project-id.iam.gserviceaccount.com" \
--role="roles/run.viewer"
gcloud projects add-iam-policy-binding my-gcp-project-id \
--member="serviceAccount:agent-mcp-sa@my-gcp-project-id.iam.gserviceaccount.com" \
--role="roles/logging.viewer"
Guardrail về billing — BigQuery tính phí theo dữ liệu scan, và một agent "tò mò" có thể vô tình viết SELECT * trên table hàng chục TB. Hai lớp bảo vệ nên có:
- Custom quota / maximum bytes billed: set giới hạn
maximumBytesBilledở mức job config, hoặc dùng BigQuery reservation với slot cố định để tránh cost tăng vọt không kiểm soát. - Budget alert: tạo budget alert trên project riêng cho agent (
gcloud billing budgets create) để nhận cảnh báo ngay khi chi phí trong ngày vượt ngưỡng bất thường, thay vì phát hiện ra ở cuối tháng khi nhận hóa đơn.
Ngoài ra, đừng bao giờ gắn role roles/owner hay roles/editor cho service account của agent "cho tiện" — đó là anti-pattern phổ biến nhất tôi thấy khi review setup MCP của các team mới bắt đầu.
Mẹo: Tạo riêng một project GCP (hoặc ít nhất một billing alert riêng) chỉ để agent thao tác, tách biệt hoàn toàn với billing account chính — nếu có sự cố, blast radius (phạm vi ảnh hưởng) chỉ giới hạn trong project đó.
Tips
- Luôn bắt đầu với bộ role viewer/read-only cho mọi service, chỉ nâng quyền write theo từng tool cụ thể khi có nhu cầu rõ ràng, không nâng quyền "cho cả nhóm" để tiện.
- Định kỳ (hàng quý) review lại IAM policy binding của service account dùng cho agent — nhiều team cấp quyền tạm thời để test rồi quên gỡ, tạo lỗ hổng bảo mật âm ỉ.
- Log lại mọi lệnh agent thực thi qua MCP (nếu MCP server hỗ trợ audit log) để có thể trace lại khi cần điều tra sự cố, tương tự như bạn audit CI/CD pipeline.