۱. مقدمه
نمای کلی
در این آزمایش، شما یک سرور پروتکل زمینه مدل (MCP) را ساخته و مستقر خواهید کرد. سرورهای MCP برای دسترسی LLMها به ابزارها و سرویسهای خارجی مفید هستند. شما آن را به عنوان یک سرویس امن و آماده برای تولید در Cloud Run پیکربندی خواهید کرد که از طریق چندین کلاینت قابل دسترسی باشد. سپس از طریق Gemini CLI به سرور MCP از راه دور متصل خواهید شد.
کاری که انجام خواهید داد
ما از FastMCP برای ایجاد یک سرور MCP مربوط به باغ وحش استفاده خواهیم کرد که دو ابزار دارد: get_animals_by_species
و get_animal_details
. FastMCP روشی سریع و پایتونیک برای ساخت سرورها و کلاینتهای MCP ارائه میدهد.
آنچه یاد خواهید گرفت
- سرور MCP را روی Cloud Run مستقر کنید.
- با الزام احراز هویت برای همه درخواستها، نقطه پایانی سرور خود را ایمن کنید و مطمئن شوید که فقط کلاینتها و نمایندگان مجاز میتوانند با آن ارتباط برقرار کنند.
- از طریق رابط خط فرمان Gemini به سرور امن MCP خود متصل شوید.
۲. راهاندازی پروژه
- اگر از قبل حساب گوگل ندارید، باید یک حساب گوگل ایجاد کنید .
- به جای حساب کاری یا تحصیلی از یک حساب شخصی استفاده کنید. حسابهای کاری و تحصیلی ممکن است محدودیتهایی داشته باشند که مانع از فعال کردن APIهای مورد نیاز برای این آزمایشگاه توسط شما شود.
- وارد کنسول ابری گوگل شوید.
- فعال کردن پرداخت در کنسول ابری
- تکمیل این آزمایشگاه باید کمتر از ۱ دلار آمریکا از طریق منابع ابری هزینه داشته باشد.
- شما میتوانید مراحل انتهای این آزمایش را برای حذف منابع دنبال کنید تا از هزینههای بیشتر جلوگیری شود.
- کاربران جدید واجد شرایط استفاده از دوره آزمایشی رایگان ۳۰۰ دلاری هستند.
- یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید.
۳. ویرایشگر Cloud Shell را باز کنید
- برای دسترسی مستقیم به ویرایشگر Cloud Shell، روی این لینک کلیک کنید.
- اگر امروز در هر مرحلهای از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید.
- اگر ترمینال در پایین صفحه نمایش داده نشد، آن را باز کنید:
- روی مشاهده کلیک کنید
- روی ترمینال کلیک کنید
- در ترمینال، پروژه خود را با این دستور تنظیم کنید:
- قالب:
gcloud config set project [PROJECT_ID]
- مثال:
gcloud config set project lab-project-id-example
- اگر نمیتوانید شناسه پروژه خود را به خاطر بیاورید:
- شما میتوانید تمام شناسههای پروژه خود را با دستور زیر فهرست کنید:
gcloud projects list | awk '/PROJECT_ID/{print $2}'
- شما میتوانید تمام شناسههای پروژه خود را با دستور زیر فهرست کنید:
- قالب:
- شما باید این پیام را ببینید:
اگر یکUpdated property [core/project].
WARNING
مشاهده کردید و ازDo you want to continue (Y/n)?
احتمالاً شناسه پروژه را اشتباه وارد کردهاید.n
را فشار دهید،Enter
را بزنید و دوباره سعی کنید دستورgcloud config set project
را اجرا کنید.
۴. فعال کردن APIها
در ترمینال، APIها را فعال کنید:
gcloud services enable \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
اگر از شما خواسته شد که مجوز دهید، برای ادامه روی تأیید کلیک کنید.
تکمیل این دستور ممکن است چند دقیقه طول بکشد، اما در نهایت باید پیامی مشابه این پیام موفقیتآمیز نمایش داده شود:
Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.
۵. پروژه پایتون خود را آماده کنید
- یک پوشه با نام
mcp-on-cloudrun
ایجاد کنید تا کد منبع برای استقرار در آن ذخیره شود:mkdir mcp-on-cloudrun && cd mcp-on-cloudrun
- یک پروژه پایتون با ابزار
uv
ایجاد کنید تا یک فایلpyproject.toml
تولید شود: دستورuv init --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.13
uv init
یک فایلpyproject.toml
برای پروژه شما ایجاد میکند. برای مشاهده محتوای فایل، دستور زیر را اجرا کنید: خروجی باید شبیه زیر باشد:cat pyproject.toml
[project] name = "mcp-on-cloudrun" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" requires-python = ">=3.13" dependencies = []
۶. سرور zoo MCP را ایجاد کنید
برای فراهم کردن زمینهای ارزشمند برای بهبود استفاده از LLMها با MCP، یک سرور MCP باغوحش با FastMCP راهاندازی کنید - یک چارچوب استاندارد برای کار با پروتکل Model Context. FastMCP روشی سریع برای ساخت سرورها و کلاینتهای MCP با پایتون ارائه میدهد. این سرور MCP دادههایی درباره حیوانات در یک باغوحش خیالی ارائه میدهد. برای سادگی، دادهها را در حافظه ذخیره میکنیم. برای یک سرور MCP تولیدی، احتمالاً میخواهید دادهها را از منابعی مانند پایگاههای داده یا APIها ارائه دهید.
- دستور زیر را برای اضافه کردن FastMCP به عنوان یک وابستگی در فایل
pyproject.toml
اجرا کنید: این یک فایلuv add fastmcp==2.12.4 --no-sync
uv.lock
به پروژه شما اضافه میکند. - یک فایل
server.py
جدید برای کد منبع سرور MCP ایجاد و باز کنید: دستورcloudshell edit ~/mcp-on-cloudrun/server.py
cloudshell edit
فایلserver.py
را در ویرایشگر بالای ترمینال باز میکند. - کد منبع سرور zoo MCP زیر را به فایل
server.py
اضافه کنید:import asyncio import logging import os from typing import List, Dict, Any from fastmcp import FastMCP logger = logging.getLogger(__name__) logging.basicConfig(format="[%(levelname)s]: %(message)s", level=logging.INFO) mcp = FastMCP("Zoo Animal MCP Server 🦁🐧🐻") # Dictionary of animals at the zoo ZOO_ANIMALS = [ { "species": "lion", "name": "Leo", "age": 7, "enclosure": "The Big Cat Plains", "trail": "Savannah Heights" }, { "species": "lion", "name": "Nala", "age": 6, "enclosure": "The Big Cat Plains", "trail": "Savannah Heights" }, { "species": "lion", "name": "Simba", "age": 3, "enclosure": "The Big Cat Plains", "trail": "Savannah Heights" }, { "species": "lion", "name": "King", "age": 8, "enclosure": "The Big Cat Plains", "trail": "Savannah Heights" }, { "species": "penguin", "name": "Waddles", "age": 2, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "penguin", "name": "Pip", "age": 4, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "penguin", "name": "Skipper", "age": 5, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "penguin", "name": "Chilly", "age": 3, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "penguin", "name": "Pingu", "age": 6, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "penguin", "name": "Noot", "age": 1, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "elephant", "name": "Ellie", "age": 15, "enclosure": "The Pachyderm Sanctuary", "trail": "Savannah Heights" }, { "species": "elephant", "name": "Peanut", "age": 12, "enclosure": "The Pachyderm Sanctuary", "trail": "Savannah Heights" }, { "species": "elephant", "name": "Dumbo", "age": 5, "enclosure": "The Pachyderm Sanctuary", "trail": "Savannah Heights" }, { "species": "elephant", "name": "Trunkers", "age": 10, "enclosure": "The Pachyderm Sanctuary", "trail": "Savannah Heights" }, { "species": "bear", "name": "Smokey", "age": 10, "enclosure": "The Grizzly Gulch", "trail": "Polar Path" }, { "species": "bear", "name": "Grizzly", "age": 8, "enclosure": "The Grizzly Gulch", "trail": "Polar Path" }, { "species": "bear", "name": "Barnaby", "age": 6, "enclosure": "The Grizzly Gulch", "trail": "Polar Path" }, { "species": "bear", "name": "Bruin", "age": 12, "enclosure": "The Grizzly Gulch", "trail": "Polar Path" }, { "species": "giraffe", "name": "Gerald", "age": 4, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "giraffe", "name": "Longneck", "age": 5, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "giraffe", "name": "Patches", "age": 3, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "giraffe", "name": "Stretch", "age": 6, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "antelope", "name": "Speedy", "age": 2, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "antelope", "name": "Dash", "age": 3, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "antelope", "name": "Gazelle", "age": 4, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "antelope", "name": "Swift", "age": 5, "enclosure": "The Tall Grass Plains", "trail": "Savannah Heights" }, { "species": "polar bear", "name": "Snowflake", "age": 7, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "polar bear", "name": "Blizzard", "age": 5, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "polar bear", "name": "Iceberg", "age": 9, "enclosure": "The Arctic Exhibit", "trail": "Polar Path" }, { "species": "walrus", "name": "Wally", "age": 10, "enclosure": "The Walrus Cove", "trail": "Polar Path" }, { "species": "walrus", "name": "Tusker", "age": 12, "enclosure": "The Walrus Cove", "trail": "Polar Path" }, { "species": "walrus", "name": "Moby", "age": 8, "enclosure": "The Walrus Cove", "trail": "Polar Path" }, { "species": "walrus", "name": "Flippers", "age": 9, "enclosure": "The Walrus Cove", "trail": "Polar Path" } ] @mcp.tool() def get_animals_by_species(species: str) -> List[Dict[str, Any]]: """ Retrieves all animals of a specific species from the zoo. Can also be used to collect the base data for aggregate queries of animals of a specific species - like counting the number of penguins or finding the oldest lion. Args: species: The species of the animal (e.g., 'lion', 'penguin'). Returns: A list of dictionaries, where each dictionary represents an animal and contains details like name, age, enclosure, and trail. """ logger.info(f">>> 🛠️ Tool: 'get_animals_by_species' called for '{species}'") return [animal for animal in ZOO_ANIMALS if animal["species"].lower() == species.lower()] @mcp.tool() def get_animal_details(name: str) -> Dict[str, Any]: """ Retrieves the details of a specific animal by its name. Args: name: The name of the animal. Returns: A dictionary with the animal's details (species, name, age, enclosure, trail) or an empty dictionary if the animal is not found. """ logger.info(f">>> 🛠️ Tool: 'get_animal_details' called for '{name}'") for animal in ZOO_ANIMALS: if animal["name"].lower() == name.lower(): return animal return {} if __name__ == "__main__": port = int(os.getenv("PORT", 8080)) logger.info(f"🚀 MCP server started on port {port}") asyncio.run( mcp.run_async( transport="http", host="0.0.0.0", port=port, ) )
کد شما کامل شد! وقت آن است که سرور MCP را روی Cloud Run مستقر کنید.
۷. استقرار در Cloud Run
اکنون یک سرور MCP را مستقیماً از کد منبع در Cloud Run مستقر کنید.
- یک
Dockerfile
جدید برای استقرار در Cloud Run ایجاد و باز کنید:cloudshell edit ~/mcp-on-cloudrun/Dockerfile
- کد زیر را در Dockerfile قرار دهید تا از ابزار
uv
برای اجرای فایلserver.py
استفاده شود:# Use the official Python image FROM python:3.13-slim # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ # Install the project into /app COPY . /app WORKDIR /app # Allow statements and log messages to immediately appear in the logs ENV PYTHONUNBUFFERED=1 # Install dependencies RUN uv sync EXPOSE $PORT # Run the FastMCP server CMD ["uv", "run", "server.py"]
- دستور
gcloud
را اجرا کنید تا برنامه در Cloud Run مستقر شود. برای درخواست احراز هویت از پرچمcd ~/mcp-on-cloudrun gcloud run deploy zoo-mcp-server \ --no-allow-unauthenticated \ --region=europe-west1 \ --source=. \ --labels=dev-tutorial=codelab-mcp
--no-allow-unauthenticated
استفاده کنید. این به دلایل امنیتی مهم است. اگر نیازی به احراز هویت نداشته باشید، هر کسی میتواند با سرور MCP شما تماس بگیرد و به طور بالقوه به سیستم شما آسیب برساند. - ایجاد یک مخزن جدید Artifact Registry را تأیید کنید. از آنجایی که اولین بار است که از کد منبع در Cloud Run مستقر میشوید، موارد زیر را مشاهده خواهید کرد:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [europe-west1] will be created. Do you want to continue (Y/n)?
Y
را تایپ کرده وEnter
را فشار دهید، این یک مخزن Artifact Registry برای استقرار شما ایجاد میکند. این برای ذخیره کانتینر Docker سرور MCP برای سرویس Cloud Run لازم است. - بعد از چند دقیقه، پیامی مانند زیر خواهید دید:
Service [zoo-mcp-server] revision [zoo-mcp-server-12345-abc] has been deployed and is serving 100 percent of traffic.
شما سرور MCP خود را مستقر کردهاید. اکنون میتوانید از آن استفاده کنید.
۸. سرور Remote MCP را به Gemini CLI اضافه کنید.
اکنون که با موفقیت یک سرور MCP از راه دور را مستقر کردهاید، میتوانید با استفاده از برنامههای مختلفی مانند Google Code Assist یا Gemini CLI به آن متصل شوید. در این بخش، ما با استفاده از Gemini CLI به سرور MCP از راه دور جدید شما متصل خواهیم شد.
- به حساب کاربری خود اجازه دهید تا با سرور MCP از راه دور تماس بگیرد
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member=user:$(gcloud config get-value account) \ --role='roles/run.invoker'
- اعتبارنامههای Google Cloud و شماره پروژه خود را در متغیرهای محیطی برای استفاده در فایل تنظیمات Gemini ذخیره کنید:
export PROJECT_NUMBER=$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)") export ID_TOKEN=$(gcloud auth print-identity-token)
- اگر قبلاً پوشه
.gemini
ایجاد نشده است، آن را بسازید.mkdir -p ~/.gemini
- فایل تنظیمات Gemini CLI خود را باز کنید
cloudshell edit ~/.gemini/settings.json
- فایل تنظیمات Gemini CLI خود را برای افزودن سرور Cloud Run MCP جایگزین کنید.
{ "ide": { "hasSeenNudge": true }, "mcpServers": { "zoo-remote": { "httpUrl": "https://zoo-mcp-server-$PROJECT_NUMBER.europe-west1.run.app/mcp", "headers": { "Authorization": "Bearer $ID_TOKEN" } } }, "security": { "auth": { "selectedType": "cloud-shell" } } }
- اجرای Gemini CLI در Cloud Shell
ممکن است لازم باشد برای پذیرش برخی از تنظیمات پیشفرض،gemini
Enter
فشار دهید. - از Gemini بخواهید ابزارهای MCP موجود در متن خود را فهرست کند.
/mcp
- از جوزا بخواهید چیزی را در باغ وحش پیدا کند
رابط خط فرمان Gemini باید بداند که از سرور MCPWhere can I find penguins?
zoo-remote
استفاده کند و از شما میپرسد که آیا مایلید اجازه اجرای MCP را بدهید یا خیر. - برای انتخاب از فلش رو به پایین استفاده کنید، سپس
Enter
فشار دهیدYes, always allow all tools from server "zoo-remote"
خروجی باید پاسخ صحیح و یک کادر نمایش را نشان دهد که نشان میدهد از سرور MCP استفاده شده است.
شما موفق شدید! شما با موفقیت یک سرور MCP از راه دور را به Cloud Run مستقر کرده و آن را با استفاده از Gemini CLI آزمایش کردهاید.
وقتی آماده پایان دادن به جلسه خود شدید، عبارت /quit
را تایپ کرده و سپس Enter
فشار دهید تا از Gemini CLI خارج شوید.
اشکالزدایی
اگر خطایی مانند این مشاهده کردید:
🔍 Attempting OAuth discovery for 'zoo-remote'... ❌ 'zoo-remote' requires authentication but no OAuth configuration found Error connecting to MCP server 'zoo-remote': MCP server 'zoo-remote' requires authentication. Please configure OAuth or check server settings.
احتمالاً مهلت شناسه توکن تمام شده است و نیاز به تنظیم مجدد ID_TOKEN
است.
- برای خروج از محیط خط فرمان Gemini، عبارت
/quit
را تایپ کرده و سپسEnter
فشار دهید. - پروژه خود را در ترمینال خود تنظیم کنید
gcloud config set project [PROJECT_ID]
- مرحله ۲ بالا را دوباره راه اندازی کنید
۹. (اختیاری) تأیید فراخوانیهای ابزار در گزارشهای سرور
برای تأیید اینکه سرور Cloud Run MCP شما فراخوانی شده است، گزارشهای سرویس را بررسی کنید.
gcloud run services logs read zoo-mcp-server --region europe-west1 --limit=5
شما باید یک گزارش خروجی ببینید که تأیید میکند فراخوانی ابزار انجام شده است. 🛠️
2025-08-05 19:50:31 INFO: 169.254.169.126:39444 - "POST /mcp HTTP/1.1" 200 OK 2025-08-05 19:50:31 [INFO]: Processing request of type CallToolRequest 2025-08-05 19:50:31 [INFO]: >>> 🛠️ Tool: 'get_animals_by_species' called for 'penguin'
۱۰. (اختیاری) اضافه کردن MCP prompt به سرور
یک دستورالعمل MCP میتواند با ایجاد یک خلاصهنویسی برای یک دستورالعمل طولانیتر، گردش کار شما را برای دستورالعملهایی که اغلب اجرا میکنید، سرعت بخشد.
رابط خط فرمان Gemini به طور خودکار اعلانهای MCP را به دستورات اسلش سفارشی تبدیل میکند تا بتوانید با تایپ کردن /prompt_name
که در آن prompt_name
نام اعلان MCP شماست، یک اعلان MCP را فراخوانی کنید.
یک اعلان MCP ایجاد کنید تا بتوانید با تایپ کردن /find animal
در Gemini CLI، به سرعت یک حیوان را در باغ وحش پیدا کنید.
- این کد را به فایل
server.py
خود، بالای گارد اصلی اضافه کنید (if __name__ == "__main__":
:)@mcp.prompt() def find(animal: str) -> str: """ Find which exhibit and trail a specific animal might be located. """ return ( f"Please find the exhibit and trail information for {animal} in the zoo. " f"Respond with '[animal] can be found in the [exhibit] on the [trail].'" f"Example: Penguins can be found in The Arctic Exhibit on the Polar Path." )
- برنامه خود را دوباره در Cloud Run مستقر کنید
gcloud run deploy zoo-mcp-server \ --no-allow-unauthenticated \ --region=europe-west1 \ --source=. \ --labels=dev-tutorial=codelab-mcp
- شناسه_TOKEN خود را برای سرور MCP از راه دور خود بهروزرسانی کنید.
export ID_TOKEN=$(gcloud auth print-identity-token)
- پس از استقرار نسخه جدید برنامه، Gemini CLI را اجرا کنید.
gemini
- در اعلان، از دستور سفارشی جدیدی که ایجاد کردهاید استفاده کنید:
یا/find --animal="lions"
/find lions
باید ببینید که رابط خط فرمان Gemini ابزار get_animals_by_species
را فراخوانی میکند و پاسخ را طبق دستورالعمل MCP قالببندی میکند!
╭───────────────────────────╮ │ > /find --animal="lion" │ ╰───────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✔ get_animals_by_species (zoo-remote MCP Server) get_animals_by_species (zoo-remote MCP Server) │ │ │ │ [{"species":"lion","name":"Leo","age":7,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"Nala","age":6,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"Simba","age":3,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"King","age":8,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah Heights"}] │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ Lions can be found in The Big Cat Plains on the Savannah Heights.
۱۱. (اختیاری) برای پاسخهای سریعتر از Gemini Flash Lite استفاده کنید
رابط خط فرمان Gemini به شما امکان میدهد مدلی را که استفاده میکنید انتخاب کنید.
- جمینی ۲.۵ پرو ، مدل تفکر پیشرفته گوگل است که قادر به استدلال در مورد مسائل پیچیده در کد، ریاضی و STEM و همچنین تجزیه و تحلیل مجموعه دادههای بزرگ، پایگاههای کد و اسناد با استفاده از متن طولانی است.
- Gemini 2.5 Flash از نظر نسبت قیمت به عملکرد، بهترین مدل گوگل است و قابلیتهای کاملی را ارائه میدهد. 2.5 Flash برای پردازش در مقیاس بزرگ، وظایف با تأخیر کم و حجم بالا که نیاز به تفکر دارند و موارد استفادهی عاملی (agentic) بهترین گزینه است.
- Gemini 2.5 Flash Lite سریعترین مدل فلش گوگل است که برای صرفهجویی در هزینه و توان عملیاتی بالا بهینه شده است.
از آنجایی که درخواستهای مربوط به پیدا کردن حیوانات باغ وحش نیازی به تفکر یا استدلال ندارند، سعی کنید با استفاده از یک مدل سریعتر، سرعت انجام کارها را افزایش دهید.
یک اعلان MCP ایجاد کنید تا بتوانید با تایپ کردن /find animal
در Gemini CLI، به سرعت یک حیوان را در باغ وحش پیدا کنید.
- پس از استقرار نسخه جدید برنامه، Gemini CLI را اجرا کنید.
gemini --model=gemini-2.5-flash-lite
- در اعلان، از دستور سفارشی جدیدی که ایجاد کردهاید استفاده کنید:
/find lions
شما هنوز باید ببینید که Gemini CLI ابزار get_animals_by_species
را فراخوانی میکند و پاسخ را طبق دستورالعمل MCP قالببندی میکند، اما پاسخ باید خیلی سریعتر ظاهر شود!
╭───────────────────────────╮ │ > /find --animal="lion" │ ╰───────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✔ get_animals_by_species (zoo-remote MCP Server) get_animals_by_species (zoo-remote MCP Server) │ │ │ │ [{"species":"lion","name":"Leo","age":7,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"Nala","age":6,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"Simba","age":3,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah │ │ Heights"},{"species":"lion","name":"King","age":8,"enclosure":"The Big Cat │ │ Plains","trail":"Savannah Heights"}] │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ ✦ Lions can be found in The Big Cat Plains on the Savannah Heights.
اشکالزدایی
اگر خطایی مانند این مشاهده کردید:
✕ Unknown command: /find --animal="lions"
دستور /mcp
را اجرا کنید و اگر خروجی آن zoo-remote - Disconnected
، ممکن است مجبور شوید سیستم را مجدداً مستقر کنید یا دستورات زیر را دوباره اجرا کنید:
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member=user:$(gcloud config get-value account) \
--role='roles/run.invoker'
export PROJECT_NUMBER=$(gcloud projects describe $GOOGLE_CLOUD_PROJECT --format="value(projectNumber)")
export ID_TOKEN=$(gcloud auth print-identity-token)
۱۲. نتیجهگیری
تبریک! شما با موفقیت مستقر شدید و به یک سرور امن و از راه دور MCP متصل شدید.
ادامه به آزمایشگاه بعدی
این آزمایش، اولین آزمایش از یک مجموعه سه قسمتی است. در آزمایش دوم، از سرور MCP که با ADK Agent ایجاد کردهاید، استفاده خواهید کرد.
از یک سرور MCP در Cloud Run با یک ADK Agent استفاده کنید
(اختیاری) تمیز کردن
اگر قصد ادامه دادن به آزمایشگاه بعدی را ندارید و میخواهید آنچه را که ایجاد کردهاید پاک کنید، میتوانید پروژه ابری خود را حذف کنید تا از هزینههای اضافی جلوگیری کنید.
اگرچه Cloud Run در صورت عدم استفاده از سرویس، هزینهای دریافت نمیکند، اما ممکن است همچنان برای ذخیره تصویر کانتینر در Artifact Registry هزینه دریافت شود. حذف پروژه Cloud شما، پرداخت هزینه برای تمام منابع استفاده شده در آن پروژه را متوقف میکند.
اگر مایلید، پروژه را حذف کنید:
gcloud projects delete $GOOGLE_CLOUD_PROJECT
همچنین ممکن است بخواهید منابع غیرضروری را از دیسک cloudshell خود حذف کنید. میتوانید:
- پوشه پروژه codelab را حذف کنید:
rm -rf ~/mcp-on-cloudrun
- هشدار! اقدام بعدی قابل بازگشت نیست! اگر میخواهید همه چیز را در Cloud Shell خود حذف کنید تا فضا آزاد شود، میتوانید کل دایرکتوری خانگی خود را حذف کنید . مراقب باشید که هر چیزی که میخواهید نگه دارید در جای دیگری ذخیره شده باشد.
sudo rm -rf $HOME