API / Auth / MCP

WebMCP

Браузерный JavaScript API (document.modelContext): страница регистрирует инструменты, которые AI-агент вызывает напрямую, а не кликами по интерфейсу.

Что такое WebMCP?

WebMCP — браузерный JavaScript API из черновика W3C Web Machine Learning Community Group (авторы из Microsoft и Google). Страница регистрирует «инструменты» (tools) через document.modelContext.registerTool(), и AI-агент браузера вызывает их напрямую — вместо того чтобы искать кнопки и кликать по DOM.

AI-агент браузера → document.modelContext → execute() на странице
                                             ↑
                         код сайта в сессии пользователя

С MCP у WebMCP общий словарь (tools, JSON Schema входа), но это не MCP-протокол поверх сети: нет серверного endpoint, транспорта и URL для подключения. Удалённый MCP-сервер (Streamable HTTP / SSE по адресу вроде /mcp) — отдельный механизм.

Зачем нужен WebMCP?

Агент, который управляет сайтом через скриншоты и клики, медленный и ломается при любом изменении вёрстки. WebMCP даёт ему явный список действий с параметрами.

Ключевые преимущества:

  • Надёжность — вызов функции вместо угадывания элементов интерфейса.
  • Без отдельного бэкенда — инструмент выполняется на странице и переиспользует клиентский код и авторизацию пользователя.
  • Прозрачность — результат действия виден пользователю в открытом интерфейсе.

Статус на октябрь 2026: origin trial в Chrome 149 и Edge 150, поддержка в ChatGPT Desktop, экспериментально в Brave; у Firefox и Safari позиции пока нет.

Как реализовать WebMCP?

Зарегистрируйте инструмент из скрипта страницы:

const controller = new AbortController();

await document.modelContext.registerTool({
  name: 'search-products',
  description: 'Ищет товары в каталоге по запросу',
  inputSchema: {
    type: 'object',
    properties: { query: { type: 'string', description: 'Поисковый запрос' } },
    required: ['query'],
  },
  async execute({ query }) {
    const items = await searchProducts(query); // ваша существующая функция
    return { content: [{ type: 'text', text: JSON.stringify(items) }] };
  },
}, { signal: controller.signal });

// controller.abort() — снять инструмент

API доступен только по HTTPS (secure context). Агенты внутри страницы или iframe получают список через document.modelContext.getTools() и вызывают executeTool(); при изменении набора срабатывает событие toolchange. Для cross-origin iframe нужны allow="tools" и опция exposedTo.

Практики из README WebMCP: мало инструментов, у каждого одна задача; валидация ввода, прав и предусловий внутри execute; UI синхронизирован с действиями агента. Декларативный вариант через <form> удалён из спецификации 8 октября 2026.

Как мы проверяем WebMCP?

Проверка webmcp информационная: не влияет на итоговый счёт (weight = 0) и пока не выполняется — инструменты регистрируются из JavaScript, а сканер не исполняет скрипты страницы. Подробнее и как проверить вручную — в гайде по WebMCP.

Источники и спецификации