Transcription
[музыка] >> Хорошо, всем привет. Мы подготовили этот доклад, ну, не совсем вчера, мы подготовили этот доклад сегодня утром, и он, возможно, уже устарел. Я Эда Соломон. Я создатель MCPUI, соавтор MCP apps и мейнтейнер. Также создатель Agent Craft, если вы были на предыдущей сессии. Я Лиад. Я работаю с Эдой над MCPUI, совместно с Эдой создал спецификацию MCP app и также являюсь соучредителем Ergo Labs, компании, занимающейся человеческими агентическими интерфейсами. Так что MCP apps повсюду вокруг нас. Вы можете даже не осознавать этого, но интерактивные приложения, которые вы видите сегодня в ChatGPT, Claude и других, на самом деле основаны на MCP и спецификации MCP app. Но зачем нам нужны MCP apps и что такое MCP apps? Я имею в виду, вы слышали, как Дэвид сегодня утром немного говорил об этом. Мы раньше отправляли текстовые сообщения, использовали инструменты MCP, отправляя текст нашим чат-агентам. Но это не идеально, верно? Потому что чат, текст, это действительно плохо, и на самом деле это было одним из главных препятствий для компаний или инструментов, не отправляющих свои данные в ChatGPT, потому что они не хотели быть сведенными к этой штуке, этой стене текста, где у вас нет идентичности. Вы не знаете, поступила ли эта информация от Shopify, Booking, Expedia или любой другой компании. Но что, если каждый инструмент или каждая компания могла бы просто отправить свой собственный UI в чат? Так что вместо того, чтобы мы смотрели на эту штуку, мы можем просто представить, что для частей, которые имеют отношение, у нас может быть соответствующий UI, соответствующий UI для Shopify, от Hugging Face, от Monday, и это может быть не только презентация, это может быть интерактивным. Так что мы хотим иметь возможность реагировать на клик пользователя по этому виджету Hugging Face. Так что нам больше не нужно это представлять. Итак, в мае прошлого года я выпустил MCPUI. Концепция была довольно простой. Вокруг этого было много всего, но концепция была довольно простой: как нам взять UI и найти способ передать его через MCP. Нам нужен какой-то общий способ сделать это, чтобы мы могли иметь MCP поверх, извините, UI поверх MCP и иметь связь между UI и хостом. Очевидно, у нас также были SDK сообщества, и общая мотивация заключалась в том, что нам не нужно выбрасывать все, что мы знаем о UI и UX, просто чтобы войти в этот новый мир агентов. Мы можем просто адаптироваться и использовать это, сохраняя наш брендинг и идентичность, и при этом оставаться практичными. И всего несколько месяцев назад MCPUI, мы сотрудничали с Anthropic и OpenAI, чтобы действительно включить это в стандарт MCP как первое официальное расширение под названием MCP apps. И, как вы можете видеть здесь, это произвело своего рода большой фурор. У нас была поддержка от множества хостов. Теперь VS Code и Cursor, Claude и ChatGPT, а также Microsoft Copilot и множество других уже приняли его, и у вас есть эти действительно классные интерфейсы, встроенные прямо в ваших помощников. И если вернуться немного назад, у MCPUI были ранние последователи. Так что это некоторые из компаний, привет, Hugging Face, Шон, если ты здесь, которые приняли MCPUI. Так что даже год назад Shopify уже отправлял куски MCPUI из миллионов магазинов Shopify, отправляя куски MCPUI. Все пространства Hugging Face были виджетами MCPUI. А теперь, после стандартизации, у нас гораздо более широкое внедрение. Так что у нас есть VS Code, у нас есть Cursor, у нас есть Copilot, GitHub ChatGPT поддерживают MCP apps. Не только это, ChatGPT рекомендует MCP apps как способ создания приложений ChatGPT. Так что это действительно стандартизировано. Очевидно, привет Postman и Goose и Claude, первые, кто выпустил Claude apps, которые фактически поддерживали MCP apps. Но это не только поддержка со стороны крупных компаний или крупных хостов. У нас также огромное внедрение сообществом. У нас есть люди, которые создают плагины вокруг MCP apps, проводят семинары вокруг MCP apps, создают всяческую поддержку вокруг MCP apps. Spy только что объявил о поддержке MCP apps, что потрясающе. Это как терминал, верно? Но у нас есть UI в терминале прямо сейчас, и у нас есть все эти сторонники, которые говорят о MCP apps. Есть даже компании, которые построены вокруг MCP apps, чтобы помочь другим бизнесам создавать эти приложения. У нас есть официальный репозиторий MCP apps с Anthropic и OpenAI. Есть потрясающее взаимодействие с сообществом. Мы рекомендуем вам ознакомиться с ним. У нас есть рабочая группа, публичные встречи рабочей группы, и мы встречаемся раз в три недели, раз в 3 недели, просто чтобы продвигать стандарт вперед, потому что, как мы видим, это будет глобальный стандарт для UI в приложениях чата. И мы немного поговорим о концепциях, лежащих в основе MCPUI. Да, так что давайте поговорим о основной концепции. Итак, первая и очевидная — это то, как мы вообще передаем UI через MCP? В старом мире, несколько месяцев назад, когда мы хотели сделать что-то, скажем, мы хотели создать лучший плейлист всех времен, мы бы набрали что-то в чате, и это отправило бы вызов инструмента на наш сервер MCP. Пока все хорошо. То, что мы получили бы в ответ, был бы текст, а как вы знаете, текст субоптимален. Но если мы используем MCP apps, мы можем вместо этого вернуть ресурс. Так что мы можем вернуть этот фактический HTML обратно хосту. Хост поддерживает MCP apps, так что вы можете взять этот HTML и преобразовать его в интерактивное приложение. И когда мы говорим интерактивное, мы имеем в виду интерактивное. Так что это не просто презентационное. MCP apps также стандартизируют способ, которым этот UI может общаться с пользователем и его бэкэндом, потому что просто представьте, если пользователь хочет добавить эту песню в избранное, то субоптимальным, что произошло бы, это то, что для этого UI пришлось бы говорить с бэкэндом Spotify и добавлять эту песню в избранное, а затем позже, когда пользователь попросит Claude напомнить, какую песню я добавил в избранное, Claude не знал бы, потому что UI говорил напрямую с бэкэндом. Но MCP app стандартизирует это прохождение сообщений, так что каждый фрагмент UI отправляет сообщения обратно хосту. Хост получает это сообщение, в данном случае, как вызов инструмента, и хост решает, что делать. В данном случае он решает фактически вызвать серверный инструмент, но контроль находится в руках хоста, и все остается в контексте. Хорошо, увидеть — значит поверить. Давайте посмотрим быстрый пример того, как это выглядит. Итак, это Claude, настоящий Claude. И давайте скажем, что я хочу сделать что-то вроде анализа моей воронки. Я набираю это. В старом мире это отправилось бы, скажем, в PostHog, и я получил бы этот текстовый ответ, который точен, но он не очень помогает мне понять, что происходит. Мне нужно прочитать все это сейчас и попытаться понять, в чем дело. Но с MCP apps вместо того, чтобы делать это, я могу просто сказать «покажи мне». И теперь, хорошо, кликер еще не на должном уровне, но теперь у нас будет эта приятная визуализация UI, фактически созданная PostHog. Так что они контролируют идентичность, опыт. Это фактически их компонент, который вы увидели бы на веб-сайте. И теперь у меня есть действительно классный способ просто увидеть воронку с первого взгляда. Это еще не все. Я имею в виду, MCP app — это не просто UI, сгенерированный сервером. Есть также действительно классные инновации от Anthropic и других компаний по созданию генеративного UI поверх MCP apps или даже первого партийного UI в целом. Так, например, эта функция Claude говорит: скажем, я не знаю, что такое воронка, что вполне разумно. Я могу спросить, что такое воронка, и вместо того, чтобы снова получать этот длинный текстовый ответ, произошло бы то, что Claude смог бы сгенерировать этот UI для меня, объяснить именно то, что мне нужно, или создать какой-то UI, который мне нужен для выполнения какого-то действия, и представить его мне в очень усваиваемой форме. Это, очевидно, применимо ко многим другим вещам, и вы увидите это и в других хостах. Так что давайте посмотрим на еще одну классную вещь здесь: это не просто презентационное. Как мы сказали, это интерактивное, так что я могу просто нажать на него, и это даст мне последующую информацию по конкретному шагу воронки, по которому у меня есть вопросы. Так что вы можете представить, как это идет в разных направлениях, когда вы хотите проводить интерактивное исследование. Итак, как это работает в целом? Итак, давайте пройдемся по этапам. Мы обратились к хосту и что-то запросили. Мы запросили данные воронки. Произошло то, что он отправил вызов инструмента на наш сервер MCP. И снова, вместо того, чтобы просто вернуть текст, этот инструмент фактически указывал на ресурс. Этот ресурс был нашим UI. Так что, если вы посмотрите на код, то это очень просто, как вы просто регистрируете ресурс, и он у вас есть. Так что верните этот ресурс обратно хосту. Хост, поскольку он также поддерживает MCP apps, может взять это, преобразовать это, поместить это, если вы посмотрите на код, если вы хотите создать хост, это просто компонент React, который принимает этот ресурс, а также этот обратный вызов, который является способом обработки сообщений между UI и хостом. Так что вы берете это и отображаете это в песочнице, чтобы это было безопасно. Как мы сказали, это не презентационное, так что мы также нажимаем на него. И как только вы нажмете, произойдет то, что множество событий возвращается из UI, из этого представления, обратно к модели. Так что он может фактически выполнять другие вызовы инструментов или даже последующие сообщения от вашего имени или получать дополнительные ресурсы, фактически завершая этот сквозной двунаправленный поток. Итак, когда мы смотрим на это, когда мы смотрим на этот поток, когда мы смотрим на эту архитектуру, это не просто техническое изменение. Это не просто меняющаяся технология. Это также то, как мы воспринимаем веб. Потому что это открывает новый веб, веб, где нам не нужны веб-сайты. Нам не нужны все эти вкладки, чтобы организовать годовщину. Нам не нужно знакомиться с множеством разных UI. Нам не нужно заставлять себя передавать наши намерения на панели управления компаний, где 90% этого UI не имеет отношения к агенту. Если у меня есть личный помощник, мне большая часть этого не нужна. Я могу просто взять это и разложить на атомы, и позволить моему агенту собрать их для меня, верно? Потому что у меня есть мой помощник, которому я передаю свои намерения. Так, например, мой агент, мой проактивный помощник может сказать: «Да, я вижу, что у тебя приближается важная годовщина». И вместо того, чтобы Google просто отправлял данные, Google может фактически отправить фрагмент из Google Календаря. И теперь это беспроигрышный вариант, потому что для Google это потрясающе. Он сохраняет свою идентичность. Для меня это хорошо, потому что я знаю этот интерфейс. Я узнаю, что это Google. Но это хорошо и для хоста, потому что хосту не нужно это отображать. У нас есть эксперты в предметной области. У нас есть компании, которые десятилетиями совершенствовали пользовательские пути, и мы не можем ожидать, что Claude или ChatGPT или любой хост автоматически сгенерируют все эти UI. И если я продолжу и запрошу что-то для Amazon, то вместо того, чтобы Amazon просто отправлял мне данные о продукте, и это сводит себя к просто базе данных, он может просто отправить этот фрагмент Amazon. И я смотрю на него и говорю: «О, это Amazon. Хорошо, я знаю». И тогда я могу завершить все планирование моей годовщины, все планирование всего в одном чате помощника, верно? И вы можете видеть, что он извлек только соответствующие части, потому что он извлек место проведения из Booking, но он знает меня. Он знает, что я предпочитаю что-то, что близко к природе, а не в городе. Так что он также знал, как извлечь карту из Booking. Это потому, что помощник знал меня. Booking не знает меня так хорошо, но Booking знает, как забронировать место. Так что это настоящая синергия между ними. И мы должны думать об этом новом мышлении взаимодействия. Почему? Потому что мы должны помнить, что в этом потоке приложения, сервисы, инструменты больше не владеют моим путем на платформе, верно? Если я нажимаю что-то в Booking, это не идет на бэкэнд Booking. Это идет к хосту, как мы сказали. Так что то, что мы сделали с MCP apps, это то, что каждый клик, каждое взаимодействие фактически отправляет это сообщение обратно хосту. И, как мы сказали, это ломает модель для всех компаний. Так что это новая философия. Но сообщения могут быть расположены на спектре. Так что этот спектр представляет, сколько контроля UI хочет для себя и сколько контроля он дает хосту. Так, например, уведомление — это высший уровень контроля, который имеет UI. Он просто уведомляет хост о том, что что-то произошло. Например, если я увеличиваю количество товаров в корзине, это не нужно отправлять хосту. Это возвращается в Shopify. Но просто уведомляет хост о том, что что-то произошло. Вызов инструмента — это когда UI говорит хосту: «Вызови инструмент». А промпт — это как будто UI просто отпускает весь контроль и говорит хосту: «Просто выполни этот промпт и посмотри, что произойдет». Так что MCP apps действительно стандартизирует этот новый программный поток, и это то, что мы должны помнить. Возможно, через 2 года у нас не будет браузеров в том виде, в каком мы их знаем. У нас не будет веб-сайтов в том виде, в каком мы их знаем. У нас будет личный помощник, который принимает только небольшие фрагменты UI, и это заменит наше веб-путешествие. 2026 год станет годом, когда мы стандартизируем MCP apps как глобальный стандарт для UI. И, да, но спецификация все еще развивается. Я имею в виду, происходит много всего. Только за последние, я думаю, 2 месяца мы выпустили все это или почти все это на основе отзывов сообщества, на основе работы сообщества, проделанной рабочей группой, к которой вы можете присоединиться. Так что мы призываем вас сделать это. Есть официальный SDK, XApps. Вы можете просто использовать его для создания своих приложений. Это очень просто. Есть встроенные навыки. Так что вы просто позволяете вашему кодирующему агенту делать это за вас. Вам фактически не нужно ничего кодировать. Не дай бог. Так что у вас есть это, и тогда важно помнить, что причина использования этого SDK заключается в том, что он всегда соответствует спецификации. Мы всегда обновляем оба. Так что не стесняйтесь использовать его. Вы можете увидеть, что люди открывают проблемы и тому подобное. Так что, пожалуйста, не стесняйтесь это делать. Итак, что дальше для MCP apps? Очевидно, в разработке много всего. Но просто чтобы дать вам представление. Итак, у нас есть повторно используемые представления. Идея здесь в том, что сегодня, для простоты, всякий раз, когда вы отображаете приложение, мы фактически отображаем новое. Так что, скажем, вы работаете с одним и тем же приложением несколько раз. Если вы продолжаете его перерисовывать, и у вас есть какие-то тяжелые приложения. Так, например, у Autodesk была эта проблема. Это просто занимает очень много времени, и ваш опыт будет плохим. Так что мы работаем над способами решения этой проблемы. Первое — это просто, почему бы нам не сослаться на то же представление и не передать в него данные? Но второе — это фактически взять это и перевернуть сценарий. Итак, еще одна вещь, над которой мы работали, — это взаимодействия, не для того, чтобы пользователь взаимодействовал с приложением, а затем приложение отправляло его модели, что мы только что видели. Но что, если мы хотим, чтобы модель могла взаимодействовать с представлением? Мы хотим, чтобы Claude мог нажимать на кнопки или заполнять формы или делать что-либо внутри UI. Так что сегодня у нас есть решения, такие как WebMCP и тому подобное. Мы работаем над стандартизированным способом. Так что, когда пользователь взаимодействует с моделью, модель, приложение может фактически предоставлять инструменты для взаимодействия модели с ним, тем самым замыкая этот цикл. И вы можете проверить PR. Это все еще открытый PR, но это то, над чем мы работаем в комитете. И самое главное, что MCP apps поддерживает все способы генерации UI. Потому что это вопрос, который нам всегда задают. А как насчет генеративного UI? Так что, если мы поместим это на спектр, то у нас есть предопределенный UI. Это как классическое MCP app. Это как Airbnb, создающее свой собственный UI, отправляя его в Claude или в ChatGPT. Это предопределено. Это черный ящик. Это хорошо для 8% случаев. Но у нас есть вещи, которые немного более структурированы, как декларативный UI. Например, если вы знаете JSON render или тому подобное, где приложение может просто объявить структуру UI, но компоненты отображаются хостом. Так что хост и приложение совместно используют функциональность и видимость UI. Это хорошо для хостов, которые хотят контролировать внешний вид приложений. Например, просто представьте, что Claude, вероятно, не хочет иметь UI Booking, затем UI Airbnb, затем UI Expedia в одном и том же потоке чата, верно? Так что это довольно хороший компромисс. А с другой стороны, у вас есть полностью генеративный UI, который Claude Anthropic выпустил несколько недель назад, где модель просто генерирует UI из воздуха. Теперь приятная особенность в том, что MCP apps действительно не зависит от того, как вы генерируете UI. MCP apps не предполагает, что Airbnb создал UI. Любая часть этого процесса может создавать UI, а функция, которую Claude выпустил, которая является генеративным UI на лету, фактически использует MCP apps под капотом, верно? Так что это генеративный UI, который передается в MCP app, а затем MCP apps замыкает этот цикл. Так что это хорошо для стороннего UI, который является черным ящиком, но также и для первого партийного UI. Так что это то, над чем мы работаем над стандартизацией. Мы делаем много работы для обеспечения совместимости с другими протоколами UI, такими как A2UI, который является протоколом генеративного UI от Google, WebMCP, как мы сказали, и мы просто хотим создать единый стандарт для UI в приложениях чата. Да, и это как бы краткое изложение MCP apps. Если вы создадите MCP app, оно будет работать везде. LibreChat — это клиент MCP app, ChatGPT — это клиент ChatGPT app, но одно и то же приложение работает, один и тот же кодовая база работает для каждого хоста. Круто. Так что, если подумать, это не просто какая-то технология, верно? Это не какой-то протокол. Это новый способ распространения приложений. >> [кашляет] >> Так что, если посмотреть всего несколько месяцев назад, Сэм Альтман сказал, я думаю, это было в октябре, что 800 миллионов человек используют ChatGPT еженедельно. Это 10% населения мира. Это безумие. Интернету потребовалось около 13 лет, чтобы достичь такого числа пользователей. А теперь это даже не 800 миллионов. Это миллиард. И это не только ChatGPT. Это также Claude и VS Code. У вас есть потенциальная аудитория, которая как минимум в 160 раз больше, чем количество пользователей, которое было у iPhone при запуске App Store. Так как начать? Есть два основных способа. Как сервер, если вы разрабатываете приложение. Так что, как я сказал, зайдите в репозиторий XApps. Есть QR-код, если вы хотите сделать это быстро. У вас есть навыки. Просто используйте это. Другой способ — в деталях. Другой способ — если вы хост, то есть если вы создаете приложение, которое фактически размещает приложения, вы можете просто взять SDK MCP UIs, который является рекомендуемым клиентским SDK. Он также полностью соответствует спецификации. Вы просто берете этот компонент React, и все готово. Он просто поддерживает приложения из коробки, а затем получает сотни приложений от Booking и других поставщиков из коробки. Так что просто, чтобы подчеркнуть, был слайд о навыках. Так что создать MCP app очень просто. Просто если вы посетите сайт, мы просто пройдемся по нему, но это просто навык. Вы просто отправляете его в cloud code, и вы генерируете MCP app из воздуха. Если вы хотите участвовать в самой спецификации, в том, как будут работать MCP apps, и если вы хотите помочь построить будущее UI в агентах, то, очевидно, посетите официальный репозиторий MCP apps, это X apps. Откройте проблему, откройте PR, участвуйте в обсуждении. У нас также есть официальный Discord для комитета MCP apps, где мы проводим опросы и взаимодействуем с сообществом и другими хостами, чтобы принимать решения по вопросам, связанным с MCP apps. И есть Discord сообщества, который, я думаю, самое крутое место, где можно быть, потому что там есть все пользователи MCP apps, будь то люди, которые создают серверы, компании, которые создают хосты, которые просто общаются друг с другом, делятся советами, решают проблемы, запрашивают функции. Это место, где стоит быть, если вы заинтересованы в MCP apps. Мы говорили некоторые пугающие вещи по пути, например, веб умирает, и все веб-сайты бессмысленны в данный момент, но я надеюсь, что вы не смотрите на это как на угрозу, а скорее как на возможность, как, по сути, возможность раз в 20 лет переосмыслить свои приложения и подумать, какой основной пользовательский опыт мы хотим получить, и представить его не как монолитное единое приложение, куда люди идут, а как часть нового веба приложений, этих фрагментов UI, которые позволяют вам общаться друг с другом, используя умную модель между ними. Это довольно безумно. И с MCP apps даже на этом раннем этапе экосистемы, на этом раннем этапе работы агентичных приложений, у нас уже есть стандартизация, и все они работают одинаково. Вы можете написать свое приложение один раз, и оно будет работать везде. Так как же выглядит будущее? Мы еще не на уровне Jarvis, но с MCP в целом и MCP apps в частности вы можете привнести опыт, который был невозможен всего несколько месяцев назад, на любой хост в мире, включая ваш собственный. Так что спасибо. Большое спасибо. >> [аплодисменты] [музыка]