Начало работы с MCP, ADK и A2A

1. Обзор

Агенты ИИ стремительно набирают популярность, совершая революцию в автоматизации задач и принятии решений благодаря своей способности действовать автономно, обучаться и взаимодействовать с окружающей средой для достижения целей.

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

Архитектура

Протокол контекста модели (MCP)

Протокол контекста модели (MCP) — это открытый протокол, стандартизирующий способ предоставления контекста приложениями LLM. MCP обеспечивает стандартизированный способ подключения моделей ИИ к ресурсам, подсказкам и инструментам.

Комплект разработки агентов (ADK)

Комплект разработки агентов (ADK) — это гибкая структура оркестровки для разработки и развертывания агентов ИИ. ADK не зависит от модели и развертывания и совместим с другими фреймворками. ADK был разработан, чтобы сделать разработку агентов максимально похожей на разработку программного обеспечения, чтобы разработчикам было проще создавать, развертывать и организовывать архитектуры агентов, варьирующиеся от простых задач до сложных рабочих процессов.

Протокол Agent2Agent (A2A)

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

Чему вы научитесь

  • Как создать локальный MCP-сервер
  • Развертывание сервера MCP в Cloud Run
  • Как создать агента с помощью Agent Development Kit, использующего инструменты MCP
  • Как представить агента ADK как сервер A2A
  • Тестирование сервера A2A с помощью клиента A2A

Что вам понадобится

  • Браузер, например Chrome или Firefox
  • Проект Google Cloud с включенным биллингом.

2. Прежде чем начать

Создать проект

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
  3. Активируйте Cloud Shell, перейдя по этой ссылке . Вы можете переключаться между Cloud Shell Terminal (для выполнения облачных команд) и Editor (для создания проектов), нажимая соответствующую кнопку в Cloud Shell.
  4. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что проекту присвоен ваш идентификатор проекта, с помощью следующей команды:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Для настройки проекта используйте следующую команду:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
  1. Включите необходимые 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
  1. Убедитесь, что у вас установлен Python 3.10+.

Информацию о командах и использовании gcloud см. в документации .

3. Установка

  1. Клонировать репозиторий:
git clone https://github.com/jackwotherspoon/currency-agent.git
cd currency-agent
  1. Установка 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"
  1. Настройте переменные среды (через файл .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).

Пакет Python FastMCP можно использовать для создания 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) выполните следующее:

uv run mcp-server/test_server.py

Вы должны увидеть текущий обменный курс 1 USD (доллар США) к EUR (евро):

--- 🛠️ 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, необходимо будет пройти аутентификацию.

Официальная документация по серверам Host MCP в Cloud Run содержит больше информации по этой теме в зависимости от того, где вы используете свой клиент MCP.

Вам потребуется запустить прокси-сервер Cloud Run , чтобы создать аутентифицированный туннель к удаленному серверу MCP на вашей локальной машине.

По умолчанию 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. Создайте агента с помощью Agent Development Kit (ADK)

У вас есть развернутый сервер MCP, теперь пришло время создать валютный агент с помощью Agent Development Kit (ADK) .

Недавно вышел стабильный релиз Agent Development Kit версии 1.0.0. Это достижение означает, что Python ADK теперь готов к использованию в промышленной среде, предлагая разработчикам надежную и мощную платформу для уверенной разработки и развертывания агентов в реальных средах.

ADK значительно упрощает создание агентов и позволяет им легко подключаться к серверам MCP благодаря встроенной поддержке MCP Tools. Валютный агент будет получать доступ к инструменту 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 .

Веб-интерфейс ADK

Задайте своему агенту в чате вопрос, например : «Сколько будет 250 канадских долларов в долларах США?» . Вы увидите, как агент вызывает наш инструмент MCP get_exchange_rate прежде чем дать ответ.

Веб-агент валют ADK

Агент работает! Он может обрабатывать запросы, связанные с конвертацией валют 💸.

7. Протокол Agent2Agent (A2A)

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

Протокол A2A

A2A позволяет агентам:

  • Откройте для себя: найдите других агентов и изучите их навыки ( AgentSkill ) и возможности ( AgentCapabilities ) с помощью стандартизированных карт агентов .
  • Общайтесь: безопасно обменивайтесь сообщениями и данными.
  • Сотрудничайте: делегируйте задачи и координируйте действия для достижения сложных целей.

Протокол A2A упрощает эту коммуникацию посредством таких механизмов, как «агентские карты», которые действуют как цифровые визитные карточки, используемые агентами для рекламы своих возможностей и информации о подключении.

Карта агента 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 Currency Agent

ADK упрощает процесс создания и подключения агентов, использующих протокол A2A. Предоставление доступа (отображение) существующему агенту ADK в качестве сервера A2A осуществляется с помощью функции ADK to_a2a(root_agent) (подробности см. в документации ADK ).

Функция to_a2a преобразует существующий агент для работы с A2A и позволяет предоставлять его как сервер через uvicorn . Это обеспечивает более строгий контроль над тем, что вы хотите предоставить, если планируете использовать свой агент в производственном режиме. Функция to_a2a() автоматически генерирует карточку агента на основе его кода, используя встроенный A2A Python SDK .

Заглянув в файл 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 за ресурсы, используемые в этой лабораторной работе, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу Управление ресурсами .
  2. В списке проектов выберите проект, который вы хотите удалить, а затем нажмите Удалить .
  3. В диалоговом окне введите идентификатор проекта, а затем нажмите кнопку «Завершить» , чтобы удалить проект.