Skip to main content

WebMCP

Struct WebMCP 

Source
pub struct WebMCP { /* private fields */ }
Expand description

The tools a page registers through the experimental WebMCP browser API, so a test can list and call them as an agent would.

Reached through Page::webmcp (the main frame’s tools) or Frame::webmcp.

The API is behind a flag in every browser that has it. Launch Chromium with --enable-features=WebMCP in args, or Firefox with the dom.modelcontext.enabled and dom.modelcontext.testing.enabled preferences set in firefox_user_prefs. Without them, tools fails with WebMCP is not enabled, followed by how to enable it; WebKit does not support it at all and fails with WebMCP is not supported in WebKit.

§Example

use playwright_rs::LaunchOptions;
use playwright_rs::protocol::Playwright;

let playwright = Playwright::launch().await?;
let browser = playwright
    .chromium()
    .launch_with_options(LaunchOptions::new().args(vec!["--enable-features=WebMCP".into()]))
    .await?;
let page = browser.new_page().await?;
page.goto("https://example.com/app", None).await?;

for tool in page.webmcp().tools(None).await? {
    println!("{}: {}", tool.name, tool.description);
}
let sum: serde_json::Value = page
    .webmcp()
    .call_tool("add", &serde_json::json!({ "a": 2, "b": 40 }), None)
    .await?;

See: https://playwright.dev/docs/api/class-webmcp

Implementations§

Source§

impl WebMCP

Source

pub async fn tools( &self, options: impl Into<Option<WebMCPOptions>>, ) -> Result<Vec<WebMCPTool>>

Lists the tools the frame’s page has registered, in the browser’s order.

§Errors

Returns error if WebMCP is not enabled in this browser (see the type docs), or the frame has been detached.

See: https://playwright.dev/docs/api/class-webmcp#webmcp-tools

Source

pub async fn call_tool<I, R>( &self, name: &str, input: &I, options: impl Into<Option<WebMCPOptions>>, ) -> Result<R>

Calls the tool registered as name with input, and returns what it returned, deserialized as R (use serde_json::Value to take it as it is). A tool reports its own failure in its result, with isError set, rather than raising one, so such a result comes back like any other.

input is serialized the way an evaluate argument is; pass &() for a tool that takes none.

§Errors

Returns error if no tool is registered as name (No WebMCP tool named "..."), WebMCP is not enabled, or the result does not deserialize as R.

See: https://playwright.dev/docs/api/class-webmcp#webmcp-call-tool

Trait Implementations§

Source§

impl Clone for WebMCP

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WebMCP

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for WebMCP

§

impl !RefUnwindSafe for WebMCP

§

impl !UnwindSafe for WebMCP

§

impl Send for WebMCP

§

impl Sync for WebMCP

§

impl Unpin for WebMCP

§

impl UnsafeUnpin for WebMCP

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more