Mulai Menggunakan Server MCP Google

1. Pengantar

Selamat datang! Dalam codelab ini, Anda akan mempelajari cara meningkatkan kemampuan agen AI menggunakan Server Model Context Protocol (MCP) yang Dikelola Google.

Model Context Protocol (MCP) adalah standar open source yang memungkinkan model AI terhubung secara aman dan efisien ke sumber data dan alat eksternal. Meskipun sebagian besar penerapan MCP berjalan secara lokal di komputer Anda, Google menyediakan Server MCP Jarak Jauh Terkelola. Endpoint ini dihosting sepenuhnya dan siap digunakan perusahaan, sehingga memungkinkan agen Anda berinteraksi langsung dengan infrastruktur Google Cloud tanpa Anda harus mengelola kode atau container sisi server.

Keunggulan "Dikelola"

Tidak seperti server MCP lokal yang menggunakan input/output standar (stdio), server terkelola Google menggunakan HTTP yang Dapat Di-stream. Arsitektur ini menawarkan:

  • Tanpa Infrastruktur: Tidak ada server yang perlu disediakan atau diskalakan.
  • Security by Design: Integrasi native dengan IAM dan Audit Logs Google Cloud.
  • Penskalaan Stateless: Interaksi yang lancar melalui load balancer dan proxy standar.

Yang akan Anda pelajari

  • Cara mengaktifkan dan mengautentikasi Server MCP Terkelola.
  • Cara menggunakan Server MCP Cloud Logging sebagai dasar pokok.
  • Cara mengorkestrasi beberapa server MCP (Pengetahuan Developer, Firestore, dll.) untuk membangun alur kerja otonom.

Yang Anda butuhkan

  • Project Google Cloud dengan penagihan diaktifkan.
  • Pemahaman tentang Konsol Google Cloud dan gcloud CLI.
  • Google Cloud Shell (Gemini CLI sudah terinstal di sini).

Codelab ini dirancang untuk pengguna dan developer dari semua tingkat keahlian (termasuk pemula).

Melaporkan masalah

Saat mengerjakan codelab dan Antigravity, Anda mungkin mengalami masalah.

Untuk masalah terkait codelab (salah ketik, petunjuk yang salah), buka bug dengan tombol Report a mistake di sudut kiri bawah codelab ini:

b06b582bcd847f6d.png

2. Sebelum Memulai

Pada langkah ini, Anda akan menyiapkan lingkungan Google Cloud. Kita akan melakukan semua tugas dalam Google Cloud Shell, yang menyediakan terminal persisten yang telah dikonfigurasi sebelumnya.

Mengaktifkan Cloud Shell

  1. Buka Konsol Google Cloud.
  2. Klik ikon Activate Cloud Shell di header kanan atas.
  3. Setelah sesi terminal dimulai, izinkan perintah jika diminta.

Menetapkan Project ID

Pastikan Cloud Shell Anda mengarah ke project yang benar:

# Set your active project
gcloud config set project YOUR_PROJECT_ID

# Verify the setting
gcloud config list project

Mengaktifkan Foundation API

Server MCP terkelola memerlukan pengaktifan API produk yang mendasarinya dan antarmuka MCP. Jalankan perintah berikut untuk mengaktifkan backend Cloud Logging (dasar untuk lab ini):

# Enable the Cloud Logging API and its MCP interface
gcloud services enable logging.googleapis.com
gcloud beta services mcp enable logging.googleapis.com

Catatan: Layanan MCP terkelola saat ini dalam versi Beta. Anda harus menggunakan komponen gcloud beta untuk mengaktifkannya.

Menyiapkan Kredensial Default Aplikasi (ADC)

Gemini CLI menggunakan identitas pengguna Anda untuk berkomunikasi dengan server MCP. Beri agen izin untuk bertindak atas nama Anda:

gcloud auth application-default login

Buka URL di terminal, login, lalu tempelkan kembali kode otorisasi ke Cloud Shell.

Menetapkan Peran IAM Dasar

Server MCP terkelola menggunakan Model Keamanan Lapisan Ganda. Anda memerlukan dua "gerbang" khusus yang terbuka:

  1. Gerbang 1 (Akses MCP): Peran yang memungkinkan Anda memanggil protokol.
  2. Gerbang 2 (Akses Layanan): Peran yang memungkinkan Anda melihat data (misalnya, melihat log).

Jalankan perintah berikut untuk memberi diri Anda akses yang diperlukan:

export PROJECT_ID=$(gcloud config get-value project)
export USER_EMAIL=$(gcloud config get-value account)

# Gate 1: Permission to use the MCP protocol
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/mcp.toolUser"

# Gate 2: Permission to view the actual logs
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/logging.viewer"

3. Dasar-Dasar: Menghubungkan Server MCP Pertama Anda

Pada langkah ini, Anda akan menautkan agen AI (Gemini CLI) ke Server MCP Google Cloud Logging. Ini adalah "dasar" kami karena memungkinkan agen melihat apa yang terjadi di dalam project Anda secara real-time.

Tugas 1: Mengonfigurasi Server MCP Logging

Gemini CLI menggunakan file settings.json untuk mengelola koneksinya. Anda harus mengedit file ini (ada di folder ~/.gemini) untuk menambahkan cuplikan berikut di dalam blok mcpServers. Ganti YOUR_PROJECT_ID dengan Project ID Anda yang sebenarnya:

"logging-mcp": {
      "httpUrl": "https://logging.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/logging.read"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
}

Catatan: Header x-goog-user-project diperlukan untuk server MCP Terkelola guna memastikan penggunaan dan penagihan API dikaitkan dengan benar ke project Anda.

Tugas 2: Menyimulasikan Aktivitas Project (Membuat Log)

Jika project Anda baru atau tidak aktif, project tersebut mungkin tidak memiliki log "menarik" terbaru. Mari kita gunakan CLI gcloud untuk menyuntikkan beberapa entri kustom sehingga agen memiliki sesuatu untuk ditemukan.

Jalankan perintah ini satu per satu untuk menyimulasikan urutan peristiwa:

# 1. Simulate a standard system start
gcloud logging write mcp-test-log "System boot sequence initiated" --severity=INFO
# 2. Simulate a warning about resource limits
gcloud logging write mcp-test-log "High memory pressure detected in zone us-central1-a" --severity=WARNING
# 3. Simulate a critical authentication failure
gcloud logging write mcp-test-log "ERROR: Failed to connect to Cloud SQL. Permission Denied." --severity=ERROR

Tugas 3: Memverifikasi Alat di Gemini CLI

Sebelum kita memulai percakapan, mari kita verifikasi bahwa agen dapat "melihat" alat yang diekspos oleh server Logging. Buka Gemini CLI:

gemini

Setelah berada di dalam perintah Gemini CLI (>), jalankan perintah list:

/mcp list

Pos Pemeriksaan Verifikasi: Anda akan melihat logging-mcp tercantum sebagai Siap dengan sekitar 6 alat yang tersedia, termasuk list_log_entries.

Tugas 4: Perintah Infrastruktur Live Pertama Anda

Sekarang, minta agen untuk menemukan log yang baru saja kita buat. Karena Anda memberikan peran roles/logging.viewer sebelumnya, agen kini dapat "menghubungi" dan membaca status project Anda.

Ketik perintah berikut ke Gemini CLI:

Show me the 3 most recent log entries from the log named 'mcp-test-log'. What is the highest severity issue you see?

Mengamati Agen:

  1. Agen mungkin meminta ID Project Google Cloud Anda. Harap berikan informasi tersebut.
  2. Agen akan mengidentifikasi bahwa ia memerlukan alat list_log_entries.
  3. Anda akan diminta izin untuk menjalankan alat tersebut. Pilih 1. Ya, izinkan sekali.
  4. Aplikasi ini akan mengurai respons JSON dan memberi tahu Anda tentang error Cloud SQL Permission Denied yang kami simulasikan.

4. Perjalanan A: Otak (MCP Pengetahuan Developer)

Dalam perjalanan ini, Anda akan memberi agen Anda "otak" dengan menghubungkannya ke Server MCP Pengetahuan Developer Google.

Salah satu risiko terbesar agen AI adalah halusinasi—dengan yakin memberikan perintah CLI yang sudah tidak berlaku atau parameter API yang sudah tidak digunakan lagi. Server MCP ini menyelesaikannya dengan mendasarkan agen pada korpus dokumentasi developer live resmi Google (yang mencakup Google Cloud, Firebase, Android, dan lainnya).

Tugas 1: Aktifkan Layanan Pengetahuan

Seperti langkah dasar, kita harus mengaktifkan API backend dan endpoint layanan MCP.

# 1. Enable the Developer Knowledge API
gcloud services enable developerknowledge.googleapis.com

# 2. Enable the MCP Server interface
gcloud beta services mcp enable developerknowledge.googleapis.com

Tugas 2: Menyediakan Kunci API Terbatas

MCP Pengetahuan Developer menggunakan Kunci API untuk autentikasi. Untuk keamanan, kita akan membuat kunci dan membatasinya agar hanya dapat digunakan dengan API tertentu ini.

  1. Jalankan skrip berikut untuk membuat dan mengambil kunci Anda:
# Create the restricted API key
gcloud alpha services api-keys create \
    --display-name="MCP-Knowledge-Key" \
    --api-target service=developerknowledge.googleapis.com

# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Knowledge-Key'" \
    --format="value(name)") \
    --format="value(keyString)"
  1. Salin string panjang karakter yang ditampilkan oleh perintah kedua. Ini adalah YOUR_API_KEY Anda.

Tugas 3: Mengonfigurasi Gemini CLI

Sekarang, daftarkan server MCP Knowledge dengan agen Anda. Hal ini memungkinkan agen menelusuri dokumen resmi setiap kali menemukan pertanyaan teknis yang tidak dapat dijawab dengan kepastian 100%.

Tambahkan cuplikan berikut di dalam bagian mcpServers dalam file ~/.gemini/settings.json Anda, dengan mengganti YOUR_API_KEY dengan string yang baru saja Anda salin:

"developer-knowledge-mcp": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_API_KEY"
      }
}

Tugas 4: Uji Anti-Halusinasi

Mari kita verifikasi bahwa agen sekarang "melakukan riset" dan bukan "menebak".

Buka Gemini CLI:

gemini

Verifikasi bahwa server sudah Siap: Ketik /mcp list. Anda akan melihat google-developer-knowledge dengan 2 alat (search_documents, get_document).

Perintah: Minta agen untuk menemukan perintah modern tertentu.

I want to create a Google Cloud Storage bucket using the modern gcloud storage command. Search the official documentation for the exact syntax and show me an example for a bucket in the 'us-central1' region.

Yang harus diperhatikan:

  • Gemini akan meminta izin untuk menggunakan search_documents.
  • Kemudian, kemungkinan akan memanggil get_document untuk membaca halaman tertentu yang ditemukannya.
  • Jawaban akhir harus menyertakan perintah gcloud storage buckets create ..., yang dikutip langsung dari dokumentasi.

5. Perjalanan B: Triase (Pemecahan Masalah Otonom)

Prasyarat: Perjalanan ini mengharuskan Anda telah menyelesaikan Perjalanan A: Otak agar agen dapat meneliti perbaikan.

Dalam perjalanan ini, Anda akan menggabungkan Mata (MCP Cloud Logging) dan Otak (MCP Pengetahuan Developer) agen untuk membangun Loop Pemecahan Masalah Mandiri.

Daripada menyalin kode error secara manual ke mesin telusur, Anda akan memberi agen satu perintah untuk memindai project Anda guna menemukan error, meneliti penyelesaian resminya, dan membuat laporan perbaikan yang dapat ditindaklanjuti.

Tugas 1: Mensimulasikan "Hari Buruk" di GCP

Untuk melihat kemampuan pemecahan masalah otonom, kita memerlukan serangkaian kegagalan yang realistis. Kita akan menggunakan skrip Python untuk menyuntikkan berbagai hambatan infrastruktur—dari error izin ditolak hingga masalah kuota—langsung ke log Anda.

  1. Di Cloud Shell, buat folder pilihan Anda dan buka folder tersebut.
  2. buat file bernama simulate_errors.py:
nano simulate_errors.py
  1. Tempelkan kode berikut ke dalam editor:
import argparse
from google.cloud import logging

def simulate_errors(project_id):
    client = logging.Client(project=project_id)
    logger = client.logger("mcp-scenario-logger")

    print(f"Simulating realistic errors for project: {project_id}...")

    # 1. GCS Permission Error
    logger.log_text("ERROR: GCS Upload failed for 'gs://my-app-bucket/data.json'. Status: 403 Forbidden. Missing 'storage.objects.create' for service account.", severity="ERROR")

    # 2. Cloud Run Startup Error
    logger.log_text("ERROR: Cloud Run service 'api-gateway' failed to start. Container failed to listen on port 8080. Check 'Cloud Run container startup requirements'.", severity="ERROR")

    # 3. Secret Manager Access Error
    logger.log_text("ERROR: Access denied to secret 'API_KEY'. The identity lacks 'secretmanager.versions.access'.", severity="ERROR")

    print("Log entries written to 'mcp-scenario-logger'.")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--project", required=True)
    args = parser.parse_args()
    simulate_errors(args.project)
  1. Tekan Ctrl+O, Enter, dan Ctrl+X untuk menyimpan dan keluar.
  2. Instal library Google Cloud Logging dan jalankan skrip:
python -m venv mcp_env
source mcp_env/bin/activate
pip install google-cloud-logging
python simulate_errors.py --project $(gcloud config get-value project)

Tugas 2: Menjalankan Loop Otonom

Sekarang, kita akan mengirimkan perintah kompleks yang menginstruksikan Gemini untuk mengoordinasikan kedua server MCP secara bersamaan.

Buka Gemini CLI:

gemini

Ketik "Perintah Utama" ini ke dalam agen:

I need to troubleshoot recent issues in my project. Perform the following autonomous loop:

Step 1 : Retrieval: Use the Logging MCP to fetch the 5 most recent ERROR entries from the log 'mcp-scenario-logger'.
Step 2 : Iteration: For every unique error found, extract the service and specific error message.
Step 3 : Research: Use the Developer Knowledge MCP to find the official resolution or gcloud command to fix each issue.
Step 4 : Resolution: Consolidate everything into a markdown table with columns: | Service | Error Summary | Recommended Fix |.

Proses selanjutnya

Sekarang Anda sedang menonton Alur Kerja Agentik secara real-time. Agen akan:

  1. Panggil list_log_entries untuk melihat "Hari Buruk" yang baru saja kita simulasikan.
  2. Analisis teks untuk mengidentifikasi bahwa GCS, Cloud Run, dan Secret Manager gagal.
  3. Panggil search_documents dan get_document untuk setiap layanan tersebut guna menemukan peran IAM atau perbaikan konfigurasi yang benar.
  4. Menyajikan tabel terstruktur yang terlihat mirip dengan ini (rekomendasinya dapat berbeda):

Layanan

Ringkasan Error

Perbaikan yang Direkomendasikan

Cloud Storage

403 Dilarang saat mengupload

Berikan roles/storage.objectCreator ke akun layanan.

Cloud Run

Gagal memproses di port 8080

Pastikan aplikasi terikat ke 0.0.0.0 di port yang ditentukan oleh $PORT.

Secret Manager

Peran akses versi tidak ada

Tetapkan roles/secretmanager.secretAccessor ke identitas.

6. Perjalanan C: Data (MCP Firestore)

Dalam perjalanan ini, Anda akan menggunakan Server MCP Firestore untuk mengelola database dokumen NoSQL hanya dengan menggunakan bahasa alami.

Firestore adalah database yang fleksibel dan skalabel, tetapi pengelolaannya sering kali memerlukan penulisan kode SDK yang kompleks atau penelusuran konsol. Dengan MCP, agen Anda menjadi Administrator Database, yang mampu mengisi data, membuat kueri catatan, dan bahkan melakukan migrasi skema yang kompleks melalui chat.

Tugas 1: Aktifkan Layanan Firestore

Pertama, aktifkan Firestore API dan endpoint MCP yang sesuai.

# 1. Enable the Firestore API
gcloud services enable firestore.googleapis.com

# 2. Enable the MCP Server interface
gcloud beta services mcp enable firestore.googleapis.com

Tugas 2: Tetapkan Peran IAM Firestore

Untuk menjalankan kueri, identitas Anda memerlukan izin khusus di luar akses MCP dasar.

# Grant Firestore User role
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/datastore.user"

Tugas 3: Membuat Database Pengujian Khusus

Untuk menjaga keamanan eksperimen, kita akan membuat database Firestore khusus bernama mcp-lab-db.

gcloud firestore databases create --database=mcp-lab-db --location=nam5 --type=firestore-native

Tugas 4: Mengonfigurasi Gemini CLI

Tambahkan server MCP Firestore ke agen Anda. Tambahkan konfigurasi berikut ke bagian mcpServers di file ~/.gemini/settings.json. Ganti YOUR_PROJECT_ID dengan Project ID Anda yang sebenarnya:

"firestore-mcp": {
      "httpUrl": "https://firestore.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
}

Tugas 5: Operasi DB Natural Language

Luncurkan Gemini CLI dan lakukan beberapa operasi dasar untuk memverifikasi koneksi.

Buka Gemini CLI:

gemini

Verifikasi bahwa server sudah Siap: Ketik /mcp list. Anda akan melihat firestore-mcp dengan beberapa alat (add_document, create_database, list_documents, etc).

Coba perintah berikut secara berurutan:

Data Awal:

In the 'mcp-lab-db' database, add three documents to a 'products' collection. Include a laptop (stock 5), a mouse (stock 25), and a keyboard (stock 8).

Verifikasi:

List all documents in the 'products' collection from the 'mcp-lab-db' database.

Coba perintah lain yang membantu Anda mengelola database dan koleksi Firestore melalui bahasa alami.

7. Perjalanan D: Kecerdasan (BigQuery & Maps)

Dalam perjalanan ini, Anda akan melengkapi agen dengan kemampuan untuk menganalisis data berukuran petabyte dan memahami dunia fisik menggunakan server MCP BigQuery dan Maps Grounding Lite.

Di akhir bagian ini, agen Anda akan dapat menerjemahkan bahasa natural ke dalam kueri SQL yang kompleks dan memberikan saran geospasial yang sesuai konteks (seperti waktu tempuh dan cuaca) untuk mendasarkan responsnya pada kenyataan.

Tugas 1: Aktifkan Layanan Kecerdasan

Aktifkan API dan antarmuka MCP untuk BigQuery dan Google Maps.

# 1. Enable product APIs
gcloud services enable bigquery.googleapis.com mapstools.googleapis.com

# 2. Enable MCP Server interfaces
gcloud beta services mcp enable bigquery.googleapis.com
gcloud beta services mcp enable mapstools.googleapis.com

Tugas 2: Tetapkan Peran IAM BigQuery

Untuk menjalankan kueri, identitas Anda memerlukan izin khusus di luar akses MCP dasar.

# Grant BigQuery Job User and Data Viewer roles
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/bigquery.jobUser"

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="user:$USER_EMAIL" \
    --role="roles/bigquery.dataViewer"

Tugas 3: Menyediakan Kunci Maps API

Tidak seperti layanan lain yang hanya mengandalkan IAM, server Maps Grounding Lite memerlukan Kunci API untuk kuota dan penagihan.

Buat kunci:

gcloud alpha services api-keys create --display-name="MCP-Maps-Key"

Ambil string kunci:

# Wait a few seconds for the key to propagate, then fetch the string
gcloud alpha services api-keys get-key-string \
    $(gcloud alpha services api-keys list \
    --filter="displayName='MCP-Maps-Key'" \
    --format="value(name)") \
    --format="value(keyString)"

Salin string kunci untuk langkah berikutnya.

Tugas 4: Mengonfigurasi Gemini CLI

Sekarang, daftarkan kedua server. Tambahkan cuplikan di bawah ke bagian mcpServers dalam file ~/.gemini/settings.json. Ganti YOUR_PROJECT_ID dan YOUR_MAPS_API_KEY yang sesuai.

"bigquery-mcp": {
      "httpUrl": "https://bigquery.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 30000,
      "headers": {
        "x-goog-user-project": "YOUR_PROJECT_ID"
      }
},
"maps-grounding-lite-mcp": {
      "httpUrl": "https://mapstools.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_MAPS_API_KEY"
      }
}

Tugas 5: Kecerdasan dalam Tindakan

Luncurkan Gemini CLI dan uji kemampuan "Intelligence" baru.

gemini

Verifikasi bahwa server sudah Siap: Ketik /mcp list. Anda akan melihat bigquery-mcp dan maps-grounding-lite-mcp dengan beberapa alat yang tercantum. .

Skenario 1: Mesin Analisis (BigQuery) Minta agen untuk membuat kueri set data publik tanpa Anda mengetahui SQL:

Run a query to count the number of penguins on each island in the BigQuery public dataset ml_datasets.penguins.

Skenario 2: Konteks Geospatial (Peta) Minta agen untuk merencanakan perjalanan di dunia nyata:

I am planning a drive from Mumbai to Pune tomorrow morning. Based on current weather and routing, what should I expect in terms of travel time and what should I carry?

Yang harus diperhatikan:

  • Untuk BigQuery, agen akan memanggil execute_sql untuk menemukan skema dan menjalankan kueri.
  • Untuk Maps, Gemini akan mengatur lookup_weather dan compute_routes untuk memberi Anda rencana perjalanan yang relevan dan bermanfaat.

8. Penguatan: Keamanan Produksi & IAM

Pada langkah terakhir ini, Anda akan beralih dari penggunaan izin "Pemilik" yang luas ke model Pertahanan Mendalam Tingkat Produksi.

Agen AI pada dasarnya "membantu". Jika Anda membatasi alat di tingkat UI, agen smart mungkin mencoba melewati batasan tersebut dengan menjalankan perintah shell. Untuk benar-benar mengamankan infrastruktur, Anda harus membangun batas yang ketat menggunakan Google Cloud IAM.

Model Keamanan Lapisan Ganda

Untuk menjalankan tindakan apa pun, agen harus melewati dua gerbang:

  1. Gerbang 1 (Gerbang MCP): Apakah identitas memiliki roles/mcp.toolUser? (Izin untuk menggunakan protokol).
  2. Gerbang 2 (Gerbang Layanan): Apakah identitas memiliki peran produk tertentu (misalnya, roles/datastore.viewer)? (Izin untuk melihat data).

Tugas 1: Lapisan 1 - Pemfilteran Sisi Klien (excludeTools)

Lapisan pertahanan pertama adalah menyembunyikan alat dari agen sehingga agen tidak "berpikir" untuk menggunakannya.

  1. Buka setelan Gemini CLI Anda di editor Cloud Shell:
cloudshell edit ~/.gemini/settings.json
  1. Temukan blok firestore-mcp dan tambahkan direktif excludeTools untuk menyembunyikan tindakan destruktif:
"firestore-mcp": {
  "httpUrl": "https://firestore.googleapis.com/mcp",
  "excludeTools": ["delete_database", "update_database", "delete_document"],
  ...
}

Simpan file dan mulai ulang Gemini CLI. Jalankan /mcp list dan perhatikan bahwa alat tersebut kini sudah tidak ada.

Tugas 2: Layer 2 - Keunggulan Infrastruktur (Penjaga IAM)

Pemfilteran sisi klien adalah batas aman "ringan". Jika Anda meminta agen untuk "Hapus database Firestore saya", dan alat tersebut disembunyikan, agen mungkin mencoba menjalankan gcloud firestore databases delete. Untuk mencegah hal ini, kami menggunakan Akun Layanan dengan Hak Istimewa Terendah.

Buat Akun Layanan "Khusus Baca":

# Create the service account
gcloud iam service-accounts create mcp-reader-sa --display-name="MCP Reader Only"

# Grant ONLY the necessary roles (Gate 1 + Gate 2)
export PROJECT_ID=$(gcloud config get-value project)
SA_EMAIL="mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com"

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/mcp.toolUser"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/datastore.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/aiplatform.user"

Buat dan Aktifkan Kunci:

gcloud iam service-accounts keys create reader-key.json --iam-account=$SA_EMAIL
export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/reader-key.json

Tugas 3: Uji Pengecoh "Agen yang Membantu"

Sekarang, mari kita uji apakah agen dapat melewati keamanan kita.

Langkah pertama kita adalah mengaktifkan Akun Layanan, sehingga meskipun agen kembali menggunakan perintah gcloud, agen tersebut beroperasi dengan identitas akun layanan yang baru saja kita buat.

Aktifkan Akun Layanan:

Jalankan perintah berikut, dengan mengganti [PATH_TO_KEY_FILE] dengan jalur sebenarnya ke file kunci JSON Anda (misalnya, reader-key.json).

gcloud auth activate-service-account --key-file=[PATH_TO_KEY_FILE]

Verifikasi Perubahan:

Setelah menjalankan perintah, Anda dapat memverifikasi bahwa akun layanan aktif dengan menjalankan:

gcloud auth list

Output akan menampilkan akun layanan sebagai kredensial aktif.

Luncurkan Gemini CLI:

gemini

Ketik perintah ini:

I want to delete the 'mcp-lab-db' firestore database. If the tool is missing, try using the gcloud firestore command in the terminal.

Apa yang terjadi?

  1. Agen akan mencoba menggunakan alat delete_database di Server MCP Firestore terlebih dahulu. Tindakan ini akan gagal karena tidak memiliki izin.
  2. Kemudian, ia mencoba untuk "membantu" dengan beralih ke alat run_shell_command untuk menggunakan perintah gcloud firestore.

Hasil:

Perintah gagal dengan error Forbidden. Karena agen berjalan dengan identitas mcp-reader-sa, agen tidak memiliki izin datastore.databases.delete. IAM adalah penghentian terakhir. Terlepas dari cara agen mencoba menjangkau resource, "Bouncer" di tingkat Google Cloud API akan memblokir permintaan.

Beralih kembali ke akun pengguna Anda:

Untuk beralih kembali ke akun pengguna Anda, berikan perintah berikut:

gcloud config set account YOUR_EMAIL_ADDRESS

9. Pembersihan

Untuk menghindari tagihan yang tidak diinginkan, hapus resource pengujian Anda:

# Delete the Firestore database
gcloud firestore databases delete --database=mcp-lab-db

# Remove the service account
gcloud iam service-accounts delete mcp-reader-sa@$PROJECT_ID.iam.gserviceaccount.com

10. Kesimpulan

Selamat! Anda telah berhasil menjelajahi seluruh stack Server MCP Terkelola Google.

Anda memulai dengan "Trunk" lab, yang membangun koneksi dasar ke Cloud Logging. Kemudian, Anda bercabang ke "Petualangan" modular—mendasari pengetahuan agen Anda, mengotomatiskan loop pemecahan masalah yang kompleks, memigrasikan data di Firestore, dan mengekstrak kecerdasan dari BigQuery dan Maps.

Yang terpenting, Anda telah menyelesaikan dengan menyematkan agen di Roots keamanan produksi. Anda membuktikan bahwa meskipun agen dapat "membantu" hingga menimbulkan kesalahan, Google Cloud IAM adalah penjaga keamanan terbaik, yang memastikan alur kerja otonom Anda selalu mematuhi Prinsip Hak Istimewa Terendah.

Poin-Poin Penting

  • Terkelola = Dapat Diskalakan: Anda terhubung ke alat tingkat infrastruktur melalui HTTP yang Dapat Di-streaming tanpa men-deploy satu server pun.
  • Perujukan Wajib Dilakukan: Anda mengganti "tebakan" LLM dengan MCP Pengetahuan Developer, sehingga memastikan agen Anda menggunakan perintah yang valid dan terbaru.
  • Orkestrasi adalah Kekuatan: Anda melihat bahwa keajaiban yang sebenarnya terjadi saat agen menggabungkan beberapa server MCP untuk memecahkan satu masalah bisnis.