Попробуйте описать расположение комнат в квартире словами по телефону: вы потратите десять минут, но собеседник представит что-то свое. До сих пор диалог с ChatGPT строился именно так: даже при идеальных расчетах пользователь видел лишь простыню текста или сухой JSON. На конференции DevDay OpenAI объявила о тектоническом сдвиге: компания представила Apps SDK, превращающий чат в платформу графических приложений поверх открытого протокола Model Context Protocol (MCP).
Интерфейс вместо текста: почему OpenAI выбрала открытый стандарт MCP
Главная новость для индустрии — выбор фундамента. Вместо создания закрытой системы плагинов OpenAI поддержала открытый протокол Model Context Protocol (MCP), разработанный инженерами Anthropic. Это редкий пример конвергенции конкурентов: теперь сервер инструментов одинаково успешно работает и в Claude Desktop, и в ChatGPT.
Apps SDK идет дальше передачи данных: модель возвращает изолированный веб-интерфейс на HTML, CSS и JavaScript, рендерящийся во встроенном фрейме инлайн или на весь экран. В числе первых партнеров возможности показали Coursera с интерактивным плеером, Canva с редактированием макетов и Zillow с картой недвижимости.
Для монетизации представлен протокол Checkout Protocol с авторизацией OAuth: оформить подписку или оплатить товар можно прямо в чате без перехода на внешние сайты.
Архитектура Apps SDK: как связать бэкенд-инструмент с динамическим UI
Для создания приложения разработчик разворачивает MCP-сервер, объявляет инструмент вызова и привязывает веб-ресурс с MIME-типом text/html;profile=mcp-app.
Пример сервиса поиска недвижимости на TypeScript:
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema } from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "property-showcase", version: "1.0.0" },
{ capabilities: { tools: {}, resources: {} } }
);
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "search_homes",
description: "Поиск квартир с картой",
inputSchema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}]
}));
server.setRequestHandler(CallToolRequestSchema, async (req) => {
const { city } = req.params.arguments as { city: string };
return {
content: [{ type: "text", text: `Найдено 8 объектов в ${city}. Открываю карту.` }],
_meta: { ui: { resourceUri: `ui://property-showcase/map?city=${encodeURIComponent(city)}`, displayMode: "inline" } }
};
});
server.setRequestHandler(ReadResourceRequestSchema, async (req) => ({
contents: [{
uri: req.params.uri,
mimeType: "text/html;profile=mcp-app",
text: `<div class="card" onclick="chooseHome('apt-12')"><h3>Квартира у парка</h3><p>Нажмите для выбора</p></div>`
}]
}));
await server.connect(new StdioServerTransport());
Сервер передает адрес ресурса в _meta.ui, и чат отрисовывает интерактивный компонент.
Двусторонний диалог: как виджет обменивается контекстом с языковой моделью
В отличие от статической картинки, приложение внутри ChatGPT связано с нейросетью двусторонним мостом через клиентский скрипт window.openai:
window.addEventListener("DOMContentLoaded", () => {
if (window.openai) {
window.openai.onContextUpdate((context) => {
console.log("Новые параметры фильтрации от модели:", context);
});
}
});
function chooseHome(propertyId) {
if (window.openai) {
window.openai.sendEvent({
type: "item_selected",
payload: { id: propertyId, timestamp: Date.now() }
});
}
}
Когда пользователь кликает по объекту на карте, модель мгновенно получает событие и готова сразу ответить на уточняющий вопрос об этой квартире.
Набор инструментов AgentKit и скрытые риски корпоративных коннекторов
Вместе с Apps SDK дебютировала экосистема AgentKit: визуальный конструктор цепочек Agent Builder, библиотека встраиваемых виджетов ChatKit, реестр корпоративных подключений Connectors (к Google Drive, Slack, SQL) и платформа тестирования Evals.
Подключение баз данных несет угрозу «смертельной триады»: если агент читает закрытые корпоративные файлы, обрабатывает открытые веб-страницы и имеет сетевой выход, скрытая промпт-инъекция способна спровоцировать утечку данных. Разработчикам предстоит балансировать между удобством коннекторов и ограничением сетевых прав. Принятие MCP делает этот стандарт единым для всей индустрии.
