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 или любой другой компании. Но что, если бы каждый инструмент или каждая компания могла просто отправить свой собственный пользовательский интерфейс в чат? Таким образом, вместо того, чтобы мы смотрели на эту вещь, мы можем просто представить, что для релевантных частей у нас может быть релевантный пользовательский интерфейс, релевантный пользовательский интерфейс для Shopify, от Hugging Face, от Monday, и это может быть не только презентация, это может быть интерактивным. Итак, мы хотим иметь возможность реагировать на клик пользователя по этому виджету Hugging Face. Так что нам больше не нужно это представлять. Итак, в мае прошлого года я выпустил MCPUI. Концепция была довольно простой. Вокруг нее было много всего, но концепция была довольно простой: как нам взять пользовательский интерфейс и найти способ передать его через MCP. Нам нужен какой-то общий способ сделать это, чтобы мы могли иметь MCP поверх, извините, иметь пользовательский интерфейс поверх MCP и иметь связь между пользовательским интерфейсом и хостом. Очевидно, у него также были 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, что потрясающе. Это похоже на терминал, верно? Но у нас есть пользовательский интерфейс в терминале прямо сейчас, и у нас есть все эти сторонники, которые говорят о MCP apps. Есть даже компании, которые построены вокруг MCP apps, чтобы помочь другим бизнесам создавать эти приложения. У нас есть официальный репозиторий MCP apps с Anthropic и OpenAI. Есть удивительное взаимодействие с сообществом. Мы рекомендуем вам ознакомиться с ним. У нас есть рабочая группа, публичные встречи рабочей группы, и мы встречаемся три раза в неделю, раз в 3 недели, просто чтобы продвигать стандарт вперед, потому что, как мы видим, это будет глобальный стандарт для пользовательского интерфейса в приложениях чата. И мы немного поговорим о концепциях, лежащих в основе MCPUI. Да, давайте поговорим о основной концепции. Итак, первая и очевидная — это то, как мы вообще передаем пользовательский интерфейс через MCP? В старом мире, несколько месяцев назад, когда мы хотели сделать что-то, скажем, мы хотели создать лучший плейлист, мы бы ввели что-то в чат, и это отправило бы вызов инструмента на наш сервер MCP. Пока все хорошо. То, что мы получили бы в ответ, был бы текст, а как вы знаете, текст субоптимален. Но если мы используем MCP apps, мы можем вместо этого вернуть ресурс. Итак, мы можем вернуть этот фактический HTML обратно хосту. Хост поддерживает MCP apps, поэтому вы можете взять этот HTML и преобразовать его в интерактивное приложение. И когда мы говорим интерактивное, мы имеем в виду интерактивное. Так что это не просто презентационное. MCP apps также стандартизируют способ, которым этот пользовательский интерфейс может общаться с пользователем и его бэкэндом, потому что просто представьте, если пользователь хочет добавить эту песню в избранное, то субоптимальным, что произошло бы, это то, что для этого пользовательского интерфейса пришлось бы говорить с бэкэндом Spotify и добавлять эту песню в избранное, а затем позже, когда пользователь попросит Claude напомнить, какую песню я добавил в избранное, Claude не знал бы, потому что пользовательский интерфейс говорил напрямую с бэкэндом. Но MCP app стандартизирует это прохождение сообщений, чтобы каждый фрагмент пользовательского интерфейса отправлял сообщения обратно хосту. Хост получает это сообщение, в данном случае как вызов инструмента, и хост решает, что делать. В данном случае он решает фактически вызвать серверный инструмент, но контроль находится в руках хоста, и все остается в контексте. Хорошо, лучше один раз увидеть. Давайте посмотрим быстрый пример того, как это выглядит. Итак, это Claude, настоящий Claude. И давайте скажем, что я хочу сделать что-то вроде анализа моей воронки. Я ввожу это в старом мире, это отправилось бы, скажем, в PostHog, и я получил бы этот текстовый ответ, который точен, но на самом деле не помогает мне понять, что происходит. Мне нужно прочитать все это сейчас и попытаться понять, в чем дело. Но с MCP apps вместо того, чтобы делать это, я могу просто сказать "покажи мне". И теперь, хорошо, кликер еще не на должном уровне, но теперь у нас будет эта приятная визуализация пользовательского интерфейса, фактически созданная PostHog. Итак, они контролируют идентичность, опыт. Это фактически их компонент, который вы увидели бы на веб-сайте. И теперь у меня есть действительно классный способ просто увидеть воронку с первого взгляда. Это еще не все. Я имею в виду, что MCP app — это не просто пользовательский интерфейс, сгенерированный сервером. Есть также действительно классные инновации от Anthropic и других компаний по созданию генеративного пользовательского интерфейса поверх MCP apps или даже первого партийного пользовательского интерфейса в целом. Например, эта функция Claude говорит: скажем, я не знаю, что такое воронка, что вполне разумно. Я могу спросить, что такое воронка, и вместо того, чтобы снова получать этот длинный текстовый ответ, произошло бы то, что Claude смог бы сгенерировать этот пользовательский интерфейс для меня, объяснить именно то, что мне нужно, или создать какой-то пользовательский интерфейс, который мне нужен для выполнения какого-либо действия, и представить его мне в очень усваиваемой форме. Это, очевидно, применимо ко многим другим вещам, и вы увидите это и в других хостах. Итак, давайте посмотрим на другую классную вещь: это не просто презентационное. Как мы сказали, это интерактивное, так что я могу просто нажать на него, и это даст мне последующую информацию по конкретному шагу воронки, по которому у меня есть вопросы. Так что вы можете представить, как это идет в разных направлениях, когда вы хотите провести интерактивное исследование. Итак, как это работает в целом? Итак, давайте пройдемся по этапам. Мы обратились к хосту и что-то запросили. Мы запросили данные воронки. Произошло то, что он отправил вызов инструмента на наш сервер MCP. И снова, вместо того, чтобы просто вернуть текст, этот инструмент фактически указывал на ресурс. Этот ресурс был нашим пользовательским интерфейсом. Так что, если вы посмотрите на код, то он очень простой, как вы просто регистрируете ресурс, и у вас он есть. Так что верните этот ресурс обратно хосту. Хост, поскольку он также поддерживает MCP apps, может взять его, преобразовать, поместить его, если вы посмотрите на код, если вы хотите создать хост, это просто компонент React, который принимает этот ресурс, а также этот обратный вызов, который является способом обработки сообщений между пользовательским интерфейсом и хостом. Итак, вы берете это и отображаете в песочнице, чтобы это было безопасно. Как мы сказали, это не презентационное, поэтому мы также нажимаем на него. И как только вы нажмете, произойдет следующее: из пользовательского интерфейса, из этого представления, все обратно к модели отправляется множество событий. Итак, он может фактически выполнять другие вызовы инструментов или даже последующие сообщения от вашего имени или получать дополнительные ресурсы, действительно завершая этот сквозной двунаправленный поток. Итак, когда мы смотрим на это, когда мы смотрим на этот поток, когда мы смотрим на эту архитектуру, это не просто техническое изменение. Это не просто меняющаяся технология. Это также то, как мы воспринимаем веб. Потому что это открывает новый веб, веб, где нам не нужны веб-сайты. Нам не нужны все эти вкладки, чтобы организовать юбилей. Нам не нужно знакомиться с множеством различных пользовательских интерфейсов. Нам не нужно заставлять себя передавать наши намерения на панели управления компаний, где 90% этого пользовательского интерфейса не имеют отношения к агенту. Если у меня есть личный помощник, мне большая часть этого не нужна. Я могу просто взять это и разложить на атомы, и позволить моему агенту построить их для меня, верно? Потому что у меня есть мой помощник, которому я передаю свой намерение. Так, например, мой агент, мой проактивный помощник может сказать: "Да, я вижу, что у вас приближается важный юбилей". И вместо того, чтобы Google просто отправлял данные, Google может фактически отправить фрагмент календаря Google. И теперь это беспроигрышный вариант, потому что для Google это потрясающе. Он сохраняет свою идентичность. Для меня это хорошо, потому что я знаю этот интерфейс. Я узнаю, что это Google. Но это хорошо и для хоста, потому что хосту не нужно это отображать. У нас есть эксперты в предметной области. У нас есть компании, которые десятилетиями совершенствовали пользовательские пути, и мы не можем ожидать, что Claude или ChatGPT или любой хост автоматически сгенерируют все эти пользовательские интерфейсы. И если я продолжу и запрошу что-то для Amazon, то вместо того, чтобы Amazon просто отправлял мне данные о продукте, и это сводит себя к тому, чтобы быть просто базой данных, он может просто отправить этот фрагмент Amazon. И я смотрю на него и говорю: "О, это Amazon. Хорошо, я знаю". И тогда я могу завершить все планирование моего юбилея, все планирование всего в одном чате помощника, верно? И вы можете видеть, что он вытащил только релевантные части, потому что он вытащил место проведения из Booking, но он знает меня. Он знает, что я предпочитаю что-то, что близко к природе, а не в городе. Так что он также знал, как вытащить карту из Booking. Это потому, что помощник знал меня. Booking знает меня не так хорошо, но Booking знает, как забронировать место. Так что это настоящая синергия между ними. И мы должны думать об этом новом мышлении взаимодействия. Почему? Потому что мы должны помнить, что в этом потоке приложения, сервисы, инструменты больше не владеют моим путем на платформе, верно? Если я нажимаю что-то в Booking, это не идет на бэкэнд Booking. Это идет к хосту, как мы сказали. Итак, что мы сделали с MCP apps, так это то, что каждый клик, каждое взаимодействие фактически отправляет это своего рода сообщение обратно хосту. И, как мы сказали, это ломает модель для всех компаний. Так что это новая философия. Но сообщения могут быть помещены в спектр. Итак, этот спектр представляет, сколько контроля пользовательский интерфейс хочет для себя и сколько контроля он передает хосту. Например, уведомление — это самый высокий уровень контроля, который имеет пользовательский интерфейс. Он просто уведомляет хост о том, что что-то произошло. Например, если я увеличиваю количество товаров в корзине, это не нужно передавать хосту. Это возвращается в Shopify. Но просто уведомляет хост о том, что что-то произошло. Вызов инструмента — это когда пользовательский интерфейс говорит хосту вызвать инструмент. А промпт — это как будто пользовательский интерфейс просто освобождает весь контроль и говорит хосту: "Просто выполни этот промпт и посмотри, что произойдет". Итак, MCP apps действительно стандартизирует этот новый программный поток, и это то, что мы должны помнить. Возможно, через 2 года у нас не будет браузеров в том виде, в котором мы их знаем. У нас не будет веб-сайтов в том виде, в котором мы их знаем. У нас будет личный помощник, который принимает только небольшие фрагменты пользовательского интерфейса, и это заменит наше веб-путешествие. 2026 год станет годом, когда мы стандартизируем MCP apps как глобальный стандарт для пользовательского интерфейса. И, да, но спецификация все еще развивается. Я имею в виду, происходит много всего. Только за последние, я думаю, 2 месяца мы выпустили все это или почти все это на основе отзывов сообщества, на основе работы сообщества, проделанной рабочей группой, к которой вы можете присоединиться. Так что вам рекомендуется это сделать. Есть официальный SDK, XApps. Вы можете просто использовать его для создания своих приложений. Это очень просто. Есть встроенные навыки. Так что вы просто позволяете вашему кодирующему агенту делать это за вас. Вам на самом деле не нужно ничего кодировать. Не дай бог. Итак, у вас есть это, и тогда важно помнить, что причина использования этого SDK заключается в том, что он всегда соответствует спецификации. Мы всегда обновляем оба. Так что не стесняйтесь использовать его. Вы можете видеть, что люди открывают проблемы и тому подобное. Так что, пожалуйста, не стесняйтесь это делать. Итак, что дальше для MCP apps? Очевидно, есть много всего в разработке. Но просто чтобы дать вам представление. Итак, у нас есть повторно используемые представления. Идея здесь в том, что сегодня, для простоты, всякий раз, когда вы отображаете приложение, мы фактически отображаем новое. Итак, скажем, вы работаете с одним и тем же приложением несколько раз. Если вы продолжаете его повторно отображать, и у вас есть некоторые тяжелые приложения. Например, у Autodesk была такая проблема. Это занимает очень много времени, и ваш опыт будет плохим. Итак, мы работаем над способами решения этой проблемы. Первое — почему бы нам просто не сослаться на то же представление и не передать в него данные? Но второе — это фактически взять это и перевернуть сценарий. Итак, еще одна вещь, над которой мы работали, — это взаимодействие не для того, чтобы пользователь взаимодействовал с приложением, а затем приложение отправляло его модели, что мы только что видели. Но что, если мы хотим, чтобы модель могла взаимодействовать с представлением? Мы хотим, чтобы Claude мог нажимать на кнопки или заполнять формы или делать что-либо внутри пользовательского интерфейса. Итак, сегодня у нас есть решения, такие как WebMCP и тому подобное. Мы работаем над стандартизированным способом. Итак, когда пользователь взаимодействует с моделью, модель, приложение может фактически предоставлять инструменты для взаимодействия модели с ним, тем самым замыкая этот цикл. И вы можете проверить PR. Это все еще открытый PR, но это то, над чем мы работаем в комитете. И самое главное, что MCP apps поддерживает все способы генерации пользовательского интерфейса. Потому что это вопрос, который нам всегда задают. А как насчет генеративного пользовательского интерфейса? Итак, если мы поместим это на спектр, то у нас есть предопределенный пользовательский интерфейс. Это как классическое MCP app. Это как Airbnb, создающий свой собственный пользовательский интерфейс, отправляющий его в Claude или ChatGPT. Это предопределено. Это черный ящик. Это хорошо для 8% случаев. Но у нас есть вещи, которые немного более структурированы, как декларативный пользовательский интерфейс. Например, если вы знаете JSON render или тому подобное, где приложение может просто объявить структуру пользовательского интерфейса, но компоненты отображаются хостом. Итак, хост и приложение совместно используют функциональность и видимость пользовательского интерфейса. Это хорошо для хостов, которые хотят контролировать внешний вид приложений. Например, просто представьте, что Claude, вероятно, не хочет иметь пользовательский интерфейс Booking, затем пользовательский интерфейс Airbnb, затем пользовательский интерфейс Expedia в одном и том же потоке чата, верно? Так что это довольно хороший компромисс. И с другой стороны, у вас есть полностью генеративный пользовательский интерфейс, который Claude Anthropic выпустил несколько недель назад, где модель просто генерирует пользовательский интерфейс из воздуха. Теперь приятная особенность в том, что MCP apps действительно не зависит от того, как вы генерируете пользовательский интерфейс. MCP apps не предполагает, что Airbnb создал пользовательский интерфейс. Любая часть этого процесса может создать пользовательский интерфейс, а функция, выпущенная Claude, которая является генеративным пользовательским интерфейсом на лету, фактически использует MCP apps под капотом, верно? Так что это генеративный пользовательский интерфейс, который передается в MCP app, а затем MCP apps замыкает этот цикл. Так что это хорошо для стороннего пользовательского интерфейса, который является черным ящиком, но также и для первого партийного пользовательского интерфейса. Так что это то, над чем мы работаем, стандартизируя. Мы прилагаем много усилий для обеспечения совместимости с другими протоколами пользовательского интерфейса, такими как A2UI, который является протоколом генеративного пользовательского интерфейса от Google, WebMCP, как мы сказали, и мы просто хотим создать единый стандарт для пользовательского интерфейса в приложениях чата. Да, и это своего рода классное резюме о 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 очень просто. Просто если вы посетите сайт, мы просто пройдемся по нему, но это просто навык. Вы просто отправляете его в облачный код, и вы генерируете MCP app из воздуха. Если вы хотите участвовать в самой спецификации, в том, как будут работать MCP apps, и если вы хотите помочь построить будущее пользовательского интерфейса в агентах, то, очевидно, посетите официальный репозиторий MCP apps, это X apps. Откройте проблему, откройте PR, участвуйте в обсуждении. У нас также есть официальный Discord для комитета MCP apps, где мы проводим опросы и взаимодействуем с сообществом и другими хостами, чтобы принимать решения по вопросам, касающимся MCP apps. И есть Discord сообщества, который, я думаю, самое крутое место, где можно быть, потому что там есть все пользователи MCP apps, будь то люди, которые создают серверы, компании, которые создают хосты, которые просто общаются друг с другом, делятся советами, решают проблемы, запрашивают функции. Это место, где стоит быть, если вы интересуетесь MCP apps. Мы говорили некоторые пугающие вещи по пути, такие как веб умирает, и все веб-сайты бессмысленны в данный момент, но я надеюсь, что вы не смотрите на это как на угрозу, а скорее как на возможность, как, по сути, раз в 20 лет возможность переосмыслить свои приложения и подумать, какой основной пользовательский опыт мы хотим получить, и представить его не как монолитное единое приложение, куда люди идут, а скорее как часть нового веба приложений, этих фрагментов пользовательского интерфейса, которые позволяют вам общаться друг с другом, используя умную модель между ними. Это довольно безумно. И с MCP apps даже на этом раннем этапе экосистемы, на этом раннем этапе работы агентичных приложений, у нас уже есть стандартизация, и все они работают одинаково. Вы можете написать свое приложение один раз, и оно будет работать везде. Так как же выглядит будущее? Мы еще не на уровне Jarvis, но с MCP в целом и MCP apps в частности вы можете привнести опыт, который был невозможен всего несколько месяцев назад, на любой хост в мире, включая ваш собственный. Так что спасибо. Большое спасибо. >> [аплодисменты] [музыка]