Cara Membangun Asisten Coding dengan Gemini CLI, MCP, dan Go

1. Pengantar

Dalam codelab ini, Anda akan mempelajari cara membangun dan men-deploy server Model Context Protocol (MCP) untuk memperluas kemampuan Gemini CLI. Anda akan membangun godoctor, server berbasis Go yang menyediakan alat kustom untuk pengembangan Go, sehingga mengubah CLI Gemini dari asisten coding serbaguna menjadi pakar pengembangan Go khusus.

Codelab ini menggunakan pendekatan "berbasis perintah". Anda akan bertindak sebagai pemimpin teknis, memberikan perintah kepada asisten AI Anda (Gemini CLI itu sendiri). Tujuan Anda adalah mempelajari cara menerjemahkan persyaratan project menjadi perintah yang efektif dan membiarkan AI menangani detail implementasi.

Inti dari project ini adalah Model Context Protocol (MCP). MCP adalah protokol open source yang menstandardisasi cara model bahasa besar (LLM) seperti Gemini berkomunikasi dengan alat dan layanan eksternal. LLM berfungsi sebagai jembatan, yang memungkinkan AI mengakses informasi dunia nyata dan melakukan tindakan di luar pengetahuan bawaannya. Dengan membuat server MCP, Anda membuat plugin kustom yang dapat ditemukan dan digunakan oleh Gemini CLI, sehingga secara efektif mengajarkannya keterampilan baru.

Yang akan Anda pelajari

  • Cara menginstal dan mengonfigurasi Gemini CLI
  • Cara merumuskan perintah yang efektif untuk memandu asisten AI dalam pengembangan software
  • Cara memberikan konteks dan panduan kepada asisten AI
  • Cara membuat dan mengonfigurasi server MCP untuk meningkatkan kemampuan Gemini CLI
  • Cara membuat container dan men-deploy aplikasi Go ke Google Cloud Run

Yang Anda butuhkan

Workshop ini dapat dijalankan sepenuhnya dalam Google Cloud Shell, yang telah diinstal sebelumnya dengan semua dependensi yang diperlukan (gcloud CLI, Go, Docker, Gemini CLI).

Atau, jika Anda lebih suka bekerja di komputer Anda sendiri, Anda akan memerlukan hal berikut:

  • Node.js 20 atau yang lebih baru
  • Project Google Cloud yang mengaktifkan penagihan
  • Google Cloud SDK (gcloud CLI) telah diinstal dan diinisialisasi
  • Go 1.24 atau yang lebih baru diinstal di sistem Anda
  • Docker diinstal di sistem Anda

Teknologi Utama

Di sini Anda dapat menemukan informasi selengkapnya tentang teknologi yang akan kami gunakan:

  • Gemini CLI: Antarmuka command line yang didukung AI yang akan kita perluas
  • Model Context Protocol (MCP): Protokol open source yang memungkinkan Gemini CLI berkomunikasi dengan alat kustom kami
  • Go SDK for MCP: Library Go yang akan kita gunakan untuk menerapkan server MCP

Tips untuk Codelab yang Berhasil

Bekerja dengan asisten AI adalah cara baru dalam mengembangkan software. Berikut beberapa tips untuk membuat pengalaman Anda lancar dan berhasil:

  1. Jangan takut menekan ESC. AI terkadang akan menyarankan tindakan atau kode yang tidak Anda setujui. Gunakan tombol ESC untuk membatalkan tindakan yang diusulkannya dan berikan perintah baru untuk memandunya ke arah yang benar. Anda adalah pilotnya.
  2. Mendorong penggunaan alat. Jika AI tampak bingung atau mengarang informasi, dorong AI untuk menggunakan alat yang tersedia. Perintah seperti "Dapatkah Anda menggunakan Google Penelusuran untuk memverifikasi hal itu?" atau "Gunakan alat read_file untuk memahami kode saat ini sebelum melakukan perubahan" bisa sangat efektif.
  3. Menolak perubahan manual. Coba minta AI melakukan semua pekerjaan. Ini adalah keterampilan inti yang Anda latih. Namun, jika Anda harus melakukan perubahan manual, beri tahu AI setelahnya. Perintah seperti "Saya telah memperbarui file README.md secara manual. Baca lagi untuk memperbarui pengetahuan Anda" akan memastikan AI tetap disinkronkan dengan project Anda.
  4. Sudahkah Anda mencoba menonaktifkan dan mengaktifkannya lagi? Dalam kasus yang jarang terjadi, jika AI mencoba memaksakan jalur tertentu yang bertentangan dengan perintah Anda, hal itu mungkin disebabkan oleh penurunan kualitas konteks (terkadang juga disebut "peluruhan konteks"). Dalam hal ini, Anda dapat menggunakan perintah Gemini CLI "/compress" untuk mengurangi gangguan konteks atau, dalam kasus ekstrem, Anda dapat menggunakan perintah "/clear" untuk menghapus seluruh histori sesi.

2. Penyiapan Lingkungan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

3. Mulai Menggunakan Gemini CLI

Di bagian ini, Anda akan mempelajari Gemini CLI, termasuk cara menginstal dan mengonfigurasinya untuk lingkungan Anda.

Apa itu Gemini CLI?

Gemini CLI adalah antarmuka command line berteknologi AI yang dapat membantu Anda menyelesaikan berbagai tugas pengembangan. Gemini dapat memahami konteks project Anda, menjawab pertanyaan, membuat kode, dan menggunakan alat eksternal untuk memperluas kemampuannya.

Penginstalan

Instal Gemini CLI secara global menggunakan npm.

npm install -g @google/gemini-cli

Anda dapat mengonfirmasi bahwa CLI telah diinstal dengan menjalankan:

gemini --version

Konfigurasi

Perilaku Gemini CLI dikontrol oleh file konfigurasi dan variabel lingkungan. Ada dua file utama:

  • GEMINI.md: File ini memberikan panduan dan konteks bahasa alami kepada AI. CLI membaca file ini untuk memahami standar dan konvensi coding project Anda.
  • .gemini/settings.json: File ini mengontrol konfigurasi CLI, termasuk cara terhubung ke alat eksternal. Kita akan menggunakan file ini untuk mengonfigurasi CLI agar menggunakan server MCP yang kita bangun di lab ini.

Pertama-tama, kita akan menyiapkan lingkungan, lalu membuat file GEMINI.md. File settings.json akan dikonfigurasi di langkah selanjutnya.

  1. Buat dan lakukan inisialisasi direktori project:
mkdir godoctor
cd godoctor
go mod init godoctor
  1. Lakukan autentikasi dengan kredensial default aplikasi Google Cloud:

Kita perlu login ke akun yang memiliki akses ke project GCP yang akan Anda gunakan untuk codelab ini:

gcloud auth application-default login

4. Pedoman Pengembangan

Untuk memastikan asisten AI menghasilkan kode Go yang berkualitas tinggi dan idiomatik, Anda harus memberinya panduan yang jelas. Hal ini dilakukan dalam file GEMINI.md.

Tujuan: Buat file GEMINI.md yang akan berfungsi sebagai kumpulan aturan untuk asisten AI selama project ini.

Tugas: Buat file bernama GEMINI.md di root direktori godoctor Anda dan tempelkan konten berikut ke dalamnya.

# Go Development Guidelines
All code contributed to this project must adhere to the following principles.

### 1. Formatting
All Go code **must** be formatted with `gofmt` before being submitted.

### 2. Naming Conventions
- **Packages:** Use short, concise, all-lowercase names.
- **Variables, Functions, and Methods:** Use `camelCase` for unexported identifiers and `PascalCase` for exported identifiers.
- **Interfaces:** Name interfaces for what they do (e.g., `io.Reader`), not with a prefix like `I`.

### 3. Error Handling
- Errors are values. Do not discard them.
- Handle errors explicitly using the `if err != nil` pattern.
- Provide context to errors using `fmt.Errorf("context: %w", err)`.

### 4. Simplicity and Clarity
- "Clear is better than clever." Write code that is easy to understand.
- Avoid unnecessary complexity and abstractions.
- Prefer returning concrete types, not interfaces.

### 5. Documentation
- All exported identifiers (`PascalCase`) **must** have a doc comment.
- Comments should explain the *why*, not the *what*.

# Agent Guidelines
- **Reading URLs:** ALWAYS read URLs provided by the user. They are not optional.

Sekarang, lingkungan pengembangan Anda telah disiapkan sepenuhnya.

5. Build Awal: Server godoc

Tujuan pertama Anda adalah membuat versi awal server godoctor. Versi ini harus berupa aplikasi minimal yang siap produksi yang menyediakan satu alat bernama godoc yang memberikan kemampuan untuk mencari dokumentasi Go.

Tujuan: Membuat server MCP siap produksi yang mengekspos perintah go doc, sehingga LLM dapat mengkueri dokumentasi Go.

Jalankan perintah Gemini CLI di shell:

gemini

Saat Anda menjalankan CLI untuk pertama kalinya, Anda akan diminta memilih mode autentikasi dan tema. Untuk mode autentikasi, pilih "login dengan Google" untuk login dengan Akun Google pribadi agar Anda dapat memanfaatkan tingkat gratis yang besar dari Gemini CLI. Anda akan melihat opsi untuk memilih mode autentikasi yang serupa dengan ini:

c2ea6b44cbeb6e08.png

Jika perlu mengubah pilihan, Anda dapat mengetik /auth dan menekan enter untuk membuka menu ini lagi.

Selanjutnya, Anda akan diminta untuk memilih tema:

2b2dcd367c195dbb.png

Serupa dengan /auth, Anda juga dapat mengubah tema nanti dengan perintah /theme.

Setelah memilih metode autentikasi dan tema pilihan, Anda akan diarahkan ke command prompt. Di sini Anda dapat mengetik perintah, misalnya:

Write a hello world application in Go.

CLI menggunakan kombinasi penalaran sendiri (melalui model Gemini seperti Gemini Flash atau Gemini Pro) dan alat untuk melakukan tugas. Alat ini menggunakan alat setiap kali perlu berinteraksi dengan sistem file atau layanan eksternal, seperti API, database, dll. Contoh alat yang tersedia langsung, atau "alat internal", adalah read_file, write_file, web_fetch, dan google_search. Server MCP yang kita buat juga akan menjadi alat yang tersedia untuk CLI.

Saat pertama kali menjalankan alat, alat ini akan meminta izin Anda. Anda dapat memberikan izin satu kali, persetujuan menyeluruh untuk sesi lainnya, atau menolak permintaannya. Jika itu adalah operasi pengeditan file, Anda juga akan menemukan opsi untuk mengedit file menggunakan editor eksternal, jika Anda ingin melakukan beberapa penyesuaian. Misalnya, berikut adalah output dari perintah di atas, untuk membuat program hello world:

e4b33d6cd7f03cff.png

Selain perintah, Anda juga dapat menggunakan perintah garis miring. Jika Anda mengetik "/", CLI akan otomatis menampilkan opsi pelengkapan otomatis. Anda dapat terus mengetik perintah lengkap atau memilih salah satu opsi. Perintah /auth dan /theme yang disebutkan di atas adalah beberapa contoh perintah tersebut.

a6294fd0d362fcdd.png

Setelah terbiasa dengan antarmuka, Anda dapat memulai tugas utama bagian ini, yaitu meminta CLI untuk menulis server MCP bagi kita.

Membuat server MCP Hello World

Salah satu cara terbaik untuk memastikan model akan membangun sesuatu secara lebih konsisten adalah dengan memecah tugas kompleks menjadi langkah-langkah inkremental. Meskipun model dapat menyelesaikan tugas yang rumit dengan sendirinya, tanpa penyiapan yang tepat, model akan membutuhkan waktu yang lama untuk menemukan penerapan yang tepat.

Untuk pendekatan yang lebih konsisten, kita akan menginstruksikannya terlebih dahulu untuk membuat server MCP "Hello World" sebelum menerapkan fungsi yang kita inginkan (membaca dokumentasi go).

Contoh perintah ditampilkan di bawah:

Your task is to create a Model Context Protocol (MCP) server to expose a "hello world" tool. For the MCP implementation, you should use the official Go SDK for MCP and use the stdio transport.

Read these references to gather information about the technology and project structure before writing any code:
- https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md
- https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle
- https://go.dev/doc/modules/layout

To test the server, use shell commands like these:
(
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}';
  echo '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}';
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}';
) | ./bin/godoctor

Perhatikan bahwa perintah di atas terdiri dari tiga segmen utama:

  1. Spesifikasi masalah, termasuk apa yang ingin kita bangun dan batasannya (misalnya, gunakan SDK resmi, bukan SDK lainnya)
  2. Dokumentasi referensi untuk model guna membantu memperjelas permintaan
  3. Prosedur pengujian, yang berfungsi sebagai kriteria penerimaan untuk tugas

Dengan ketiga komponen ini, model akan dapat mencapai hasil yang diinginkan dengan lebih konsisten.

Implementasi alat Go doc

Setelah Anda memiliki penerapan yang berfungsi, kita dapat melanjutkan untuk menerapkan alat "go doc" yang sebenarnya:

Add a new tool to our MCP server called "godoc" that invokes the "go doc" shell command. The tool will take a mandatory "package" argument and an optional "symbol" argument.

Read the reference for the go doc command to understand its API: https://pkg.go.dev/golang.org/x/tools/cmd/godoc

Test it by executing the call with:
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name": "godoc", "arguments": {"package": "fmt"} } }'
 | ./bin/godoctor

Test it using both a standard library package and an external package like "github.com/modelcontextprotocol/go-sdk/mcp", both with and without symbols.

Jangan ragu untuk bereksperimen dengan perintah ini atau mencoba membuat perintah Anda sendiri.

Antarmuka Command Line yang Berguna

Segera setelah Anda memutuskan penerapan yang baik, Anda dapat menginstruksikan model untuk membuat CLI godoctor menggunakan klien MCP. Hal ini akan membantu menyederhanakan pengujian fitur dengan menghindari pembuatan panggilan JSON-RPC secara manual seperti yang telah dilakukan selama ini.

Contoh perintah:

Now create a godoctor-cli component that will call the MCP server using command transport. This CLI will expose all tools using subcommands and allow us to test the MCP server implementation without needing to build the JSON-RPC calls manually.

Use the reference implementation at https://github.com/modelcontextprotocol/go-sdk/blob/main/README.md to build the client.

Test it by calling from the command line:
- the hello_world tool 
- the godoc tool with a local package
- the godoc tool with a local package and symbol
- the godoc tool with an external package
- the godoc tool with an external package and symbol

Setelah memiliki set klien dan server yang berfungsi, di bagian berikutnya Anda akan mengonfigurasi Gemini CLI dengan server MCP yang baru saja dibuat untuk mulai memanfaatkan manfaatnya pada tugas pengodean berikutnya.

Referensi yang Berguna

Mengingat bahwa MCP masih merupakan konsep baru dan Go SDK untuk MCP adalah library baru, pada langkah ini Gemini mungkin memerlukan waktu yang lama untuk menemukan sendiri penerapan yang tepat. Untuk membantu model menemukan solusi yang tepat, Anda dapat memberikan referensi berikut:

  1. Anda dapat memberikan perintah berikut kepada model agar model dapat menemukan SDK API secara lebih konsisten: "use the go doc shell command to discover the api for the go-sdk library" (gunakan perintah shell go doc untuk menemukan API untuk library go-sdk)
  2. Jika model mencoba memeriksa kode sumber SDK dengan alat read_file, model akan gagal karena Gemini CLI tidak dapat membaca file di luar cakupan saat ini. Anda dapat menginstruksikannya untuk menggunakan perintah cat dan ls melalui alat run_shell_command.
  3. Jika model mengalami masalah saat men-debug aplikasi, minta model untuk menambahkan logging yang lebih panjang dan meningkatkan informasi kontekstual dalam pesan error.
  4. Jika semua cara lain gagal, berikan implementasi referensi: https://github.com/danicat/godoctor

6. Mengonfigurasi godoctor sebagai Server MCP untuk Gemini CLI

Setelah asisten AI membuat kode untuk klien dan server, Anda dapat menginstruksikannya untuk menjalankan beberapa pengujian manual. Contoh:

retrieve the documentation for the package net/http

Pastikan Anda juga mengujinya dengan dependensi eksternal (bukan di library standar):

retrieve the documentation for the go-sdk package

Setelah Anda puas dengan hasilnya, minta model untuk menulis README.md dengan petunjuk tentang cara menggunakan dan mengembangkan project ini.

Now write a detailed README.md file explaining both from a user and a developer perspective how to use and to build this project.

Sekarang kita akan mengonfigurasi server agar Gemini CLI dapat menggunakannya selama fase pengembangan berikutnya.

  1. Minta CLI untuk mengupdate GEMINI.md agar menggunakan godoc sebagai metode pilihan untuk membaca dokumentasi:
update the GEMINI.md file to use the godoc tool to retrieve documentation about Go packages or symbols. Always prefer to use godoc over WebFetch and GoogleSearch, and only use those when godoc doesn't give a clear answer.
  1. Sekarang kita perlu memulai ulang Gemini CLI untuk mengonfigurasinya. Pertama, mari simpan sesi chat agar Anda dapat melanjutkan dari tempat Anda berhenti setelah dimulai ulang.
/chat save workshop001
  1. Keluar dari CLI dengan menekan Ctrl+D dua kali.
  2. Kompilasi biner server: Buat direktori bin dan kompilasi server godoctor ke dalamnya.
mkdir -p bin
go build -o ./bin/godoctor ./cmd/godoctor # adjust paths as needed
  1. Konfigurasi Gemini CLI untuk alat lokal: Buat file .gemini/settings.json di root project Anda dan tambahkan bagian mcpServers untuk memberi tahu Gemini CLI cara menjalankan server yang dikompilasi.
mkdir -p .gemini
touch .gemini/settings.json
  1. Sekarang, tambahkan konten berikut ke file baru menggunakan editor command line seperti vim atau nano:
{
  "mcpServers": {
    "godoctor": {
      "command": "./bin/godoctor"
    }
  }
}
  1. Sekarang, luncurkan Gemini CLI dan pulihkan sesi percakapan:
/chat resume workshop001
  1. Anda akan dapat melihat alat dimuat dengan menekan Ctrl+T:

2d0f7c9b3550300a.png

  1. Uji integrasi dengan meminta Gemini CLI menggunakan alat Anda dengan perintah seperti "Get the documentation for net/http"

Anda akan melihat sesuatu seperti ini:

5c806e3aa4b75165.png

Jika alat berfungsi dengan benar, Anda akan melihat dokumentasi yang diambil melalui panggilan alat:

6a2b8f33ebeb86d2.png

Selamat, Anda telah membuat alat MCP. Namun, ini belum selesai, kita masih bisa membuatnya sedikit lebih berguna.

7. Menambahkan Peninjau Kode yang Didukung AI

Mari kita tambahkan fitur yang lebih canggih dan didukung AI: pemeriksa kode yang menggunakan Gemini API.

Tujuan: Menambahkan alat baru bernama code_review ke project yang ada. Alat ini akan menggunakan Gemini API untuk menganalisis kode Go dan memberikan masukan.

Contoh Perintah:

I want to add a new tool to my project called code_review. This tool should use the Gemini API to analyze Go code and provide a list of improvements in json format according to the best practices accepted by the Go community. The tool should take the Go code content and an optional hint as input. The hint will be used to provide additional guidance for the AI reviewer, like "focus on security" or "help me simplify this code". Please update the server to include this new tool and modify the CLI client to add a review command to use it.

Use this SDK to call Gemini: https://github.com/googleapis/go-genai

Tips Bermanfaat

Setelah model mulai mengerjakannya, Anda mungkin akan otomatis melihat permintaan untuk memanggil alat godoc guna menjelajahi dokumentasi untuk paket genai. Jika tidak, Anda dapat menghentikan proses dengan tombol escape dan mengingatkannya bahwa sekarang ia memiliki alat godoc.

Menguji Peninjau Kode

  1. Kita perlu memulai ulang Gemini CLI untuk membangun dan memuat ulang server MCP. Simpan sesi chat dengan /chat save workshop002, lalu keluar dari CLI dengan menekan Ctrl+D dua kali.
  2. Alat code_review memerlukan kunci API karena kita memanggil model Gemini untuk melakukan peninjauan bagi kita. Anda dapat membuat kunci API menggunakan Google AI Studio.
  3. Konfigurasi variabel lingkungan GEMINI_API_KEY dengan kunci API yang dihasilkan pada langkah di atas:
export GEMINI_API_KEY="YOUR_API_KEY"
  1. Kompilasi ulang server: Setelah menambahkan alat baru, Anda harus mengompilasi ulang biner server untuk menyertakan perubahan.
go build -o ./bin/godoctor ./cmd/godoctor
  1. Luncurkan Gemini CLI lagi. Pulihkan sesi chat dengan /chat resume workshop002.
  2. Penting. Pastikan Anda melakukan autentikasi dengan akun Gmail pribadi Anda sehingga Gemini CLI itu sendiri tidak menggunakan akun penagihan Anda. Anda dapat melakukannya dengan menggunakan perintah /auth:

9d906ba69f571bb7.png

  1. Pastikan alat diaktifkan dengan menekan Ctrl+T. Anda akan melihat sesuatu seperti ini:

fc5cf95c413ac8b.png

  1. Sekarang mari kita uji alat code-review dengan meninjau salah satu file sumber alat:

"Gunakan alat godoctor untuk meninjau file cmd/godoctor/main.go."

    You should see something like this:

819860af008ee643.png

Dengan alat peninjauan kode yang berfungsi, kini Anda dapat menyarankan model untuk menerapkan beberapa peningkatan yang ditemukannya, untuk alur kerja "peningkatan mandiri" yang lengkap.

Sekarang Anda telah mengonfirmasi bahwa alat code-review berfungsi. Di bagian berikutnya, Anda akan mempelajari cara men-deploy-nya ke cloud.

Untuk menghapus GEMINI_API_KEY:

  1. Simpan sesi Anda saat ini dengan /chat save workshop003 dan keluar dari CLI
  2. Mencadangkan kunci API di tempat yang aman:
export | grep GEMINI_API_KEY > env.bkp
  1. Batalkan setelan GEMINI_API_KEY:
export GEMINI_API_KEY=
  1. Mulai ulang CLI dan muat sesi dengan /chat resume workshop003
  2. Minta model untuk menerapkan peningkatan hasil peninjauan kode.

8. Menyiapkan server Anda untuk cloud

Server MCP yang telah kita kembangkan sejauh ini hanya berjalan di mesin lokal, yang tidak masalah jika Anda mengembangkan alat untuk penggunaan sendiri, tetapi sering kali di lingkungan perusahaan, kita perlu men-deploy alat untuk penggunaan yang lebih luas oleh ratusan atau bahkan ribuan developer.

Untuk menskalakan server MCP, kita perlu mengonversinya dari server yang hanya menggunakan I/O standar menjadi server yang dapat menggunakan HTTP, dan men-deploy-nya di tempat yang dapat diakses oleh developer yang berbeda. Untuk tujuan ini, kita akan menggunakan mode transportasi yang ditentukan dalam spesifikasi MCP sebagai HTTP yang dapat di-streaming, dan menggunakan Cloud Run sebagai target deployment.

Tujuan: Memfaktorkan ulang server godoctor untuk menggunakan transport HTTP yang dapat di-streaming.

Contoh Perintah:

The godoctor server is currently using the stdio transport. I want to deploy it to Cloud Run, so I need to refactor it to use the streamable HTTP transport instead. Please modify the server to comply with the streamable HTTP specification.

Referensi yang Berguna

  1. Jika model kesulitan menerapkan transportasi HTTP yang dapat di-streaming, Anda dapat memberikan referensi ini: https://github.com/modelcontextprotocol/go-sdk/blob/main/design/design.md
  2. Model mungkin mencoba menggunakan HTTP+SSE, yang sudah tidak digunakan lagi. Jika Anda melihatnya melalui jalur ini, arahkan kembali ke HTTP yang dapat di-streaming.

Menguji Server menggunakan HTTP

Minta model untuk mengupdate klien godoctor agar juga menggunakan HTTP yang dapat di-streaming sehingga Anda dapat menguji apakah klien tersebut masih berfungsi.

Now update the client to use streamable HTTP and run a test by retrieving documentation from one package

Opsional: Jika Anda ingin mengonfigurasi Gemini CLI agar menggunakan server melalui HTTP:

  1. Simpan sesi Anda dan keluar dari CLI
  2. Edit file .gemini/settings.json Anda dan ubah konfigurasi agar mengarah ke server yang berjalan secara lokal.
"mcpServers": {
  "godoctor": {
    "httpUrl": "http://localhost:8080"
  }
}
  1. Jalankan server yang telah di-refactoring secara lokal:
go run ./cmd/godoctor/main.go
  1. Di terminal baru (karena operasi di atas memblokir), mulai Gemini CLI dan berikan perintah untuk menguji koneksi, misalnya, "Gunakan alat godoctor untuk mendapatkan dokumentasi fmt.Println."
  2. Hentikan server dengan Ctrl+C setelah Anda selesai menguji.

9. Mem-build Aplikasi dalam Container dengan Docker

Sekarang setelah server kita menggunakan protokol transportasi yang benar, kita dapat membuat container untuk deployment.

Tujuan: Membuat Dockerfile untuk mengemas server godoctor ke dalam image container yang portabel dan siap produksi.

Contoh Perintah:

Please create a multi-stage Dockerfile that compiles the Go binary and copies it into a minimal golang image like golang:1.24-alpine.

Menguji Image Docker

Setelah Dockerfile dibuat, buat image dan jalankan untuk memastikan image berfungsi dengan benar. Anda dapat memerintahkan Gemini untuk melakukannya untuk Anda:

build the image and test the connectivity to the server using the godoctor client

Opsional: jika Anda ingin melakukan pengujian secara manual:

  1. Buat container:
docker build -t godoctor:latest .
  1. Jalankan container secara lokal:
docker run -p 8080:8080 -e PORT=8080 godoctor:latest
  1. Uji penampung yang sedang berjalan: Di terminal lain, mulai Gemini CLI dan minta untuk mengambil dokumentasi.
  2. Hentikan server dengan Ctrl+C setelah Anda selesai menguji.

10. Men-deploy ke Cloud Run

Sekarang saatnya men-deploy penampung kita ke cloud.

Tujuan: Men-deploy server godoctor dalam container ke Google Cloud Run.

Panduan Perintah: Minta asisten AI Anda untuk memberikan perintah gcloud guna men-deploy container Anda.

Contoh Perintah:

Now please deploy this image to Cloud Run and return me an URL I can use to call the MCP tool. Deploy it to us-central1 and use the project currently configured in the environment.

Setelah deployment selesai, kita akan mengonfigurasi Gemini CLI untuk menggunakan alat yang baru saja Anda deploy.

Minta Gemini untuk memperbarui file .gemini/settings.json Anda guna mengubah konfigurasi alat MCP agar mengarah ke layanan yang di-deploy.

now update the .gemini/settings.json file to use this URL for the godoctor server

Bagian mcpServers akhir akan terlihat seperti ini (ingatlah untuk mengganti placeholder dengan URL aplikasi Cloud Run Anda yang sebenarnya):

"mcpServers": {
  "godoctor": {
    "httpUrl": "https://<your-cloud-run-id>.us-central1.run.app"
  }
}

Menguji Deployment Cloud Run

Sekarang Anda siap untuk pengujian menyeluruh akhir.

Mulai ulang Gemini CLI untuk terakhir kalinya (menggunakan /chat save dan /chat resume untuk mempertahankan konteks Anda). Sekarang CLI dapat memanggil server MCP jarak jauh. Coba minta dokumentasi untuk paket apa pun.

Ingat saja bahwa untuk menggunakan alat peninjauan kode, layanan memerlukan GEMINI_API_KEY. Anda dapat meminta Gemini CLI untuk men-deploy ulang dengan lingkungan yang tepat:

update the cloud run environment to add a GEMINI_API_KEY and use the value in @env.bkp. Then update the .gemini/settings.json file with the correct service URL

Mulai ulang CLI dan uji dengan perintah:

Use the godoctor tool to review the cmd/godoctor/main.go file

CLI Gemini kini akan terhubung ke layanan Cloud Run yang di-deploy dan menjalankan peninjauan kode.

Contoh perintah:

I'm done with my tests on the CloudRun server, please delete this deployment for me and revert my .gemini/settings.json to use the local version.

11. Selamat!

Anda telah berhasil memandu asisten AI untuk membangun, membuat container, dan men-deploy alat canggih yang didukung AI. Lebih penting lagi, Anda telah mempraktikkan keterampilan penting dalam pengembangan software modern: menerjemahkan persyaratan menjadi perintah yang efektif. Anda telah berhasil memperluas Gemini CLI dengan alat kustom, sehingga menjadikannya asisten pengembangan Go yang lebih andal dan terspesialisasi.

Dokumen Referensi