1. Обзор
Искусственный интеллект стремительно набирает популярность, совершая революцию в автоматизации задач и принятии решений благодаря своей способности работать автономно, обучаться и взаимодействовать с окружающей средой для достижения целей.
Но как именно создать агента? Этот практический урок поможет вам начать, показав, как создать валютного агента, способного конвертировать валюты разных стран. Цель урока — ознакомить вас с новейшими технологиями и помочь понять аббревиатуры, которые вы могли встречать в интернете (MCP, ADK, A2A).

Протокол контекста модели (MCP)
Протокол контекста модели (MCP) — это открытый протокол, который стандартизирует способы предоставления приложениями контекста для моделей с низкой степенью свободы. MCP обеспечивает стандартизированный способ связи моделей ИИ с ресурсами, подсказками и инструментами.
Комплект для разработки агентов (ADK)
Agent Development Kit (ADK) — это гибкая платформа для оркестрации разработки и развертывания агентов искусственного интеллекта. ADK не зависит от модели, не зависит от способа развертывания и разработан для совместимости с другими платформами. ADK был разработан для того, чтобы разработка агентов больше походила на разработку программного обеспечения, упрощая разработчикам создание, развертывание и оркестрацию агентных архитектур, от простых задач до сложных рабочих процессов.
Протокол Agent2Agent (A2A)
Протокол Agent2Agent (A2A) — это открытый стандарт, разработанный для обеспечения бесперебойной связи и сотрудничества между агентами искусственного интеллекта. Подобно тому, как MCP предоставляет стандартизированный способ предоставления LLM доступа к данным и инструментам, A2A предоставляет стандартизированный способ общения агентов друг с другом! В мире, где агенты создаются с использованием различных фреймворков и разными поставщиками, A2A обеспечивает общий язык, разрушая барьеры и способствуя совместимости.
Что вы узнаете
- Как создать локальный сервер MCP
- Развертывание сервера MCP в Cloud Run
- Как создать агента с помощью Agent Development Kit, использующего инструменты MCP.
- Как сделать агент ADK доступным в качестве A2A-сервера
- Тестирование A2A-сервера с помощью A2A-клиента
Что вам понадобится
2. Прежде чем начать
Создать проект
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
- Активируйте Cloud Shell, перейдя по этой ссылке . Вы можете переключаться между терминалом Cloud Shell (для выполнения облачных команд) и редактором (для сборки проектов), нажав соответствующую кнопку в Cloud Shell.
- После подключения к Cloud Shell необходимо проверить, прошли ли вы аутентификацию и установлен ли идентификатор вашего проекта, используя следующую команду:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Для настройки проекта используйте следующую команду:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
- Включите необходимые API, используя следующую команду. Это может занять несколько минут.
gcloud services enable cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
aiplatform.googleapis.com \
compute.googleapis.com
- Убедитесь, что у вас установлен Python 3.10 или более поздней версии.
Для получения информации о командах gcloud и их использовании обратитесь к документации .
3. Установка
- Клонируйте репозиторий:
git clone https://github.com/jackwotherspoon/currency-agent.git
cd currency-agent
- Установите uv (используется для управления зависимостями):
# macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (uncomment below line)
# powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Настройте переменные среды (через файл
.env):
Создайте файл .env , выполнив следующую команду:
echo "GOOGLE_GENAI_USE_VERTEXAI=TRUE" >> .env \
&& echo "GOOGLE_CLOUD_PROJECT=$PROJECT_ID" >> .env \
&& echo "GOOGLE_CLOUD_LOCATION=us-central1" >> .env
4. Создайте локальный сервер MCP.
Прежде чем приступить к настройке вашего валютного агента, вам сначала нужно создать MCP-сервер, чтобы предоставить доступ к инструментам, необходимым вашему агенту.
Сервер MCP позволяет писать легковесные программы, предоставляющие доступ к определенным возможностям (например, к получению курсов валют) в качестве инструментов. Затем агент или даже несколько агентов могут получить доступ к этим инструментам, используя стандартизированный протокол контекста модели (MCP).
Пакет FastMCP для Python можно использовать для создания MCP-сервера, предоставляющего единый инструмент под названием get_exchange_rate . Инструмент get_exchange_rate отправляет запрос через интернет к API Frankfurter для получения текущего обменного курса между двумя валютами.
Код для MCP-сервера можно найти в файле mcp-server/server.py :
import logging
import os
import httpx
from fastmcp import FastMCP
# Set up logging
logger = logging.getLogger(__name__)
logging.basicConfig(format="[%(levelname)s]: %(message)s", level=logging.INFO)
mcp = FastMCP("Currency MCP Server 💵")
@mcp.tool()
def get_exchange_rate(
currency_from: str = 'USD',
currency_to: str = 'EUR',
currency_date: str = 'latest',
):
"""Use this to get current exchange rate.
Args:
currency_from: The currency to convert from (e.g., "USD").
currency_to: The currency to convert to (e.g., "EUR").
currency_date: The date for the exchange rate or "latest". Defaults to "latest".
Returns:
A dictionary containing the exchange rate data, or an error message if the request fails.
"""
logger.info(f"--- 🛠️ Tool: get_exchange_rate called for converting {currency_from} to {currency_to} ---")
try:
response = httpx.get(
f'https://api.frankfurter.app/{currency_date}',
params={'from': currency_from, 'to': currency_to},
)
response.raise_for_status()
data = response.json()
if 'rates' not in data:
return {'error': 'Invalid API response format.'}
logger.info(f'✅ API response: {data}')
return data
except httpx.HTTPError as e:
return {'error': f'API request failed: {e}'}
except ValueError:
return {'error': 'Invalid JSON response from API.'}
if __name__ == "__main__":
logger.info(f"🚀 MCP server started on port {os.getenv('PORT', 8080)}")
# Could also use 'sse' transport, host="0.0.0.0" required for Cloud Run.
asyncio.run(
mcp.run_async(
transport="http",
host="0.0.0.0",
port=os.getenv("PORT", 8080),
)
)
Чтобы запустить сервер MCP локально, откройте терминал и выполните следующую команду (сервер запустится по адресу http://localhost:8080 ):
uv run mcp-server/server.py
Проверьте корректность работы сервера MCP и доступность инструмента get_exchange_rate с использованием протокола контекста модели (MCP).
В новом окне терминала (чтобы не останавливать локальный сервер MCP) выполните следующую команду:
uv run mcp-server/test_server.py
В результате вы должны увидеть текущий обменный курс 1 доллара США к евро:
--- 🛠️ Tool found: get_exchange_rate ---
--- 🪛 Calling get_exchange_rate tool for USD to EUR ---
--- ✅ Success: {
"amount": 1.0,
"base": "USD",
"date": "2025-05-26",
"rates": {
"EUR": 0.87866
}
} ---
Отлично! У вас успешно запущен сервер MCP с инструментом, к которому сможет получить доступ ваш агент.
Перед переходом к следующей станции остановите локально запущенный сервер MCP, нажав Ctrl+C (или Command+C на Mac) в терминале, где вы его запустили.
5. Разверните свой MCP-сервер в Cloud Run.
Теперь вы готовы развернуть сервер MCP в качестве удаленного сервера MCP в Cloud Run 🚀☁️
Преимущества удалённого запуска сервера MCP
Запуск сервера MCP удаленно в Cloud Run может предоставить ряд преимуществ:
- 📈Масштабируемость : Cloud Run разработан для быстрого масштабирования и обработки всех входящих запросов . Cloud Run автоматически масштабирует ваш сервер MCP в зависимости от спроса.
- 👥Централизованный сервер : Вы можете предоставить доступ к централизованному серверу MCP членам команды через права IAM, позволяя им подключаться к нему со своих локальных компьютеров, вместо того чтобы каждый запускал свой собственный сервер локально. Если на сервере MCP будут внесены изменения, все члены команды получат от этого выгоду.
- 🔐Безопасность : Cloud Run предоставляет простой способ принудительной аутентификации запросов. Это позволяет устанавливать только защищенные соединения с вашим сервером MCP, предотвращая несанкционированный доступ.
Перейдите в каталог mcp-server :
cd mcp-server
Разверните сервер MCP в Cloud Run:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Если развертывание вашей службы прошло успешно, вы увидите сообщение примерно следующего вида:
Service [mcp-server] revision [mcp-server-12345-abc] has been deployed and is serving 100 percent of traffic.
Аутентификация клиентов MCP
Поскольку вы указали --no-allow-unauthenticated , требующий аутентификации, любому клиенту MCP, подключающемуся к удаленному серверу MCP, потребуется пройти аутентификацию.
В официальной документации по размещению серверов MCP в Cloud Run содержится более подробная информация по этой теме в зависимости от того, где вы запускаете клиент MCP.
Для создания аутентифицированного туннеля к удаленному серверу MCP на вашем локальном компьютере вам потребуется запустить прокси-сервер Cloud Run .
По умолчанию для URL-адресов сервисов Cloud Run требуется авторизация всех запросов с помощью роли IAM Cloud Run Invoker ( roles/run.invoker ). Эта привязка политики IAM гарантирует использование надежного механизма безопасности для аутентификации вашего локального клиента MCP.
Необходимо убедиться, что у вас или у любых членов команды, пытающихся получить доступ к удаленному серверу MCP, роль IAM roles/run.invoker привязана к их субъекту IAM (учетной записи Google Cloud).
gcloud run services proxy mcp-server --region=us-central1
Вы должны увидеть следующий результат:
Proxying to Cloud Run service [mcp-server] in project [<YOUR_PROJECT_ID>] region [us-central1]
http://127.0.0.1:8080 proxies to https://mcp-server-abcdefgh-uc.a.run.app
Теперь весь трафик к http://127.0.0.1:8080 будет аутентифицирован и перенаправлен на удаленный сервер MCP.
Проверьте работу удаленного сервера MCP.
В новом терминале вернитесь в корневую папку и повторно запустите файл mcp-server/test_server.py чтобы убедиться, что удаленный MCP-сервер работает.
cd ..
uv run mcp-server/test_server.py
Вы должны увидеть результат, аналогичный тому, что вы видели при локальном запуске сервера:
--- 🛠️ Tool found: get_exchange_rate ---
--- 🪛 Calling get_exchange_rate tool for USD to EUR ---
--- ✅ Success: {
"amount": 1.0,
"base": "USD",
"date": "2025-05-26",
"rates": {
"EUR": 0.87866
}
} ---
Чтобы убедиться в том, что удаленный сервер действительно вызывался, вы можете запросить журналы развернутого сервера Cloud Run MCP:
gcloud run services logs read mcp-server --region us-central1 --limit 5
В логах вы должны увидеть следующее:
2025-06-04 14:28:29,871 [INFO]: --- 🛠️ Tool: get_exchange_rate called for converting USD to EUR ---
2025-06-04 14:28:30,610 [INFO]: HTTP Request: GET https://api.frankfurter.app/latest?from=USD&to=EUR "HTTP/1.1 200 OK"
2025-06-04 14:28:30,611 [INFO]: ✅ API response: {'amount': 1.0, 'base': 'USD', 'date': '2025-06-03', 'rates': {'EUR': 0.87827}}
Теперь, когда у вас есть удалённый сервер MCP, вы можете перейти к созданию агента! 🤖
6. Создайте агента с помощью комплекта разработки агентов (ADK).
У вас развернут сервер MCP, теперь пришло время создать агент валютного рынка с помощью комплекта разработки агентов (ADK) .
Недавно вышел стабильный релиз Agent Development Kit версии 1.0.0. Это событие означает, что Python ADK теперь готов к использованию в производственной среде, предлагая надежную и отказоустойчивую платформу для разработчиков, позволяющую уверенно создавать и развертывать свои агенты в реальных условиях.
ADK делает создание агентов чрезвычайно простым и позволяет им легко подключаться к серверам MCP со встроенной поддержкой инструментов MCP. Валютный агент будет получать доступ к инструменту get_exchange_rate , используя класс MCPToolset из ADK.
Код валютного агента находится в currency_agent/agent.py :
import logging
import os
from dotenv import load_dotenv
from google.adk.agents import LlmAgent
from google.adk.a2a.utils.agent_to_a2a import to_a2a
from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams
logger = logging.getLogger(__name__)
logging.basicConfig(format="[%(levelname)s]: %(message)s", level=logging.INFO)
load_dotenv()
SYSTEM_INSTRUCTION = (
"You are a specialized assistant for currency conversions. "
"Your sole purpose is to use the 'get_exchange_rate' tool to answer questions about currency exchange rates. "
"If the user asks about anything other than currency conversion or exchange rates, "
"politely state that you cannot help with that topic and can only assist with currency-related queries. "
"Do not attempt to answer unrelated questions or use tools for other purposes."
)
logger.info("--- 🔧 Loading MCP tools from MCP Server... ---")
logger.info("--- 🤖 Creating ADK Currency Agent... ---")
root_agent = LlmAgent(
model="gemini-2.5-flash",
name="currency_agent",
description="An agent that can help with currency conversions",
instruction=SYSTEM_INSTRUCTION,
tools=[
MCPToolset(
connection_params=StreamableHTTPConnectionParams(
url=os.getenv("MCP_SERVER_URL", "http://localhost:8080/mcp")
)
)
],
)
Для быстрого тестирования валютного агента вы можете воспользоваться пользовательским интерфейсом разработчика ADK, доступ к которому осуществляется путем запуска adk web :
uv run adk web
В браузере перейдите по адресу http://localhost:8000 чтобы увидеть и протестировать агента!
Убедитесь, что в верхнем левом углу веб-интерфейса в качестве агента выбрано значение currency_agent .

В чате задайте своему агенту вопрос, например: «Что такое 250 CAD в USD?» . Вы увидите, как агент вызовет наш инструмент get_exchange_rate MCP, прежде чем выдаст ответ.

Агент работает! Он может обрабатывать запросы, связанные с конвертацией валют 💸.
7. Протокол Agent2Agent (A2A)
Протокол Agent2Agent (A2A) — это открытый стандарт, разработанный для обеспечения бесперебойной связи и сотрудничества между агентами искусственного интеллекта. Это позволяет агентам, созданным с использованием различных фреймворков и от разных поставщиков, общаться друг с другом на общем языке, устраняя разрозненность и способствуя совместимости.

A2A позволяет агентам:
- Откройте для себя: находите других агентов и изучайте их навыки ( AgentSkill ) и возможности ( AgentCapabilities ), используя стандартизированные карточки агентов .
- Общайтесь: обменивайтесь сообщениями и данными безопасно.
- Сотрудничество: Делегируйте задачи и координируйте действия для достижения сложных целей.
Протокол A2A облегчает эту коммуникацию с помощью таких механизмов, как «карточки агентов», которые действуют как цифровые визитные карточки, которые агенты могут использовать для рекламы своих возможностей и информации о подключении.

Теперь настало время сделать валютного агента доступным через A2A, чтобы другие агенты и клиенты могли его вызывать.
A2A Python SDK
A2A Python SDK предоставляет модели Pydantic для каждого из вышеупомянутых ресурсов: AgentSkill , AgentCapabilities и AgentCard . Это обеспечивает интерфейс для ускорения разработки и интеграции с протоколом A2A.
AgentSkill — это инструмент, с помощью которого вы сообщаете другим агентам, что у валютного агента есть инструмент для get_exchange_rate :
# A2A Agent Skill definition
skill = AgentSkill(
id='get_exchange_rate',
name='Currency Exchange Rates Tool',
description='Helps with exchange values between various currencies',
tags=['currency conversion', 'currency exchange'],
examples=['What is exchange rate between USD and GBP?'],
)
Затем в карточке AgentCard будет указан список навыков и возможностей агента, а также дополнительные сведения, такие как режимы ввода и вывода, которые может обрабатывать агент:
# A2A Agent Card definition
agent_card = AgentCard(
name='Currency Agent',
description='Helps with exchange rates for currencies',
url=f'http://{host}:{port}/',
version='1.0.0',
defaultInputModes=["text"],
defaultOutputModes=["text"],
capabilities=AgentCapabilities(streaming=True),
skills=[skill],
)
Пришло время объединить все это с валютным агентом и продемонстрировать возможности A2A!
8. Предоставление доступа к серверу A2A агента валютного обмена
ADK упрощает процесс создания и подключения агентов с использованием протокола A2A. Предоставление доступного (доступного) A2A-сервера существующему агенту ADK осуществляется с помощью функции ADK to_a2a(root_agent) (подробную информацию см. в документации ADK ).
Функция to_a2a преобразует существующий агент для работы с A2A и позволяет предоставлять к нему доступ в качестве сервера через uvicorn . Это означает, что вы получаете более жесткий контроль над тем, что хотите предоставить, если планируете внедрить свой агент в производство. Функция to_a2a() автоматически генерирует карточку агента на основе вашего кода агента, используя встроенный Python SDK A2A .
Заглянув внутрь файла currency_agent/agent.py вы увидите использование to_a2a и то, как агент валютного рынка представлен в качестве A2A-сервера всего двумя строками кода!
from google.adk.a2a.utils.agent_to_a2a import to_a2a
# ... see file for full code
# Make the agent A2A-compatible
a2a_app = to_a2a(root_agent, port=10000)
Для запуска A2A-сервера в новом окне терминала выполните следующую команду:
uv run uvicorn currency_agent.agent:a2a_app --host localhost --port 10000
Если сервер запустится успешно, вывод будет выглядеть следующим образом, указывая на то, что он работает на порту 10000 :
[INFO]: --- 🔧 Loading MCP tools from MCP Server... ---
[INFO]: --- 🤖 Creating ADK Currency Agent... ---
INFO: Started server process [45824]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://localhost:10000 (Press CTRL+C to quit)
Теперь валютный агент успешно работает в режиме A2A-сервера, и к нему могут обращаться другие агенты или клиенты, использующие протокол A2A!
Убедитесь, что удаленный агент запущен.
Вы можете убедиться в работоспособности своего агента, перейдя по URL-адресу карточки агента валют, автоматически сгенерированной функцией to_a2a() .
В браузере перейдите по адресу [http://localhost:10000/.well-known/agent.json]
Вы должны увидеть следующую карточку агента:
{
"capabilities": {
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain"
],
"description": "An agent that can help with currency conversions",
"name": "currency_agent",
"preferredTransport": "JSONRPC",
"protocolVersion": "0.3.0",
"skills": [
{
"description": "An agent that can help with currency conversions I am a specialized assistant for currency conversions. my sole purpose is to use the 'get_exchange_rate' tool to answer questions about currency exchange rates. If the user asks about anything other than currency conversion or exchange rates, politely state that I cannot help with that topic and can only assist with currency-related queries. Do not attempt to answer unrelated questions or use tools for other purposes.",
"id": "currency_agent",
"name": "model",
"tags": [
"llm"
]
},
{
"description": "Use this to get current exchange rate.\n\nArgs:\n currency_from: The currency to convert from (e.g., \"USD\").\n currency_to: The currency to convert to (e.g., \"EUR\").\n currency_date: The date for the exchange rate or \"latest\". Defaults to \"latest\".\n\nReturns:\n A dictionary containing the exchange rate data, or an error message if the request fails.",
"id": "currency_agent-get_exchange_rate",
"name": "get_exchange_rate",
"tags": [
"llm",
"tools"
]
}
],
"supportsAuthenticatedExtendedCard": false,
"url": "http://localhost:10000",
"version": "0.0.1"
}
Протестируйте A2A-сервер
Теперь вы можете протестировать сервер, отправив ему несколько запросов с помощью A2A!
В состав A2A Python SDK входит класс a2a.client.A2AClient , который упрощает этот процесс.
Файл currency_agent/test_client.py содержит код, который выполняет несколько различных тестовых случаев на сервере A2A.
# ... see file for full code
# Example test using A2AClient
async def run_single_turn_test(client: A2AClient) -> None:
"""Runs a single-turn non-streaming test."""
send_message_payload = create_send_message_payload(text="how much is 100 USD in CAD?")
request = SendMessageRequest(
id=str(uuid4()), params=MessageSendParams(**send_message_payload)
)
print("--- ✉️ Single Turn Request ---")
# Send Message
response: SendMessageResponse = await client.send_message(request)
print_json_response(response, "📥 Single Turn Request Response")
if not isinstance(response.root, SendMessageSuccessResponse):
print("received non-success response. Aborting get task ")
return
if not isinstance(response.root.result, Task):
print("received non-task response. Aborting get task ")
return
task_id: str = response.root.result.id
print("--- ❔ Query Task ---")
# query the task
get_request = GetTaskRequest(id=str(uuid4()), params=TaskQueryParams(id=task_id))
get_response: GetTaskResponse = await client.get_task(get_request)
print_json_response(get_response, "📥 Query Task Response")
# ----- Main Entrypoint (Create client --> Run tests) -----
async def main() -> None:
"""Main function to run the tests."""
print(f'--- 🔄 Connecting to agent at {AGENT_URL}... ---')
try:
async with httpx.AsyncClient() as httpx_client:
# Create a resolver to fetch the agent card
resolver = A2ACardResolver(
httpx_client=httpx_client,
base_url=AGENT_URL,
)
agent_card = await resolver.get_agent_card()
# Create a client to interact with the agent
client = A2AClient(
httpx_client=httpx_client,
agent_card=agent_card,
)
print('--- ✅ Connection successful. ---')
await run_single_turn_test(client)
await run_multi_turn_test(client)
except Exception as e:
traceback.print_exc()
print(f'--- ❌ An error occurred: {e} ---')
print('Ensure the agent server is running.')
Запустите тесты, используя следующую команду:
uv run currency_agent/test_client.py
Успешный тестовый запуск приведет к следующим результатам:
--- 🔄 Connecting to agent at http://localhost:10000... ---
--- ✅ Connection successful. ---
--- ✉️ Single Turn Request ---
--- 📥 Single Turn Request Response ---
{"id":"3bc92d7b-d857-4e93-9ff0-b2fb865f6e35","jsonrpc":"2.0","result":{"artifacts":[{"artifactId":"35e89e14-b977-4397-a23b-92c84bc32379","parts":[{"kind":"text","text":"Based on the current exchange rate, 1 USD is equivalent to 1.3704 CAD. Therefore, 100 USD would be 137.04 CAD.\n"}]}],"contextId":"2d66f277-152c-46ef-881d-7fe32866e9f5","history":[{"contextId":"2d66f277-152c-46ef-881d-7fe32866e9f5","kind":"message","messageId":"59819269f7d04849b0bfca7d43ec073c","parts":[{"kind":"text","text":"how much is 100 USD in CAD?"}],"role":"user","taskId":"52ae2392-84f5-429a-a14b-8413d3d20d97"},{"contextId":"2d66f277-152c-46ef-881d-7fe32866e9f5","kind":"message","messageId":"286095c6-12c9-40cb-9596-a9676d570dbd","parts":[],"role":"agent","taskId":"52ae2392-84f5-429a-a14b-8413d3d20d97"}],"id":"52ae2392-84f5-429a-a14b-8413d3d20d97","kind":"task","status":{"state":"completed"}}}
// ...
--- 🚀 First turn completed, no further input required for this test case. ---
Работает! Вы успешно проверили возможность связи с валютным агентом через A2A-сервер! 🎉
Чтобы увидеть более сложные примеры использования, загляните в репозиторий a2a-samples на GitHub!
Хотите развернуть своего агента? Vertex AI Agent Engine предоставляет управляемый интерфейс для развертывания агентов ИИ в производственной среде!
9. Поздравляем!
Поздравляем! Вы успешно создали и развернули удаленный сервер MCP, разработали валютного агента с помощью Agent Development Kit (ADK), который подключается к инструментам, использующим MCP, и предоставили доступ к своему агенту через протокол Agent2Agent (A2A)! Теперь валютный агент доступен для взаимодействия с другими агентами любой платформы с использованием протокола A2A!
Вот ссылка на полную документацию по коду.
Что мы рассмотрели
- Как создать локальный сервер MCP
- Развертывание сервера MCP в Cloud Run
- Как создать агента с помощью Agent Development Kit, использующего инструменты MCP.
- Как сделать агент ADK доступным в качестве A2A-сервера
- Тестирование A2A-сервера с помощью A2A-клиента
Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этой лабораторной работе, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить» .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.