Умные приложения

Как расширить возможности приложения в Gemini и Поиске с помощью Connected Apps Platform

Колонки

  • Екатерина Семенова

    штатный инженер по связям с разработчиками

  • Май Лоу (Mai Lowe)

    Менеджер группы продуктов

О приложении

О выступлении

Новая платформа Connected Apps Platform позволяет интегрировать сервисы вашего приложения напрямую в Gemini, режим ИИ в Поиске и систему искусственного интеллекта Android. На этом занятии мы расскажем, как начать работу с ними. На примерах кода и реальных кейсов мы рассмотрим жизненный цикл разработки: создание, тестирование и публикацию вашего первого подключенного приложения, которое поможет пользователям в их рабочих процессах на основе искусственного интеллекта.

К концу занятия вы научитесь:

  • Интегрируйте свой сервис с Connected Apps Platform.
  • Протестируйте интеграцию на разных платформах ИИ.
  • Добавьте функции своего приложения в рабочие процессы пользователей с ИИ.

Сводка

  • Платформа подключенных приложений – это единая точка входа для запуска функций приложений в Gemini и Поиске с помощью декларативных схем. Доступ к нему будет открываться поэтапно. Сначала мы запустим предварительную версию для разработчиков из США.
  • Интеграции используют стандарт Model Context Protocol (MCP) через удаленные серверы или локальные серверы на устройстве с помощью библиотеки AppFunctions Jetpack. Удаленные серверы также могут возвращать собственный интерфейс, отображаемый внутри iframe.
  • Подтверждения масштабируются в зависимости от риска, чтобы защитить доверие пользователей. Разработчики помечают инструменты как доступные только для чтения или с помощью destructiveHint, чтобы Gemini запрашивал явное подтверждение, когда действия изменяют или удаляют данные.
  • Режим разработчика Gemini позволяет проверять вызовы инструментов и задержку для общедоступных конечных точек. Сейчас она доступна разработчикам в США.
  • Google Connected Console управляет выпуском рабочих версий для одобренных разработчиков. Вы настраиваете конечные точки, управляете тестировщиками на выбранных платформах и отправляете приложение на проверку.

Ресурсы

Gemini Notebook

Темы

  • gemini
  • поиск
  • connected-apps
  • mcp
  • appfunctions
  • android

Расшифровка

Введение

  • Всем привет.

  • Меня зовут Май, и я руководитель по продукту Connected Apps Platform в Gemini.

  • Позже вы также услышите Кейт, нашего инженера по связям с разработчиками.

  • Она сейчас поднимется.

  • Сегодня мы расскажем, как расширить возможности вашего приложения с помощью Gemini и Поиска – одних из самых популярных агентных продуктов Google.

  • Мы расскажем, почему подключенные приложения так полезны и удобны для пользователей.

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

  • Итак, начнем.

  • Многие из нас заметили, что в экосистеме приложений происходит что-то действительно масштабное.

  • То, как люди используют свои устройства, ищут ответы и решают задачи, не просто меняется.

  • Она фундаментально изменилась.

  • Люди больше не открывают браузеры и не нажимают на ссылки.

  • Они общаются напрямую с помощниками, такими как Gemini.

  • Они задают Gemini сложные вопросы, ищут ответы, используя мультимодальный поиск.

  • И они ожидают, что устройства Android будут не просто понимать, что они говорят, но и знать, что они хотят сделать.

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

  • Допустим, вы попросили Gemini помочь вам придумать, как провести выходные с друзьями в определенном месте и в определенное время.

  • Современные модели могут обработать этот план за секунды.

  • Это потрясающе.

  • Организованность.

  • И что потом?

  • Она заканчивается.

  • Пользователь заходит в тупик и остается ни с чем, имея только план и ничего подтвержденного.

  • Модель знает, что делать, но у нее нет рук, чтобы это сделать.

  • Поэтому вам приходится копировать и вставлять информацию из чата с Gemini в другие приложения.

  • Иногда, если вы используете мобильное устройство, это становится очень неудобно.

  • Затем вам нужно запомнить всю информацию и ввести ее.

  • Этот когнитивный скачок и это трение полностью разрушают магию.

  • И что это значит для всех вас?

  • Это значит, что у вас есть спрос со стороны пользователей с ярко выраженным намерением, которые застряли в чате, вместо того чтобы привлекать в ваше приложение заинтересованных пользователей.

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

  • И сейчас они проводят много времени, общаясь с такими помощниками, как Gemini.

  • Когда пользователь выражает реальное намерение совершить действие, это критически важный момент на его пути.

  • Они не просто просматривают контент.

  • У них есть конкретная задача, которую они хотят решить прямо сейчас.

  • Благодаря интеграции приложений с генеративными моделями помощники, такие как Gemini, могут не только отвечать на вопросы, но и выполнять задачи.

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

  • Вы можете помочь им в этом и выполнить действие прямо сейчас.

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

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

  • Подключенные приложения позволяют интегрировать ваши сервисы в API агентов, чтобы продукты Google на основе агентов могли легко направлять пользователей с ярко выраженным намерением прямо в ваш продукт.

Connected Apps Platform

  • Поэтому сегодня я с радостью объявляю о запуске Connected Apps Platform.

  • Раньше, чтобы охватить пользователей в разных продуктах Google, требовалось настраивать интеграцию с каждым из них.

  • Если вы хотите, чтобы действие или ярлык приложения Android работали, вам нужно их создать.

  • Ещё одна интеграция с Поиском.

  • Но мы хотим, чтобы вам было максимально удобно и интересно.

  • Поэтому мы стандартизировали процесс регистрации, чтобы вы могли запустить свое приложение в нескольких агентных продуктах Google через единую точку входа.

  • Теперь вы можете один раз создать функции приложения, используя стандартные декларативные схемы, и они сразу же станут доступны в двух наших ключевых продуктах – Gemini и Поиске.

  • Скоро появятся и другие продукты.

  • Давайте поговорим об этом охвате и о том, что он значит для вас.

  • Вам не нужно создавать несколько плагинов, управлять четырьмя разными консолями разработчика и поддерживать различные аутентифицированные рукопожатия, чтобы охватить пользователей Google на Android, в Gemini и Поиске.

  • На нашей единой платформе вы можете создать и зарегистрировать определения инструментов один раз.

  • Вы выбираете нужные продукты Google, а мы предоставляем вам единую кнопку запуска в новой Google Connected Console.

  • После публикации ваши функции станут доступны всем пользователям Gemini и Поиска.

  • Когда пользователи вводят запрос в Gemini на ноутбуке, ищут что-то в интернете или используют функции Ассистента на Android, они могут выбрать ваше приложение в самый подходящий момент и прямо там, где они находятся.

  • Поэтому мы будем открывать доступ к платформе поэтапно, начиная с предварительной версии.

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

  • На этом этапе предварительной версии платформа доступна только разработчикам из США.

  • Чтобы получить доступ, заполните форму. Она есть в руководстве для разработчиков на сайте developers.google.com/connected-apps. Если вы разработчик Google Play, вы также можете найти ее на главной странице Google Play Console.

  • Следующий вопрос: насколько сложно создать такую модель?

  • Если у вас есть REST API или намерения Android, вы в хорошей стартовой позиции.

  • Мы опираемся на концепции, знакомые разработчикам.

  • Наша платформа интегрируется с протоколом контекста модели (MCP) через серверные и нативные MCP для Android.

  • Чтобы вам было ещё удобнее, мы запускаем в Gemini новую функцию – режим разработчика. Он уже доступен всем пользователям в США.

  • Это позволяет вам тестировать приложение в Gemini, получать отзывы в реальном времени о состояниях ошибок, задержках и ответах модели.

  • Скоро вы сможете генерировать собственные наборы для оценки, а также получать карточки с показателями качества и контрольные показатели.

  • Будет здорово!

  • Независимо от того, какой у вас уровень доступа к платформе, вы всегда можете протестировать приложение в режиме разработчика.

  • Уверен, что вы хотите узнать больше. Кейт выйдет на сцену сразу после меня и расскажет вам все подробности.

Доверие, конфиденциальность и управление

  • Но сначала я хочу поговорить о том, что становится все более важным, – о доверии пользователей.

  • Когда мы говорим о том, что агенты действуют от имени пользователя, первый вопрос, который часто возникает, – как сохранить контроль за пользователем.

  • Вот как мы смотрим на это в нескольких простых концепциях.

  • Во-первых, подтверждения зависят от уровня риска.

  • Мы не будем показывать всплывающее окно перед каждым вызовом инструмента.

  • Поиск информации, проверка меню, отслеживание заказа – все это должно быть простым.

  • Но если действие имеет реальные последствия, например редактирование общего файла, завершение бронирования или удаление чего-то, что пользователь не сможет легко вернуть, модель стремится попросить у пользователя явное согласие, прежде чем это произойдет.

  • Во-вторых, конфиденциальные данные показываются, а не скрываются.

  • Поэтому наши продукты разработаны так, чтобы проверять, какая личная информация может быть передана вашему приложению.

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

  • В-третьих, когда мы спрашиваем, мы конкретны.

  • Мы не просто спрашиваем "Вы уверены?", а указываем, какое приложение запрашивает доступ и что именно оно хочет отправить или изменить.

  • Это поможет пользователю принять осознанное решение, а не просто нажать на кнопку.

  • А чтобы пользователям не приходилось постоянно подтверждать свои действия, мы даем им больше контроля над тем, как часто они видят запросы.

  • Например, в приложении Gemini пользователи могут выбирать для каждого приложения и даже для каждого действия, разрешать ли его всегда.

  • Поэтому мы просим вас честно указывать, какие инструменты вы использовали.

  • Отметьте, что доступно только для чтения, что изменяет данные, а что удаляет.

  • Эти сигналы помогают нашим продуктам решить, когда привлечь пользователя.

  • И снова Кейт покажет вам, как именно это сделать, всего за несколько минут.

Опыт партнеров и путь к производству

  • Давайте вернемся к планированию поездки на выходные, о которой мы говорили.

  • Помните, как это было сложно и разрозненно?

  • У вас был отличный план для встречи с друзьями, но вы столкнулись с трудностями: вам пришлось копировать и вставлять информацию, переключаясь между приложениями.

  • Viator и Ticketmaster – два наших первых партнера, которые увидели реальную возможность обратиться к пользователям там, где они находятся.

  • Они решили сотрудничать с нами и убрать эту стену, позволив пользователю с ярко выраженным намерением перейти в приложение прямо из Gemini.

  • Благодаря подключенным приложениям, которые создали эти партнеры, весь процесс стал намного более плавным и беспроблемным.

  • Давайте посмотрим.

  • Пользователь подключает приложения и просит Gemini найти дневной гастротур на Viator и билеты на концерт на Ticketmaster для группы из четырех человек.

  • Gemini распознает запрос, обращается к Viator и Ticketmaster и передает им информацию о размере группы, датах и предпочтениях.

  • Не выходя из чата, оба приложения получают данные о доступности в реальном времени и отображают интерактивные элементы прямо в чате для пользователя.

  • Вместо того чтобы заходить в тупик и жонглировать кучей вкладок, Viator и Ticketmaster – это примеры партнеров, которые позволяют пользователям делать то, что им нужно, прямо по ходу дела: изучать остановки гастрономического тура, выбирать места на концерте и полностью беспрепятственно переходить от поиска к действию.

  • Итак, эра статичных панелей запуска приложений уходит в прошлое, уступая место интеллектуальным, проактивным и агентским возможностям.

  • Ваши пользователи уже обращаются за помощью к Поиску и Gemini.

  • Вместе мы можем помочь им выйти за рамки ответов и предоставить действительно мощный и волшебный опыт.

  • На этом у меня всё.

  • А теперь я передаю слово Кейт, которая расскажет, как создать подключенное приложение.

  • Поднимайтесь.

  • Всем привет.

  • Меня зовут Кейт, я инженер по связям с разработчиками. Я помогаю таким разработчикам, как вы, интегрировать свои продукты с Connected Apps Platform.

  • Я расскажу, как протестировать, создать и развернуть подключенное приложение.

  • Как ранее упомянула Май, есть два основных способа интеграции с Connected Apps Platform: через удаленный MCP-сервер с использованием протокола MCP или через Android MCP, когда вы можете создать удаленный MCP-сервер на устройстве с помощью библиотеки AppFunctions.

  • Рекомендуем использовать удаленные MCP-серверы, если вы хотите интегрировать платформы, например Android, iOS и веб-версию.

  • Некоторые разработчики также сообщили, что иногда предпочитают локальное выполнение, когда данные приложения доступны только на устройстве.

  • В таких случаях мы рекомендуем использовать Android MCP с библиотекой AppFunctions Jetpack.

  • Посмотрите выступление Дэна и Сары, в котором они подробно рассказывают, как интегрировать приложение с Connected Apps Platform с помощью AppFunctions и Android MCP.

Интеграция и демонстрация удаленного MCP-сервера

  • Теперь давайте рассмотрим, как создать удаленный MCP-сервер.

  • Чтобы показать, как это работает на практике, мы создали официальное приложение AndroidDevSummit.

  • Давайте посмотрим, как это работает.

  • Давайте вернемся к демонстрации.

  • Например, вы можете спросить: "AndroidDevSummit, расскажи мне больше о сеансах XR".

  • Сейчас Gemini подключается к MCP-серверу, который мы создали для этого подключенного приложения.

  • Она находит нужный инструмент и использует его данные, чтобы составить понятный ответ.

  • Итак, он находит информацию о сеансах, связанных с XR, здесь для дня 1 и дня 2, и в конце он отображает наш собственный брендированный виджет для AndroidDevSummit с ботом Android.

  • Вы можете взаимодействовать с этим виджетом прямо в Gemini.

  • Вы можете посмотреть расписание, например, переключить местоположение или отфильтровать по дням.

  • Вы также можете фильтровать по разным темам, например, если я хочу искать сеансы, связанные с XR, а также просматривать подробности и докладчиков.

  • Ура!

  • Все это происходит в Gemini, вашем брендированном решении. Пользователям не нужно переключаться между приложениями или искать информацию в других источниках. Все доступно в одном месте, без необходимости выходить из приложения.

  • Давайте вернемся к слайдам.

Разработка MCP-сервера и пользовательский интерфейс

  • Давайте посмотрим, как создать такое приложение.

  • Запустить MCP-сервер с помощью библиотеки FastMCP очень просто, но нужно следовать четырем важным рекомендациям.

  • Сначала нужно предоставить серверу явные инструкции.

    from mcp.server.fastmcp import FastMCP
    
    mcp = FastMCP(
        name="ADS-MCP",
        instructions=(
            "A Model Context Protocol server providing event "
            "overview, schedules, sessions, speakers, and "
            "sandbox demos for the Android Developer Summit "
        ),
    )
  • При инициализации MCP-сервера всегда задавайте четкие инструкции, описывающие домен и возможности подключенных приложений.

  • Connected Apps Platform использует эти инструкции, чтобы определить, когда нужно делегировать задачу вашему серверу.

  • Кроме того, Google Connected Console, о которой я расскажу позже, также проверяет наличие этих инструкций.

  • Во-вторых, добавьте аннотации инструментов для безопасности и контроля.

    @mcp.tool(
        title="List Sessions",
    
        annotations=ToolAnnotations(
            readOnlyHint=True,
            destructiveHint=False,
        ),
    
        meta={ … },
    )
    def list_sessions( … )
    …
  • Для нашего сервера ADS у нас есть эти две аннотации.

  • Модели важно знать, когда инструмент работает в режиме только для чтения, а когда изменяет данные.

  • Поэтому, если у вас есть инструменты, которые редактируют или удаляют информацию о пользователях, всегда используйте destructiveHint, чтобы пометить их как инструменты, которые могут выполнять операции редактирования или удаления.

  • Таким образом платформа Connected Apps Platform узнает, что ей нужно показать пользователю сообщение с подтверждением, чтобы он мог выполнить это действие.

  • Вы также можете настроить инструменты в Google Connected Console. Я покажу, как это сделать, позже.

  • И в-третьих, строго типизированные схемы и семантические строки документации.

    def list_sessions(
        track: Optional[str] = None,
        location: Optional[str] = None,
    ) -> List[Dict[str, Any]]:
        """Lists all sessions, optionally filtered by track
        (e.g. 'Tools and performance', 'Apps Foundation',
        'AI experiences', 'Android XR') or location
        (e.g. 'MTV', 'Mountain View', 'London', 'LON').
        """
        …
  • Строки документации параметров считаются частью запроса.

  • В этом инструменте list_sessions мы явно документируем ожидаемые значения, такие как инструменты и производительность, или MTV по сравнению с Лондоном для местоположения.

  • Самым важным фактором точного вызова инструмента являются понятные и описательные схемы.

  • И последний – привязка метаданных ресурса пользовательского интерфейса.

    @mcp.tool(
        …
        meta={
            "ui": {
                "resourceUri": "ui://ads-mcp/summit-app",
            },
            …
        },
    )
    def list_sessions(…)
    …
  • Посмотрите на определение интерфейса в метаданных.

  • Эти метаданные – мост, который указывает Gemini связать выходные данные инструмента непосредственно с нашим пользовательским ресурсом пользовательского интерфейса.

  • Это подводит нас к отрисовке пользовательского интерфейса.

    @mcp.resource(
        "ui://ads-mcp/summit-app",
        name="summit-app",
        mime_type="text/html",
    )
    def get_summit_ui() -> ResourceResult:
        """Renders the interactive ADS 2026 dashboard."""
        return ResourceResult([
            ResourceContent(
                _build_summit_ui_html(),
                mime_type="text/html",
            )
        ])
  • Платформа Connected Apps Platform позволяет создавать многофункциональные пользовательские интерфейсы на MCP-сервере с помощью MCP Apps UI.

  • А если вам нужна полная гибкость для создания собственного интерфейса, отражающего бренд, как на Саммите для разработчиков Android, вы можете использовать ресурс MCP UI.

  • а Gemini – в защищенном изолированном окне iframe.

Процесс тестирования и проверки

  • Затем я расскажу, как протестировать и развернуть подключенное приложение прямо с локального компьютера.

  • Да.

  • Давайте посмотрим, как можно разрабатывать и тестировать локально.

  • Во время разработки вы можете легко запустить сервер локально, используя первую команду.

    ./venv/bin/python server.py
    npx @modelcontextprotocol/inspector
  • Затем вы можете использовать MCP Inspector для отладки сервера, просмотра доступных инструментов и взаимодействия с пользовательским интерфейсом.

  • Это пример того, как выглядит MCP Inspector для Саммита для разработчиков Android.

  • Вы можете увидеть инструменты и интерфейс, а также протестировать их локально.

  • Затем вам нужно будет развернуть MCP-сервер на удаленной конечной точке, чтобы получить доступ и проверить его в режиме разработчика Gemini.

  • Вы можете разместить конечную точку MCP в любой инфраструктуре или у любого поставщика облачных сервисов.

  • Но если вы предпочитаете Google Cloud, то можете использовать его с Google Cloud CLI.

  • Просто используйте эту простую команду для развертывания, и ваше приложение будет доступно удаленно.

    gcloud run deploy ads-mcp-server
  • Следующий шаг – проверить общедоступную конечную точку в режиме разработчика Gemini.

  • Давайте вернемся к демонстрации, и я покажу, как использовать режим разработчика на практике.

  • Режим разработчика легко найти. Просто перейдите в настройки и нажмите "Режим разработчика".

  • Затем выберите подключенное приложение, которое хотите протестировать.

  • Например, вы можете создать новый сервер, просто указав здесь его URL.

  • Я уже создал один для тестирования, он называется ADS MCP и содержит мою тестовую конечную точку.

  • И я просто хочу протестировать, как это работает с Gemini от начала до конца.

  • Давайте что-нибудь спросим.

  • "ADS MCP, расскажи мне больше о мероприятии".

  • Сейчас Gemini вызывает наш MCP-сервер. В режиме разработчика вы можете увидеть, какой инструмент вызывается.

  • Например, для запроса "Расскажи мне больше о мероприятии" была вызвана функция get_summit_info.

  • и успешный ответ.

  • и задержку.

  • Вы также можете посмотреть все сведения о запросах и ответах.

  • Например, в нашем ответе много информации.

  • Вы также можете немного увеличить масштаб и посмотреть, какая информация вам нужна, и убедиться, что все точно.

  • Вы также можете скопировать его, что очень удобно, если вы хотите поделиться им со своим коллегой.

  • Вы также можете экспортировать весь журнал событий и поделиться им.

  • Мне также нравится, что вы можете изучить другие доступные инструменты, поэтому здесь, в режиме разработчика, вы можете увидеть информацию о саммите, список сессий и другие инструменты.

  • Вы также можете изменить среду, чтобы смоделировать различные пользовательские контексты.

  • Например, вы можете изменить время суток, язык и другие настройки, а также настроить аутентификацию.

  • Это был режим разработчика.

  • И да, вы можете начать создавать свой MCP-сервер уже сегодня и протестировать его в режиме разработчика.

  • Она доступна всем пользователям.

  • Вернемся к слайдам.

  • Окей.

  • Итак, вы протестировали теги в режиме отладки, и все работает правильно. Что дальше?

  • Чтобы получить доступ к нашей платформе, вам нужно зарегистрироваться. Сначала заполните эту форму.

  • Она также доступна в нашей документации и в Google Connected Console.

Подготовка к производству и ресурсы

  • Если заявка будет одобрена, вы получите доступ к Google Connected Console, где сможете подготовить приложение к выпуску рабочей версии.

  • В консоли подготовка приложения занимает всего несколько шагов.

  • Сначала создайте новое подключенное приложение и укажите его название.

  • Затем вам нужно выбрать возможности и категорию.

  • Например, в этом примере мы выбрали продуктивность и просто нажали «Создать».

  • Затем в разделе "О приложении" укажите общедоступные данные, такие как отображаемое название, значок, описание для пользователей, возможности и ограничения приложения, примеры запросов и т. д.

  • При настройке MCP-сервера вам нужно будет указать конечную точку.

  • Вам нужно подтвердить, что домен принадлежит вам, а также настроить учетные данные для инструментов синхронизации.

  • Помните, что Google Console делает снимок схемы MCP, поэтому при внесении изменений в схему вам нужно будет вернуться и повторно развернуть ее.

  • После этого вы сможете настроить доступность приложения.

  • Вы можете выбрать регионы, языки, платформы и другие параметры.

  • Затем нажмите "Опубликовать изменения" и отправьте их на проверку Gemini.

  • Затем вы также можете добавить тестовые аккаунты в разделе "Управление тестировщиками".

  • и сразу же протестировать ее в реальном времени с помощью тестовых аккаунтов на веб-сайте, мобильном устройстве или любых платформах, которые вы выбрали ранее, например в Gemini или Поиске, а затем отправить ее на окончательную проверку.

  • Когда приложение будет готово, вы сможете выпустить рабочую версию для пользователей по всему миру или в определенных регионах. Для этого достаточно нажать кнопку.

  • Вот и всё!

  • Мы с нетерпением ждем, когда вы начнете использовать Connected Apps Platform, чтобы сделать функции своего приложения доступными через удаленный сервер MCP или Android MCP.

  • Мы будем рады помочь вам создать эти потрясающие интеграции.

  • Просто следуйте инструкциям в этой документации и используйте примеры, доступные по этому штрихкоду.

  • Спасибо за внимание.

  • Желаем успехов!

Код

Фрагменты кода

Фрагмент кода на Python в видео "Разработка MCP-сервера и пользовательский интерфейс"
from mcp.server.fastmcp import FastMCP

mcp = FastMCP(
    name="ADS-MCP",
    instructions=(
        "A Model Context Protocol server providing event "
        "overview, schedules, sessions, speakers, and "
        "sandbox demos for the Android Developer Summit "
    ),
)
Фрагмент кода на Python в видео "MCP server development and custom UI"
@mcp.tool(
    title="List Sessions",

    annotations=ToolAnnotations(
        readOnlyHint=True,
        destructiveHint=False,
    ),

    meta={ … },
)
def list_sessions( … )
…
Фрагмент кода на Python в видео "Разработка MCP-сервера и пользовательский интерфейс"
def list_sessions(
    track: Optional[str] = None,
    location: Optional[str] = None,
) -> List[Dict[str, Any]]:
    """Lists all sessions, optionally filtered by track
    (e.g. 'Tools and performance', 'Apps Foundation',
    'AI experiences', 'Android XR') or location
    (e.g. 'MTV', 'Mountain View', 'London', 'LON').
    """
    …
Фрагмент кода на Python в видео "Разработка MCP-сервера и пользовательский интерфейс"
@mcp.tool(
    …
    meta={
        "ui": {
            "resourceUri": "ui://ads-mcp/summit-app",
        },
        …
    },
)
def list_sessions(…)
…
Фрагмент кода на Python в видео "MCP server development and custom UI" (Разработка сервера MCP и пользовательский интерфейс)
@mcp.resource(
    "ui://ads-mcp/summit-app",
    name="summit-app",
    mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
    """Renders the interactive ADS 2026 dashboard."""
    return ResourceResult([
        ResourceContent(
            _build_summit_ui_html(),
            mime_type="text/html",
        )
    ])
Фрагмент кода Shell на 17:29 в разделе "Процесс тестирования и проверки"
./venv/bin/python server.py
npx @modelcontextprotocol/inspector
Фрагмент кода Shell на 18:16 в разделе "Процесс тестирования и проверки"
gcloud run deploy ads-mcp-server