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Вызывает инструмент, зарегистрированный фреймом, и возвращает его результат. Результатом является значение, которым завершилась функция 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);
Аргументы
-
Название инструмента, возвращаемое методом webMCP.tools().
-
inputSerializable (необязательно)#Входные данные для инструмента, соответствующие его
inputSchema. По умолчанию используется пустой объект. -
optionsObject (необязательно)-
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию равно
0— без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
tools
Добавлено в: v1.64Возвращает инструменты, зарегистрированные фреймом на текущий момент. Выбрасывает исключение, если браузер был запущен без поддержки WebMCP; параметры запуска, включающие эту поддержку, приведены в примечании выше.
page.webmcp охватывает только основной фрейм; дочерние фреймы предоставляют список своих инструментов через собственный frame.webmcp.
Использование
await webMCP.tools();
await webMCP.tools(options);
Аргументы
optionsObject (необязательно)-
timeoutnumber (необязательно)#Максимальное время ожидания в миллисекундах. По умолчанию равно
0— без ограничения времени ожидания. Значение по умолчанию можно изменить с помощью параметраactionTimeoutв конфигурации или методов browserContext.setDefaultTimeout() и page.setDefaultTimeout().
-
Возвращает
- Promise<Array<Object>>#
-
namestringНазвание инструмента, уникальное в пределах фрейма.
-
descriptionstringОписание инструмента.
-
inputSchemaSerializable (необязательно)Схема JSON Schema входных данных инструмента, если страница её предоставляет.
-
annotationsObject (необязательно)-
readOnlyboolean (необязательно)Инструмент не изменяет никакого состояния.
-
untrustedContentboolean (необязательно)Результат работы инструмента может содержать сторонний контент.
-
consequentialboolean (необязательно)Инструмент выполняет действие со значимыми последствиями, например оформление заказа.
Подсказки об инструменте, предоставляемые страницей.
-
-