Yerelden buluta: Gemini CLI ve Cloud SQL MCP ile tam yığın uygulama taşıma

1. Giriş

Fitness toplulukları için eksiksiz bir etkinlik yönetimi platformu olan AllStrides ile tanışın. Özellikler açısından zengin olmasına rağmen mevcut durumu "Yalnızca Yerel"dir. Yerel bir SQLite veritabanı ve manuel Node.js yürütme işlemine dayanır. Topluluğun büyümesi için AllStrides'ın Google Cloud'un ölçeklenebilirliğine, güvenilirliğine ve güvenliğine ihtiyacı var.

Bu codelab'de geleneksel bir taşıma işlemi yapmayacaksınız. Bunun yerine, Gemini CLI'ı temsilci tabanlı iş ortağınız olarak kullanarak Ürün Mimarı rolünü üstleneceksiniz. Gemini'ı üç Google Cloud Model Context Protocol (MCP) sunucusuyla donatarak yapay zekanın Google Cloud hizmetleriyle doğrudan "iletişim kurmasına" ve etkileşimde bulunmasına olanak tanırsınız. Öncelikle, Developer Knowledge MCP'yi kullanarak allstrides uygulaması için en iyi Google Cloud veritabanını belirleyeceksiniz. Ardından, Cloud SQL MCP'yi kullanarak bir veritabanı örneği sağlayacak ve tek bir istemle yerel topluluk verilerinizi buluta taşıyacaksınız. Son olarak, uygulamayı kapsüllemek için Cloud Run MCP'yi kullanacak, AllStrides'ı canlı ve küresel olarak erişilebilir hale getireceksiniz.

e031fbb4ae5d2afc.png

Ön koşullar

  • Google Cloud Console hakkında temel düzeyde bilgi sahibi olmak
  • Komut satırı arayüzü ve Cloud Shell'de temel beceriler

Neler öğreneceksiniz?

  • Gemini CLI'yı uzaktan MCP ile çalışacak şekilde yapılandırma
  • Geliştirme Bilgisi MCP sunucusunu kullanma
  • Verileri buluta taşımak için Cloud SQL uzaktan MCP sunucusunu kullanma
  • Uygulamaları buluta dağıtmak için Cloud Run uzak MCP sunucusunu kullanma
  • Google Cloud Shell'de Gemini CLI'yı kullanma

Gerekenler

  • Google Cloud hesabı ve Google Cloud projesi
  • Google Cloud Console ve Cloud Shell'i destekleyen Chrome gibi bir web tarayıcısı

2. Kurulum ve Gereksinimler

Proje Kurulumu

  1. Google Cloud Console'da oturum açın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

İş veya okul hesabı yerine kişisel hesap kullanıyorsanız.

  1. Yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Google Cloud Console'da yeni bir proje oluşturmak için üstbilgide bir pop-up pencere açacak olan Proje seç düğmesini tıklayın.

295004821bab6a87.png

Proje seçin penceresinde Yeni Proje düğmesini tıklayın. Bu işlem, yeni proje için bir iletişim kutusu açar.

37d264871000675d.png

İletişim kutusunda tercih ettiğiniz proje adını girin ve konumu seçin.

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Proje adı, Google API'leri tarafından kullanılmaz ve istediğiniz zaman değiştirilebilir.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Google Cloud Console, benzersiz bir kimliği otomatik olarak oluşturur ancak bu kimliği özelleştirebilirsiniz. Oluşturulan kimliği beğenmediyseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi girerek kullanılabilirliğini kontrol edebilirsiniz. Çoğu codelab'de, genellikle PROJECT_ID yer tutucusuyla tanımlanan proje kimliğinize başvurmanız gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.

Faturalandırmayı etkinleştirme

Kişisel faturalandırma hesabı oluşturma

Faturalandırmayı Google Cloud kredilerini kullanarak ayarladıysanız bu adımı atlayabilirsiniz.

  1. Bu bağlantıyı tıklayın ve kişisel bir Google Hesabı ile oturum açın.
  2. Şuna benzer bir şey görürsünüz:

f54628965f465486.png

  1. KREDİLERİNİZE ERİŞMEK İÇİN BURAYI TIKLAYIN düğmesini tıklayın. Bu işlem sizi faturalandırma profilinizi oluşturacağınız sayfaya yönlendirir. Ücretsiz deneme kaydı ekranı gösterilirse iptal'i tıklayın ve faturalandırmayı bağlamaya devam edin.

20e88842cf2a732e.png

  1. Artık bir Google Cloud Platform deneme sürümü faturalandırma hesabına bağlısınız. Onayla'yı tıklayın.

cdc87f1c57777951.png

Kişisel faturalandırma hesabı oluşturma

Faturalandırmayı Google Cloud kredilerini kullanarak ayarladıysanız bu adımı atlayabilirsiniz.

Kişisel faturalandırma hesabı oluşturmak için Cloud Console'da faturalandırmayı etkinleştirmek üzere buraya gidin.

Bazı notlar:

  • Bu laboratuvarı tamamlamak için 3 ABD dolarından daha az tutarda bulut kaynağı kullanmanız gerekir.
  • Daha fazla ödeme alınmaması için bu laboratuvarın sonundaki adımları uygulayarak kaynakları silebilirsiniz.
  • Yeni kullanıcılar 300 ABD doları değerinde ücretsiz deneme sürümünden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Cloud Shell'i etkinleştirme

Alternatif olarak G, ardından S tuşuna basabilirsiniz. Bu sıra, Google Cloud Console'da veya bu bağlantıyı kullanıyorsanız Cloud Shell'i etkinleştirir.

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Ortamın bağlandığını gösteren Google Cloud Shell terminalinin ekran görüntüsü

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

3. Başlamadan önce

Temel API'yi etkinleştirme

Uygulamanızı Cloud SQL gibi yönetilen veritabanı hizmetlerini ve diğer hizmetleri kullanarak oluşturup Cloud Run'a dağıtmak için ilgili API'leri Google Cloud projenizde etkinleştirmeniz gerekir.

Yaklaşımınıza bağlı olarak bu adımı isteğe bağlı olarak atlayabilir ve gerekli tüm API'lerin daha sonra Gemini CLI tarafından etkinleştirilmesine izin verebilirsiniz. Ancak bu durumda yürütme sırasında bazı gecikmeler ve tekrarlanan adımlar yaşayabilirsiniz.

Cloud Shell terminalinde proje kimliğinizin ayarlandığından emin olun:

gcloud config set project [YOUR-PROJECT-ID]

PROJECT_ID ortam değişkenini ayarlayın:

PROJECT_ID=$(gcloud config get-value project)

Gerekli tüm hizmetleri etkinleştirin:

gcloud services enable sqladmin.googleapis.com \
                       aiplatform.googleapis.com \
                       secretmanager.googleapis.com \
                       artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       containerregistry.googleapis.com

Beklenen çıktı:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$ 
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable sqladmin.googleapis.com \
                       aiplatform.googleapis.com \
                       secretmanager.googleapis.com \
                       artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       containerregistry.googleapis.com
Operation "operations/acat.p2-812263612774-c2dbeef3-c4c1-4a7d-a4b2-b5380be65044" finished successfully.

Hizmet Hesabına İzin Verme

Uygulama görüntülerini oluşturup depolayabilmek için varsayılan Compute Engine hizmet hesabına depolama alanı yöneticisi izinleri vermeniz gerekir. Önceki adımda olduğu gibi, yürütme sırasında daha sonra Gemini CLI'ye yetki verme seçeneğiniz vardır.

PROJECT_ID=$(gcloud config get-value project)
 gcloud projects add-iam-policy-binding $PROJECT_ID --member=serviceAccount:$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")-compute@developer.gserviceaccount.com --role=roles/storage.admin

Uzaktan MCP'yi etkinleştirme

Uzak MCP hizmetleri, bir projedeki her hizmet için açıkça etkinleştirilmelidir. Varsayılan olarak devre dışıdırlar ve proje ile hizmet düzeyinde API erişimini düzenlemeye yardımcı olurlar.

Developer Knowledge MCP hizmeti ile başlayalım. Developer Knowledge API'yi ve uzak MCP hizmetini etkinleştirmek için aşağıdaki gcloud komutlarını çalıştırmanız gerekir.

PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable developerknowledge.googleapis.com --project=$PROJECT_ID

Geliştirici Bilgisi için API ve uzaktan MCP etkinleştirildiğinde devam edebilir ve Cloud SQL uzaktan MCP hizmeti için de aynı işlemi yapabilirsiniz.

gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID

Veritabanları için tüm uzak MCP'lerde olduğu gibi, MCP erişimi ve izinleri de aşamalı olarak sağlanır. Bu sayede, API'ye proje düzeyinde ayrıntılı erişim verilir. Bu işlemi yalnızca Hizmet Kullanımı Yöneticisi (roles/serviceusage.serviceUsageAdmin) rolüne sahip bir asıl (kullanıcı veya hizmet hesabı) gerçekleştirebilir.

Ayrıca, yalnızca MCP Aracı Kullanıcısı (roles/mcp.toolUser) rolüne sahip asıl kullanıcılar uzak MCP API'sine çağrı yapabilir.

Örneğin, Cloud SQL Admin (roles/cloudsql.admin) rolünüz yoksa projedeki hiçbir örneği oluşturamaz, klonlayamaz veya güncelleyemezsiniz.

Gerekli roller ve izinler hakkında daha fazla bilgiyi dokümanlarda bulabilirsiniz.

Gördüğümüz gibi, aşamalı ve ayrıntılı yetkilendirme, uzak MCP uç noktası etkinleştirilmiş olsa bile yetkisiz saldırılara karşı bizi korur ve üretimimiz için yeterince güvenli hale getirir.

Etkinleştireceğimiz bir sonraki uzaktan MCP, Cloud Run hizmeti içindir. Cloud Run uzaktan MCP etkinleştirme ve erişim yaklaşımı, Cloud SQL uzaktan MCP'ye benzer.

Aşağıdaki komutla Cloud Run MCP hizmetini etkinleştirin.

gcloud beta services mcp enable run.googleapis.com --project=$PROJECT_ID

Son olarak, aşağıdaki komutu kullanarak projemizde etkinleştirilen tüm uzak MCP'leri doğrulayabiliriz.

gcloud beta services mcp list --project=$PROJECT_ID

Beklenen çıktı:

student@cloudshell:~ (test-project-001-402417)$ gcloud beta services mcp list --project=$PROJECT_ID
NAME: services/developerknowledge.googleapis.com
MCP_ENDPOINT: developerknowledge.googleapis.com

NAME: services/run.googleapis.com
MCP_ENDPOINT: run.googleapis.com/mcp

NAME: services/sqladmin.googleapis.com
MCP_ENDPOINT: sqladmin.googleapis.com/mcp

Artık tüm API'lerimiz ve hizmetlerimiz etkinleştirildiğine göre Gemini CLI'yı yapılandırmamız gerekiyor.

4. Gemini CLI'yı yapılandırma

Bu laboratuvar, çoğu işlemi gerçekleştirmek için ana aracı olarak Gemini CLI'yı kullanacak şekilde tasarlanmıştır. İlk adım, Gemini CLI'yı uzak MCP sunucularıyla çalışacak şekilde yapılandırmaktır. Ayrıca, Gemini CLI'nin en yeni sürümünü ve Gemini-3-pro veya Gemini-3-flash (şu anda önizleme aşamasında) gibi Gemini'ın en yeni sürümünü kullanmanız önemle tavsiye edilir.

Gemini CLI'nın en yeni sürümüne zaten sahipseniz ve en yeni Gemini modellerini kullanacak şekilde yapılandırdıysanız sonraki 2 adımı atlayıp doğrudan 3. adıma geçebilirsiniz.

1. Gemini API anahtarı alma

Gemini CLI'nizde en yeni Gemini modellerini kullanmak için Gemini CLI'nin API anahtarı kimlik doğrulamasıyla yapılandırılması gerekir. API anahtarını Google AI Studio'dan veya

  1. Tarayıcınızda Google AI Studio -> API anahtarı al'a gidin.
  2. Ekranın sağ tarafında Create API key düğmesini tıklayın.
  3. Pop-up pencerede projenizi seçin veya görünmüyorsa içe aktarın.

683940deabde2975.jpeg

  1. API anahtarını oluşturun.
  2. Sağ taraftaki kopyalama düğmesini kullanarak anahtarı kopyalayabilirsiniz.

3d97805534c50bf.jpeg

Anahtar hazırlanır ve artık Gemini CLI için kullanılabilir.

2. Gemini CLI'yı yapılandırma

Gemini KSA, ayarlar yapılandırma dosyası aracılığıyla veya /settings komutu kullanılarak etkileşimli olarak yapılandırılabilir. Ayarlarımızın, ayar dosyamızda korunmasını istiyoruz.

Öncelikle projemiz için bir dizin oluşturacağız. Dizine projectmcp adını verelim ve aşağıdaki komutları kullanarak bu dizine geçelim.

mkdir ~/projectmcp
cd ~/projectmcp

Dizinde, Gemini yapılandırma dosyaları için bir dizin oluşturup tüm komutlarımızı çalıştıracağız. Gemini CLI, varsayılan olarak bir kullanıcı kapsamı yapılandırma dosyası ve ~/.gemini dizinine yüklenen uzantıları kullanır. Ancak ~/projectmcp dizinimizde kendi proje kapsamı yapılandırmamızı oluşturacağız. Yapılandırma dizinini ve dosyalarını oluşturarak başlayalım.

mkdir ~/projectmcp/.gemini
touch ~/projectmcp/.gemini/settings.json

Ardından, Cloud Shell Düzenleyici'yi kullanarak ~/projectmcp/.gemini/settings.json dosyasını açıyoruz.

edit ~/projectmcp/.gemini/settings.json

Açılan düzenleyici penceresine aşağıdaki yapılandırmayı ekleyin.

{
  "general": {
    "preferredEditor": "vscode",
    "previewFeatures": true,
    "sessionRetention": {
      "enabled": true
    }
  },
  "ide": {
    "enabled": true,
    "hasSeenNudge": true
  },
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "ui": {
    "theme": "Default"
  },
  "tools": {
    "shell": {
      "enableInteractiveShell": false
    }
  }
}

Dosyayı düzenledikten sonra değişikliklerinizi kaydetmek için ctrl+s simgesini kullanabilir ve Open Terminal düğmesini tıklayarak terminale geri dönebilirsiniz.

e152c73931dac892.jpeg

Yukarıdaki settings.json dosyaları, Gemini CLI kimlik doğrulama türünüzü gemini-api-key olarak ayarlar ve modele anahtarı sağlamanız gerekir. Bunu, Gemini CLI ile çalışmak istediğiniz dizinde bir .env dosyası oluşturarak ve Gemini CLI kimlik doğrulaması için API anahtarınızı IDE'yi başlattığınızda alınacak bir ortam değişkeni olarak saklayarak yapabilirsiniz.

Cloud Shell Düzenleyici'yi kullanarak dosyayı düzenleme

edit ~/projectmcp/.env

1. adımda oluşturduğunuz API anahtarını saklayın.

GEMINI_API_KEY= <YOUR_API_KEY>

Artık terminale geri dönüp devam edebilirsiniz. Bir sonraki adım, Gemini CLI'nizi en yeni sürüme güncellemenizdir. Google Cloud Shell'deki veya ortamınızdaki sürüm eski olabilir ve en son yapılandırmalar ile MCP hizmetleriyle düzgün çalışmayabilir. Bu nedenle, Gemini CLI'yı en son sürüme güncellemeniz ve başlatmanız önemlidir. Terminalde aşağıdakileri çalıştırın.

cd ~/projectmcp/
npm install -g @google/gemini-cli@latest

Artık sürümü doğrulayabilirsiniz. Google Cloud Shell'de çalışıyorsanız kabuğu her yeniden başlattığınızda önceki sürüme dönebileceğini lütfen unutmayın. Gemini CLI'de yaptığınız değişiklikler Cloud Shell'de kalıcı olmaz.

gemini --version

En yeni Gemini CLI sürümü (laboratuvar yazılırken sürüm 0.27) gösterilmelidir. En yeni Gemini CLI sürümünü buradan doğrulayabilirsiniz. Şimdi de başlatıp en yeni Gemini modelini kullandığından emin olalım. Gemini CLI'yı başlatmak için proje klasörünüzde aşağıdaki komutu çalıştırın.

gemini

Gemini CLI başlatıldığında arayüzde /about komutunu çalıştırarak sürümü ve modeli kontrol edebilirsiniz. Aşağıdaki resme benzer bir sonuç alırsınız.

dea82957ace33156.jpeg

En yeni Gemini-3 modelinin kullanıldığını görebilirsiniz.

2. Gemini CLI'da MCP sunucularını yapılandırma

Şimdi etkinleştirilmiş tüm MCP sunucularımızı ekleme zamanı. Bu işlevleri Gemini CLI'da iki şekilde etkinleştirebilirsiniz: uzantılar aracılığıyla veya doğrudan ayarlardan. Bu laboratuvarda, project scope setting.json dosyanızı kullanacak ve MCP sunucularının kimlik doğrulama ayrıntılarını bu dosyaya ekleyeceksiniz.

  1. Developer Knowledge MCP sunucusu için uç noktada yetkilendirilmek üzere bir API anahtarı oluşturmanız gerekir.

İlgili adımlar aşağıdadır:

  • API'yi etkinleştirdiğiniz projenin Google Cloud Console'unda Kimlik Bilgileri sayfasına gidin.
  • Kimlik bilgisi oluştur'u tıklayın ve menüden API anahtarı'nı seçin. Oluşturulan API anahtarı iletişim kutusunda, yeni oluşturduğunuz anahtarın dizesi gösterilir.
  • İletişim kutusundaki Edit API key bağlantısını tıklayın.
  • Name alanında anahtar için bir ad girin. Örneğin DK API Key .
  • API kısıtlamaları bölümünde Restrict key simgesini seçin.
  • API'leri seç listesinden Developer Knowledge API seçeneğini etkinleştirin ve Tamam'ı tıklayın.
  • Kaydet'i tıklayın.

d0e7c7081e43788e.jpeg

Anahtarı kullanmanız gerektiğinde sayfaya gidip sağ taraftaki Anahtarı göster'i tıklayabilirsiniz.

caf35e95bba68c2.jpeg

Şimdi bu anahtarı yapılandırmada saklamanız gerekiyor. settings.json dosyamızın MCP bölümü şu şekilde görünür (DK API anahtarınız için bir değer girmeniz gerekir). Yalnızca DK API'si eklenmişse settings.json dosyasının MCP bölümünün nasıl göründüğüne dair bir örneği burada bulabilirsiniz. Laboratuvarın ilerleyen bölümlerinde, tüm MCP sunucularıyla birlikte settings.json dosyasının nasıl görünmesi gerektiğini de göreceksiniz.

    "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    }
  },
  1. Ardından, Cloud SQL MCP sunucumuz için yapılandırma ekleyebilirsiniz. Cloud SQL MCP için API yerine Google kimlik bilgilerinizi kullanacaksınız. Daha güvenlidir ve kullanıcının gerçekleştirebileceği eylemlerin rollerini ve kapsamını tanımlamamıza olanak tanır. MCP sunucusunun yapılandırmasını burada bulabilirsiniz. Lütfen "<YOUR_GCP_PROJECT>" kısmını kendi proje kimliğinizle değiştirin.
    "Cloud SQL MCP Server": {
      "httpUrl": "https://sqladmin.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 500000,
      "trust": false,
      "headers": {
        "X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
      }
    },
  1. Bu sonraki JSON parçası, Cloud Run MCP sunucusunun yapılandırmasını içerir. Yukarıdaki örnekle aynı kalıbı izliyor ve kimlik doğrulama ile yetkilendirme için Google kimlik bilgilerini kullanıyor. Örnek yapılandırmayı burada bulabilirsiniz.
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }

Bunların hepsinin ~/projectmcp/.gemini/settings.json dosyasına eklenmesi gerekir.

~/projectmcp/.gemini/settings.json dosyasını Cloud Shell Düzenleyici'yi kullanarak açın.

edit ~/projectmcp/.gemini/settings.json

İçeriği aşağıdaki yapılandırmayla değiştirin. Lütfen API anahtarınızı ve proje kimliğinizi ortamınıza göre "X-Goog-Api-Key" ve "X-Goog-User-Project" alanlarına girin.

{
  "general": {
    "preferredEditor": "vscode",
    "previewFeatures": true,
    "sessionRetention": {
      "enabled": true
    }
  },
  "ide": {
    "enabled": true,
    "hasSeenNudge": true
  },
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    },
    "Cloud SQL MCP Server": {
      "httpUrl": "https://sqladmin.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 500000,
      "trust": false,
      "headers": {
        "X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
      }
    },
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }
  },
  "ui": {
    "theme": "Default"
  },
  "tools": {
    "shell": {
      "enableInteractiveShell": false
    }
  }
}

Artık Gemini CLI'yı başlatabilir ve etkinleştirilen tüm MCP sunucularımızı görebiliriz.

cd ~/projectmcp/
gemini

Gemini KSA başlatıldığında, çalışan tüm MCP sunucularını görmek için /mcp komutunu yürütebilirsiniz.

352638b053783696.png

5. Uygulamayı Hazırlama

Aşağıdaki örnekte, örnek yerel uygulamanızı Google Cloud'a taşımayı deneyeceksiniz. Öncelikle uygulamayı yerel olarak yükleyip test ediyoruz.

1. Kaynak Kodunu Klonlama

Uygulamamızı GitHub deposundan klonlamamız gerekiyor. Cloud Shell'de veya proje klasöründeki yerel terminalinizde yürütün.

git clone https://github.com/google/mcp.git

2. Uygulamayı Yerel Olarak Başlatma

Uygulamayı test edelim ve bazı örnek veriler yükleyelim

Aynı kabukta uygulama klasörüne geçin ve uygulamayı

cd mcp/examples/allstrides
./start_allstrides.sh

3. Uygulamayı Test Etme

Cloud Shell'de çalışıyorsanız Cloud Shell penceresinin üst kısmındaki Web preview düğmesine basın ve Preview on port 8080 seçeneğini belirleyin.

db0d9210014ade3d.jpeg

Uygulama arayüzünün bulunduğu yeni bir tarayıcı sekmesi açılır. Örneğin, Events düğmesini tıklayabilirsiniz.

67423438eef0c999.jpeg

Şu anda herhangi bir etkinliğiniz yok.

4. Örnek Verileri Yükleme

İsteğe bağlı olarak uygulamaya kaydolabilir ve kendi etkinliklerinizi, sohbet mesajlarınızı ve kullanıcılarınızı oluşturabilir ya da uygulamayla birlikte verilen örnek verileri kullanabilirsiniz.

En üstteki "+" işaretini kullanarak başka bir Cloud Shell sekmesi açın.

abc505ac4d41f24e.png

Yeni Cloud Shell sekmesinde, uygulama dizinine geçiş yapın ve sqllite3 yardımcı programını kullanarak içe aktarma işlemini gerçekleştirin:

cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql

Uygulama sayfasına geri dönerseniz ve Etkinlikler düğmesini tekrar tıkladığınızda birden fazla etkinlik görmeniz gerekir.

5adc772a1d2261f4.jpeg

Ayrıca sohbet sayfasını test edebilir ve bazı mesajları görebilirsiniz.

Şimdi exit yazarak ikinci sekmeyi kapatabilirsiniz.

exit

Ayrıca, ilk sekmede ctrl+c kombinasyonunu kullanarak uygulamayı durdurun.

6. Testing Developer Knowledge MCP

Developer Knowledge MCP, Google dokümanlarını doğrudan platformdan bağımsız araçlarımızdan kullanmamıza olanak tanır. Bu sayede talimatları doğrulayabilir, eğitimler oluşturabilir ve en yeni Google dokümanlarıyla desteklenebilecek diğer görevleri gerçekleştirebiliriz.

Gemini CLI'nizi başlatın ve Geliştirici Bilgisi MCP sunucusunda kullanılabilen MCP araçlarını listeleyin.

/mcp

Developer Knowledge MCP için üç araç kullanılabilir:

Beklenen çıktı:

🟢 DeveloperKnowledge - Ready (3 tools)
  Tools:
  - batch_get_documents
  - get_document
  - search_documents

Uygulamamızı Google Cloud'a taşımamız gerekiyor. Bu nedenle, yerel Sqlite veritabanından daha ölçeklenebilir ve buluta özel bir çözüme geçmemiz gerekiyor. Gemini'dan uygulama kodumuzu analiz etmesini ve veritabanı çözümü konusunda tavsiye vermesini isteyelim.

Gemini CLI istemine aşağıdakileri yazın:

Hello, I need to choose a database platform for my allstrides application in Google Cloud. Can you analyze documentation and prepare a tutorial to choose the correct database engine?

Gemini CLI, kodunuzu analiz ederek başlar ve ardından

Beklenen çıktı

 ?  search_documents (DeveloperKnowledge MCP Server) {"query":"choose google cloud database"}                                                                                                               ← │
│                                                                                                                                                                                                              │
│ MCP Server: DeveloperKnowledge                                                                                                                                                                               │
│ Tool: search_documents                                                                                                                                                                                       │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"?                                                                                                                             │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)   

Araç, Google dokümanlarıyla yanıtı temellendirmek için MCP'yi kullanıyor. Geliştirici Bilgisi MCP isteğinin yürütülmesine izin verin. Yanıt vermeden önce bir veya iki kez daha bilgi isteyebilir. Şu an itibarıyla başvurunuzda herhangi bir değişikliğe izin verilmemektedir.

Sonunda, Postgres için Cloud SQL'in veritabanı arka ucu için en iyi seçenek olarak tanımlandığı bir özet içeren bir eğitim oluşturdu. Üretken yapay zeka modellerinin deterministik olmayan yapısı nedeniyle biraz farklı bir yanıt alabilirsiniz.

Beklenen çıktı:

By switching to Cloud SQL for PostgreSQL, AllStrides gains a robust, scalable foundation suitable for production deployment on Google Cloud. The transition is straightforward due to the use of Sequelize ORM.  

Ayrıca adım adım veri taşıma kılavuzu hazırlamanızı da isteyebiliriz. Gemini CLI'ye yeni bir istem girin:

I agree with the recommendation to use Cloud SQL for PostgreSQL as the new database for my application. Can you prepare a detailed migration tutorial based on Google documentation on how to move data from my local database to Cloud SQL in the cloud?

Burada da Gemini KSA'nın, eğitim hazırlarken doğruluk kaynağı olarak Geliştirici Bilgisi MCP'sini kullanmasını bekliyoruz. Gemini CLI'nin gerçekleştirdiği işlemlerin sırası, kullanılan modele ve diğer faktörlere bağlı olarak biraz farklı olabilir. Örneğin, önce taşıma komut dosyalarının hazırlanmasını, ardından da nihai eğitim dokümanı üzerinde çalışılmasını isteyebilir.

Aşağıda, Developer Knowledge MCP'yi yürütmek için izin isteyen örneklerden biri verilmiştir:

 ?  search_documents (DeveloperKnowledge MCP Server) {"query":"migrate local database to Cloud SQL for PostgreSQL"}                                                                                         ← │
│                                                                                                                                                                                                              │
│ MCP Server: DeveloperKnowledge                                                                                                                                                                               │
│ Tool: search_documents                                                                                                                                                                                       │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"?                                                                                                                             │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)                                                                                                                                                                               │
│                                                                                                                                                                                                              │
│                                                                                                                                                                                                              │
│ ⊷  search_documents (DeveloperKnowledge MCP Server) {"query":"import data into Cloud SQL PostgreSQL"}
 

Yürütme sırasında Gemini KSA sizden bazı komutları yürütmenizi isteyebilir. Örneğin, veri taşıma için doğru talimatlar hazırlamak üzere veri şemasını daha iyi anlamak.

Son olarak, veri taşıma için adım adım talimatlar hazırlamalıdır.

Ardından Gemini CLI'dan eğitimi yazmasını isteyebilirsiniz.

Please write the tutorial down

Bu işlem, eğitim dokümanını içeren yeni bir Markdown dosyası oluşturur.

Beklenen çıktı:

✦ I have created a detailed migration guide for you.

  You can find the tutorial in the new file: MIGRATION_GUIDE.md.

  This guide covers:
   1. Exporting your local SQLite data to CSV format.
   2. Creating the PostgreSQL schema with compatible data types.
   3. Uploading data to Google Cloud Storage.
   4. Importing data into Cloud SQL in the correct order to respect relationships.
   5. Resetting ID sequences to ensure new data can be added without errors.

Bir sonraki adımda, veritabanımızı hazırlamak ve verileri taşımak için Cloud SQL MCP ile çalışacağız.

7. Cloud SQL Remote MCP'yi test etme

1. Cloud SQL örneği oluşturma

Gemini CLI'da /mcp yazarak Cloud SQL MCP sunucusunda bulunan araçları kontrol etmeye başlayabilirsiniz.

/mcp

Şu anda aşağıdaki araçları kullanabilirsiniz.

Beklenen çıktı:

🟢 Cloud SQL MCP Server - Ready (11 tools)
  Tools:
  - clone_instance
  - create_instance
  - create_user
  - execute_sql
  - get_instance
  - get_operation
  - import_data
  - list_instances
  - list_users
  - update_instance
  - update_user

Google Cloud'daki uygulamamızın arka ucu olarak Postgres için Cloud SQL'i kullanmaya karar verdik. Artık Gemini'dan bizim için bir Cloud SQL örneği oluşturmasını isteyebiliriz.

Gemini CLI istemine isteğinizi aşağıdaki gibi girin:

Please create a Cloud SQL for Postgres instance with appropriate edition and version in the us-central1 region to be a backend for our application with a public IPs in the current project with 2 CPU and 8 GB memory.

Mevcut projenizi belirlemek için ek çağrı yapmaktan kaçınmak istiyorsanız isteminizi girerken proje kimliğinizi açıkça belirtebilirsiniz. Proje adı bağlamda daha önce kullanılmadıysa model, proje kimliğini sorar veya projeyi tanımlamak için gcloud komutunun yürütülmesini ister.

Ardından, mevcut araçları analiz eder ve Cloud SQL MCP araçlarının yürütülmesini ister. Aşağıdaki onay isteğini görmeyi bekleyebilirsiniz.

?  create_instance (Cloud SQL MCP Server MCP Server) {"tier":"db-custom-2-8192","region":"us-central1","project":"gleb-test-short-001-486416","databaseVersion":"POSTGRES_17","edition":"ENTERPRISE","nam... ← │
│                                                                                                                                                                                                              │
│ MCP Server: Cloud SQL MCP Server                                                                                                                                                                             │
│ Tool: create_instance                                                                                                                                                                                        │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "create_instance" from server "Cloud SQL MCP Server"?                                                                                                                            │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)
 

Yürütme başlatıldıktan sonra işlem durumunun ve kontroller arasındaki olası uyku isteklerinin izlenmesi istenir. Aşağıdakine benzer bir ifade görürsünüz.

✦ I will wait for 30 seconds before checking the status of the instance creation.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶  Shell sleep 30 [current working directory /home/gleb/demo]                                                                                                                                                │
│                                                                                                                                                                                                              │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
⠋ Refining Instance Configuration (esc to cancel, 11s)

Bunu, Cloud SQL Server MCP için bir get_operation aracı izler.

╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ?  get_operation (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","operation":"73c39ca7-65fe-46d1-bdb8-0dfa00000032"}                                                             ← │
│                                                                                                                                                                                                              │
│ MCP Server: Cloud SQL MCP Server                                                                                                                                                                             │
│ Tool: get_operation                                                                                                                                                                                          │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "get_operation" from server "Cloud SQL MCP Server"?                                                                                                                              │
│                                                                                                                                                                                                              │
│ ● 1. Allow once

Son get_instance isteğinden sonra, oluşturulan örnekle ilgili bilgileri alırsınız. Aşağıdakine benzer bir ifade görürsünüz.

Beklenen çıktı:

✦ I will wait for 30 seconds before checking the status of the instance creation.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶  Shell sleep 30 [current working directory /home/gleb/demo]                                                                                                                                                │
│                                                                                                                                                                                                              │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
⠋ Refining Instance Configuration (esc to cancel, 11s)

Bunu, Cloud SQL Server MCP için get_operation aracı ve get_insance MCP aracı çağrısı izler. Görevin başarıyla tamamlandığını doğrulamak için Gemini CLI tarafından ek kontroller ve çağrılar gerçekleştirilebilir.

The Cloud SQL for Postgres instance allstrides-db has been successfully created in the us-central1 region with 2 vCPUs and 8 GB of RAM.

  Instance Details:
   - Project ID: gleb-test-short-001-486416
   - Instance Name: allstrides-db
   - Public IP Address: 35.226.187.246
   - Database Version: POSTGRES_17
   - Machine Type: db-custom-2-8192 (2 vCPU, 8 GB RAM)
   - Region: us-central1
   - Connection Name: gleb-test-short-001-486416:us-central1:allstrides-db

  The instance is configured with public IP enabled, IAM authentication turned on, and Data API access allowed.

2. Verileri Taşıma

Örnek hazır olduğundan artık mevcut SQLite veritabanındaki tüm verilerimizi buluttaki yeni bir veritabanına taşımaya devam edebiliriz.

Gemini CLI istemine aşağıdaki isteği yazın.

Now when we have our Cloud SQL instance ready it is time to move the data from our local database. Please migrate all the  data to a new database in our Cloud SQL instance where the new user for application would be the database owner? Let's call the new database allstrides-db and the user allstrides. Please use our MCP tools whenever it is possible.

Gemini KSA, yürütme sırasında veri modelimizi analiz eder ve bunu yapmak için bazı komutları çalıştırma izni ister. İş akışı% 100 deterministik değildir ve bazı adımlar farklı olabilir.

Nasıl başlayabileceğinize dair bir örneği aşağıda bulabilirsiniz.

Beklenen çıktı:

✦ I will read the allstrides/README.md and allstrides/seed_data.sql files to understand the local database structure and data.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓  ReadFile allstrides/README.md                                                                                                                                                                             │
│                                                                                                                                                                                                              │
│                                                                                                                                                                                                              │
│ ✓  ReadFile allstrides/seed_data.sql                                                                                                                                                                         │
│                                                                                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────

Ardından, birkaç adım sonra veritabanını ve kullanıcıyı hazırlamak, nihayetinde de verileri taşımak için Cloud SQL MCP'yi kullanır. Veritabanında gerçekleştirdiği ilk işlemlerden biri sizi IAM kullanıcısı olarak eklemek ve veritabanı ile kullanıcı oluşturma izni vermektir. IAM olarak Google Cloud'da yeterli ayrıcalıklara sahip olmanız gerekir.

İş akışı sırasındaki bazı adımlara ilişkin bir örneği aşağıda bulabilirsiniz.

Beklenen çıktı:

 ✓  execute_sql (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","instance":"allstrides-db","sqlStatement":"CREATE DATABASE \"allstrides-db\";","database":"postgres"}               │
│                                                                                                                                                                                                              │
│ {                                                                                                                                                                                                            │
│   "messages": [                                                                                                                                                                                              │
│     {                                                                                                                                                                                                        │
│       "message": "Execution complete. 1 result set(s) returned.",                                                                                                                                            │
│       "severity": "INFO"                                                                                                                                                                                     │
│     }                                                                                                                                                                                                        │
│   ],                                                                                                                                                                                                         │
│   "metadata": {                                                                                                                                                                                              │
│     "sqlStatementExecutionTime": "0.075591388s"                                                                                                                                                              │
│   },                                                                                                                                                                                                         │
│   "results": [                                                                                                                                                                                               │
│     {}                                                                                                                                                                                                       │
│   ]                                                                                                                                                                                                          │
│ }                                                                                                                                                                                                            │
│       

3. Uygulamayı Cloud Run'a Dağıtma

Veritabanı oluşturuldu ve yerel uygulama verileri Cloud SQL veritabanınıza taşındı. Artık uygulamanızı Cloud Run'a dağıtmaya hazırsınız. Dağıtım sırasında, Google Cloud'da görüntüyü oluşturmak için Google Cloud SDK'yı, ardından Cloud Run MCP'yi kullanarak dağıtmak için Google Cloud SDK'yı kullanacaksınız.

Gemini CLI'da aşağıdaki istemi çalıştırın.

Now, when all the data is successfully migrated to our Cloud SQL instance allstrides-db we can migrate our allstrides application to Cloud Run and deploy using my Cloud SQL database. Please put the username and the password for my database user user to Secret Manager to not show openly in Cloud Run.
Let's build the image first and then use MCP to create the Cloud Run service.

Yürütme sırasında API'leri kontrol eder, verileri Secret Manager için hazırlar ve gerekli gizli anahtarları oluşturur. Ayrıca, uygulamayı PostgreSQL veritabanıyla çalışacak şekilde güncelleyecek ve gerekli npm modüllerini ekleyecektir.

Ardından, görüntüyü oluşturup Artifact Registry'ye yerleştirdikten sonra uygulamayı Cloud Run'a dağıtmak için MCP hizmetini kullanır.

Cloud Run MCP'yi çağırma örneğini aşağıda görebilirsiniz.

Beklenen çıktı:

✦ I will deploy the 'allstrides' service to Cloud Run using the deploy_service_from_image tool. I will configure the environment variables and map the
  database credentials from Secret Manager. Note that the MCP tool's schema does not explicitly expose the Cloud SQL instance attachment parameter, which is
  typically required for the Unix socket connection (/cloudsql/...) to work. I will proceed with the deployment as requested, but if the database connection
  fails due to the missing instance attachment, we may need to use gcloud to update that specific configuration.


╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Action Required                                                                                                                                    1 of 1 │
│                                                                                                                                                           │
│ ?  deploy_service_from_image (CloudRun MCP Server) {"service":{"invokerIamDisabled":true,"name":"projects/gleb-test-short-001-486416/locations/us-centra... │
│                                                                                                                                                           │
│ MCP Server: CloudRun                                                                                                                                      │
│ Tool: deploy_service_from_image                                                                                                                           │
│ Allow execution of MCP tool "deploy_service_from_image" from server "CloudRun"?                                                                           │
│                                                                                                                                                           │
│ ● 1. Allow once                                                                                                                                           │
│   2. Allow tool for this session                                                                                                                          │
│   3. Allow all server tools for this session                                                                                                              │
│   4. No, suggest changes (esc)                                                                                                                            │
│                                                                                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Tüm işlemlerin tamamlanacağı tam yol, yürütmeden yürütmeye değişebilir. Yapay zeka aracıları, bağlama, komut çıkışına ve diğer birçok değişkene göre yolu seçer. Yapay zeka destekli yazılımların gücü de tam olarak burada yatar. Bu yazılımlar, görevleri tamamlamak ve başarılı sonuçlar elde etmek için tepki verebilir, yaklaşımını ayarlayabilir ve adımları yeniden deneyebilir.

Artık allstrides uygulamanız Cloud Run'da dağıtılmış ve çalışıyor olmalı ve Cloud SQL veritabanınıza bağlı olmalıdır.

Sonunda görebileceğiniz sonuçlar şunlardır:

Beklenen çıktı:

✦ The application allstrides has been successfully migrated to Cloud Run and is connected to the Cloud SQL database allstrides-db.

  Deployment Details:


   * Service URL: https://allstrides-812263612774.us-central1.run.app
   * Database: allstrides-db (PostgreSQL)
   * Database User: allstrides (Password updated and stored in Secret Manager)
   * Secrets: db-user and db-pass are mounted as environment variables.
   * Region: us-central1

  Steps Taken:


   1. Database Configuration:
       * Updated the allstrides database user password.
       * Created db-user and db-pass secrets in Google Cloud Secret Manager.
       * Updated database.ts to support PostgreSQL connections via Cloud SQL socket.
   2. Build:
       * Built the container image gcr.io/gleb-test-short-001-486416/allstrides using Cloud Build.
   3. Deployment:
       * Initiated deployment using the MCP deploy_service_from_image tool.
       * Granted the Secret Manager Secret Accessor role to the Cloud Run service account.
       * Attached the Cloud SQL instance connection using gcloud (as the MCP tool currently lacks this specific configuration parameter).


  The application is now serving traffic and successfully connected to the database.

Ayrıca, sağlanan URL'yi tarayıcıda açtığınızda uygulama sayfasını görmeniz gerekir.

d710de5dbee99720.png

Tüm etkinliklerimiz orada görünür olmalıdır.

4ae98d3607718794.png

Tebrikler! Yerel uygulamanızı buluta taşımak için Gemini CLI ve Google Cloud uzaktan MCP hizmetlerini kullanabildiniz. Dağıtım tamamlandı. Tüm kaynaklar temizlenebilir.

8. Ortamı temizleme

Ortamı temizlemenin en kolay yolu, Gemini CLI'dan oluşturduğunuz tüm bileşenleri kaldırmasını istemektir. Tüm öğeler bağlamda tutulmalıdır. Ancak bir şekilde oturumunuz kapatıldıysa ve kayıtlı geçmişiniz yoksa daha hassas bir şekilde Cloud Run hizmetinin, görüntünün ve Cloud SQL örneğinin temizlenmesini isteyebilirsiniz. Hizmeti kaldırmak için gerekli izinlere sahip olan ve gcloud komutunu kullanacak kullanıcıyla kimlik doğrulaması yapılması gerekir.

İstem örneği:

Now, when we've tested the application can you please delete the created Cloud Run service, the image we've built and the Cloud SQL instance we've created in the project. 

Kaldırma işleminden sonra, Cloud Run hizmetinin veya Cloud SQL örneğinin başarıyla kaldırıldığını doğrulamak için uzak MCP hizmetlerini kullanabilirsiniz.

Can you please list all Cloud SQL instances in the project and Cloud Run services in the project.

En sonunda aşağıdaki gibi bir mesaj görmeniz gerekir:

Beklenen çıktı:

✦ There are currently no Cloud SQL instances or Cloud Run services (in us-central1) in the project gleb-test-short-001-486416.

Laboratuvarın adımları tamamlandı.

9. Tebrikler

Codelab'i tamamladığınız için tebrik ederiz.

Google Cloud öğrenme rotası

İşlediğimiz konular

  • Gemini CLI'yı Google Cloud uzak MCP'leriyle çalışacak şekilde yapılandırma ve dağıtma
  • Development KnowledgeMCP'yi kullanma
  • Verileri buluta taşımak için Cloud SQL MCP'yi kullanma
  • Uygulamaları buluta dağıtmak için Cloud Run MCP'yi kullanma
  • Google Cloud Shell'de Gemini CLI'yı kullanma

10. Anket

Çıkış:

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın