AI Web Checkby noviKEY
Меню

Руководство · Экспериментальная практика

WebMCP: инструменты сайта для браузерных ИИ-агентов

Как обычные HTML-формы и document.modelContext.registerTool() объявляют WebMCP-инструменты, чем это отличается от API/MCP-сервера и почему browser contract нельзя путать с обычным индексированием.

Опубликовано
Обновлено

Ограничение: материал объясняет проверяемый технический сигнал. Его наличие не гарантирует ранжирование, индексацию, цитирование или включение сайта в ответы ИИ.

Как устроен WebMCP

WebMCP позволяет странице объявлять структурированные инструменты для браузерного агента двумя способами. Declarative API использует атрибуты обычной HTML-формы (`toolname`, `tooldescription`, `toolparamdescription`), а imperative API регистрирует JavaScript-инструмент через `document.modelContext.registerTool()`.

Это отличается от отдельного MCP-сервера или REST API: инструмент живёт в контексте открытой страницы и выполняет клиентскую логику через браузер-посредник. Поэтому сам факт наличия WebMCP не делает сайт «лучше индексируемым» и не заменяет публичный HTTP-интерфейс.

Что проверяет AI Web Check

AI Web Check статически ищет декларативные WebMCP-атрибуты на формах и imperative-регистрацию `document.modelContext.registerTool()` в доступном inline-script. Внешний JavaScript сервис не выполняет, поэтому отсутствие статически видимой регистрации не доказывает отсутствие WebMCP после полноценного выполнения страницы в браузере.

WebMCP не влияет на основной AI Readiness: интерфейс быстро развивается и остаётся зависит от конкретного протокола и браузера. Такой сигнал полезнее показывать отдельно, чем штрафовать обычный сайт за отсутствие экспериментального API.

Минимальная регистрация

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

await document.modelContext.registerTool({
  name: 'search_catalog',
  description: 'Search the public catalog by query',
  inputSchema: {
    type: 'object',
    properties: { query: { type: 'string' } },
    required: ['query']
  },
  execute: async ({ query }) => searchCatalog(query)
});

Риски и типичные ошибки

  • Инструмент с размытым названием выполняет слишком широкое или необратимое действие.
  • В execute смешаны чтение данных, изменение состояния и платёжная операция без дополнительного подтверждения.
  • Разработчик считает обычный API, описанный через OpenAPI уже «WebMCP», хотя регистрация WebMCP на странице отсутствует.
  • В документацию копируется устаревший `navigator.modelContext` вместо текущего `document.modelContext`.

Когда имеет смысл внедрять

WebMCP особенно интересен там, где агенту нужно управлять уже открытым интерфейсом: фильтровать каталог, заполнять форму, менять состояние визуального приложения. Для серверных интеграций и системных операций чаще нужен отдельно защищённый API или MCP- или A2A-интерфейс.

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