Перейти к основному содержимому

WebMCP

WebMCP предоставляет доступ к инструментам, которые фрейм регистрирует через экспериментальный браузерный API WebMCP, navigator.modelContext. Он позволяет получать список инструментов и вызывать их.

Доступ к экземплярам осуществляется через frame.webmcp. page.webmcp — это экземпляр для основного фрейма.

примечание

WebMCP — экспериментальная возможность браузера. В Chromium она включается аргументом запуска --enable-features=WebMCP, а в Firefox — настройками dom.modelcontext.enabled и dom.modelcontext.testing.enabled. В WebKit эта возможность не реализована.

Названия инструментов, их описания, схемы входных данных и результаты предоставляются страницей, поэтому считайте их недоверенными входными данными.

const browser = await chromium.launch({ args: ['--enable-features=WebMCP'] });
const page = await browser.newPage();
await page.goto('https://example.com');

for (const tool of await page.webmcp.tools())
console.log(tool.name, tool.description);

const result = await page.webmcp.callTool('add', { a: 2, b: 40 });

Методы​

callTool​

Добавлено в: v1.64 webMCP.callTool

Вызывает инструмент, зарегистрированный фреймом, и возвращает его результат. Результатом является значение, которым завершилась функция execute инструмента, — обычно это объект с массивом content. Результат с isError: true возвращается без изменений. Метод выбрасывает исключение, если инструмент не зарегистрирован или его функция execute выбрасывает исключение.

const result = await page.webmcp.callTool('add', { a: 2, b: 40 });
console.log(result.content[0].text); // "42"

Использование

await webMCP.callTool(name);
await webMCP.callTool(name, input, options);

Аргументы

  • name string#

    Название инструмента, возвращаемое методом webMCP.tools().

  • input Serializable (необязательно)#

    Входные данные для инструмента, соответствующие его inputSchema. По умолчанию используется пустой объект.

  • options Object (необязательно)

    • timeout number (необязательно)#

      Максимальное время ожидания в миллисекундах. По умолчанию равно 0 — без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().

Возвращает


tools​

Добавлено в: v1.64 webMCP.tools

Возвращает инструменты, зарегистрированные фреймом на текущий момент. Выбрасывает исключение, если браузер был запущен без поддержки WebMCP; параметры запуска, включающие эту поддержку, приведены в примечании выше.

page.webmcp охватывает только основной фрейм; дочерние фреймы предоставляют список своих инструментов через собственный frame.webmcp.

Использование

await webMCP.tools();
await webMCP.tools(options);

Аргументы

  • options Object (необязательно)
    • timeout number (необязательно)#

      Максимальное время ожидания в миллисекундах. По умолчанию равно 0 — без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметра actionTimeout в конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().

Возвращает

  • Promise<Array<Object>>#
    • name string

      Название инструмента, уникальное в пределах фрейма.

    • description string

      Описание инструмента.

    • inputSchema Serializable (необязательно)

      Схема JSON Schema входных данных инструмента, если страница её предоставляет.

    • annotations Object (необязательно)

      • readOnly boolean (необязательно)

        Инструмент не изменяет никакого состояния.

      • untrustedContent boolean (необязательно)

        Результат работы инструмента может содержать сторонний контент.

      • consequential boolean (необязательно)

        Инструмент выполняет действие со значимыми последствиями, например оформление заказа.

      Подсказки об инструменте, предоставляемые страницей.