·

Google Cloud MCP với Gemini CLI

Cài đặt Google Cloud MCP trong Gemini CLI để AI agent có thể quản lý tài nguyên cloud và điều tra hạ tầng ngay trong trình soạn thảo.

Gemini CLI là công cụ agentic coding chính thức của Google, nên không ngạc nhiên khi trải nghiệm tích hợp với các GCP service qua MCP thường mượt hơn một chút so với các agent bên thứ ba — đặc biệt về xác thực, vì Gemini CLI có thể tái sử dụng chung credential với gcloud mà bạn đã đăng nhập. Bài này hướng dẫn setup GCP MCP với Gemini CLI, cách khai thác nó cho phân tích BigQuery, và một so sánh thẳng thắn về khác biệt output giữa Gemini CLI và Claude Code khi cùng chạy một task.

Cài Đặt Và Kết Nối GCP MCP Với Gemini CLI

Gemini CLI đọc cấu hình MCP từ file ~/.gemini/settings.json (global) hoặc .gemini/settings.json (project-scoped, ưu tiên hơn global nếu tồn tại). Cấu trúc khai báo dùng key mcpServers, khá giống Claude Code:

{
  "mcpServers": {
    "gcp-mcp": {
      "command": "npx",
      "args": ["-y", "@google-cloud/mcp-server", "--project=my-gcp-project-id"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/Users/you/.config/gcloud/agent-mcp-sa-key.json"
      },
      "timeout": 30000
    }
  }
}

Điểm khác biệt đáng chú ý: nếu bạn không set GOOGLE_APPLICATION_CREDENTIALS, Gemini CLI (và MCP server GCP) sẽ tự động fallback sang Application Default Credentials (ADC) mà bạn đã đăng nhập qua gcloud auth application-default login. Điều này tiện cho máy cá nhân, nhưng tôi vẫn khuyên set service account riêng cho agent trong môi trường team, vì lý do audit đã nói ở bài tổng quan GCP MCP.

Sau khi lưu config, chạy gemini trong terminal, rồi gõ /mcp list để xem trạng thái server. Gemini CLI hiển thị số lượng tool đã discover được từ server — nếu con số là 0 hoặc lệnh báo timeout, thường là do project ID sai hoặc service account chưa được cấp quyền roles/serviceusage.serviceUsageConsumer (cần quyền này để gọi API discovery của GCP).

Một tính năng riêng của Gemini CLI là hỗ trợ khai báo trust cho từng MCP server — khi set "trust": true, Gemini CLI sẽ không hỏi xác nhận permission ở mỗi lần gọi tool trong server đó. Tôi khuyên không set trust cho GCP MCP trừ khi bạn đã tách toàn bộ tool write ra một server riêng và chỉ trust server read-only:

{
  "mcpServers": {
    "gcp-mcp-readonly": {
      "command": "npx",
      "args": ["-y", "@google-cloud/mcp-server", "--project=my-gcp-project-id", "--read-only"],
      "trust": true
    }
  }
}

Mẹo: Nếu MCP server GCP hỗ trợ flag --read-only, hãy tách thành hai entry riêng trong settings.json — một bản read-only được trust để khám phá nhanh, một bản đầy đủ quyền không trust để agent luôn phải xin xác nhận trước khi write.

Khám Phá BigQuery Schema Và Xây Dựng Query Phân Tích Trong Gemini CLI

Gemini CLI có xu hướng chủ động khám phá schema kỹ hơn trước khi viết SQL — đây là điểm tôi nhận thấy rõ khi so với các agent khác, có thể do fine-tuning của Google hướng agent làm việc chặt với BigQuery hơn.

Ví dụ prompt khám phá dữ liệu ban đầu:

Dùng GCP MCP, list toàn bộ dataset trong project. Với dataset `finance_reporting`,
lấy schema của tất cả table và giải thích ngắn gọn mục đích có thể của mỗi table
dựa trên tên column.

Với prompt này, agent thường trả về không chỉ schema thô mà còn diễn giải: ví dụ nếu thấy table invoices có column due_date, paid_at, amount_cents, agent sẽ tự suy luận "đây là table lưu hóa đơn, amount_cents gợi ý số tiền lưu dạng cent để tránh sai số float". Khả năng này giúp bạn onboard nhanh vào một dataset lạ mà không cần hỏi team backend.

Sau khi hiểu schema, bạn có thể yêu cầu query phân tích cụ thể:

Viết query BigQuery tính tỷ lệ hóa đơn thanh toán trễ (paid_at > due_date)
theo từng tháng trong năm 2026, group theo customer_segment. Dry-run trước
khi chạy thật, và giải thích logic JOIN nếu cần join với table customers.

Gemini CLI thường trình bày SQL kèm comment giải thích từng bước trong chính câu trả lời (không chỉ trong code block), giúp bạn review logic nhanh hơn, đặc biệt hữu ích khi bạn cần copy query này vào một dashboard hay scheduled query sau đó.

Mẹo: Khi khám phá dataset lạ lần đầu, luôn yêu cầu agent "giải thích mục đích table dựa trên schema" trước khi viết query phức tạp — cách này giúp bạn phát hiện sớm nếu agent hiểu sai ý nghĩa một column (ví dụ nhầm amount là USD trong khi thực tế lưu VND), tránh query sai logic từ gốc.

Ví Dụ Thực Tế: Biến Một Câu Hỏi Kinh Doanh Thành Báo Cáo BigQuery

Đây là workflow đầu-cuối thực tế: một Product Manager hỏi "tại sao conversion rate tháng 7 giảm so với tháng 6", và bạn dùng Gemini CLI + GCP MCP để trả lời bằng data thật trong vòng vài phút thay vì cả buổi viết SQL tay.

Bước 1 — làm rõ scope với agent:

Câu hỏi kinh doanh: "Vì sao conversion rate (tỷ lệ chuyển đổi từ visit sang
order) tháng 7/2026 giảm so với tháng 6/2026?". Dataset liên quan có thể là
`analytics.sessions` và `analytics.orders`. Trước khi viết query, hãy lấy
schema hai table này và đề xuất cách tính conversion rate theo logic hợp lý.

Bước 2 — sau khi agent đề xuất công thức (thường là COUNT(DISTINCT order_session_id) / COUNT(DISTINCT session_id)), xác nhận rồi yêu cầu breakdown theo nhiều chiều để tìm nguyên nhân:

Viết query so sánh conversion rate tháng 6 vs tháng 7, breakdown theo
traffic_source và device_type. Dry-run trước, ước tính chi phí, rồi chạy
nếu dưới 2GB scanned.

Bước 3 — khi có kết quả, yêu cầu agent tự tóm tắt insight thay vì bạn tự đọc bảng số:

Dựa trên kết quả trên, tóm tắt 3 điểm chính về nguyên nhân giảm conversion rate,
ưu tiên breakdown nào có sự sụt giảm rõ rệt nhất, viết ngắn gọn để tôi
paste thẳng vào báo cáo cho PM.

Trong một trường hợp thực tế tương tự tôi từng làm, kết quả breakdown cho thấy conversion rate giảm chủ yếu ở device_type = mobiletraffic_source = paid_social — dẫn tới hướng điều tra tiếp là kiểm tra landing page mobile có vấn đề UX mới deploy trong tháng 7 hay không. Đây chính là giá trị thực của GCP MCP: rút ngắn khoảng cách từ câu hỏi kinh doanh mơ hồ đến insight cụ thể, có data backup.

Mẹo: Luôn yêu cầu agent tóm tắt insight ở bước cuối theo định dạng bạn sẽ dùng thật (bullet point cho báo cáo, một dòng cho Slack) — điều này tiết kiệm thời gian re-format và giúp bạn review dễ hơn là phải tự đọc bảng dữ liệu thô.

So Sánh Kết Quả GCP MCP Giữa Gemini CLI Và Claude Code

Sau khi dùng cả hai cho công việc tương tự trong vài tháng, đây là những khác biệt thực tế đáng lưu ý, không phải chỉ là "cái nào tốt hơn" một cách chung chung — mỗi cái có điểm mạnh riêng theo loại task.

Độ chủ động khám phá schema: Gemini CLI có xu hướng tự động lấy schema và giải thích ngữ nghĩa của column trước khi viết SQL, ngay cả khi bạn không yêu cầu rõ. Claude Code thường viết SQL nhanh hơn dựa trên schema đã lấy, ít "diễn giải" thêm trừ khi bạn hỏi. Nếu bạn làm việc với dataset lạ thường xuyên, trải nghiệm Gemini CLI mượt hơn; nếu bạn đã quen dataset và chỉ cần tốc độ, Claude Code nhanh gọn hơn.

Xử lý lỗi dry-run vượt ngưỡng: cả hai đều dừng lại và báo khi dry-run vượt ngưỡng bạn đặt, nhưng Claude Code có xu hướng đề xuất cụ thể cách tối ưu (thêm partition filter, giảm phạm vi ngày) ngay trong câu trả lời đầu tiên, trong khi Gemini CLI đôi khi cần bạn hỏi thêm "làm sao giảm bytes scanned" mới đưa ra đề xuất tối ưu.

Tích hợp với hệ sinh thái Google: Gemini CLI có lợi thế khi làm việc xuyên nhiều Google service khác ngoài BigQuery (ví dụ Google Sheets, Google Drive nếu bạn có MCP server tương ứng) vì cùng một hệ sinh thái xác thực OAuth. Claude Code không có lợi thế này sẵn, phải setup thêm MCP server riêng cho từng service.

Tốc độ phản hồi với query lớn: trong thực nghiệm cá nhân, với query trả về hàng nghìn dòng, Claude Code stream kết quả partial nhanh hơn một chút, giúp bạn thấy dữ liệu sớm hơn dù chưa xong hoàn toàn; Gemini CLI thường chờ trọn vẹn response rồi hiển thị.

Kết luận thực tế: nếu team bạn đã invest vào Google Workspace và nhiều GCP service khác, Gemini CLI là lựa chọn tự nhiên hơn về lâu dài. Nếu bạn ưu tiên tốc độ và đã quen ecosystem Claude Code cho coding task khác, dùng chung MCP config cho cả coding và data analysis sẽ tiện hơn là chuyển qua lại hai tool.

Mẹo: Nếu team dùng cả hai agent, đảm bảo file cấu hình MCP (settings.json cho Gemini CLI, .mcp.json cho Claude Code) được đồng bộ cùng service account và cùng danh sách quyền IAM — tránh trường hợp một agent có quyền rộng hơn agent khác mà không ai để ý.

Tips

  • Set service account riêng và tắt trust cho mọi MCP server GCP có quyền write, dù Gemini CLI cho phép bật trust để tiện hơn.
  • Khai thác điểm mạnh của Gemini CLI là tự diễn giải schema — dùng nó khi cần onboard nhanh vào dataset lạ trước khi viết query phức tạp.
  • Khi cần tốc độ và đã quen dataset, chuyển sang Claude Code cho các task lặp lại thường xuyên, tiết kiệm thời gian chờ response.