WebMCP vs MCP: Where Each Runs and When to Use Which
MCP is a protocol that connects AI apps to tools on a server, either on your computer or on a remote host. WebMCP is a proposed browser API where a web page registers tools in JavaScript, and an agent in the visitor's browser tab calls them. Use MCP when an agent needs a service without a page open, or when the caller is a desktop or IDE app. Use WebMCP when the actions already live in your page and should run in the visitor's signed-in session. Many sites will end up needing both.
Check the status first
WebMCP is a draft, and its status changes every few weeks. These are the facts as of 20 October 2026:
| Item | Status on 20 October 2026 | Where it's from |
|---|---|---|
| Specification | Draft Community Group Report, dated 20 October 2026. It's not a W3C Standard and not on the W3C Standards Track | The spec's status section |
| Browser API | document.modelContext.registerTool(). Chromium removed navigator.modelContext on 9 July 2026 | Chromium commit 4a9fee9 and the spec |
| Declarative (HTML form) API | Not in the draft spec. The WebMCP README says it's "not part of the specification at this time." Chrome's declarative API page, last updated 25 September 2026, still describes it | WebMCP README and Chrome docs |
| Chrome | Origin trial from Chrome 149. A local flag is available for testing. Not in Chrome stable | Chrome docs and the Chrome blog |
| Microsoft Edge | Origin trial with an expiry date of 30 March 2027 | Edge origin trial page |
Chrome's May 2026 Intent to Experiment planned the origin trial for Chrome 149 to 156, with shipping in Chrome 157. Secondary reports say Google extended the trial through Chrome 162, which matches the Edge expiry date. Chrome's own docs don't state an end date, so check Chrome Status before you plan a launch around a date.
For local testing, open chrome://flags/#enable-webmcp-testing, set the flag to Enabled and relaunch Chrome. For a live site, you register your origin for the origin trial, create the Chromium issue the registration asks for, and serve the token with an Origin-Trial header or a meta tag.
Where each one runs
| MCP | WebMCP | |
|---|---|---|
| Where the tool code runs | On an MCP server: a local process your AI app starts, or a remote server reached over Streamable HTTP | In the JavaScript of a web page, in the visitor's browser tab |
| Who writes it | Whoever builds the server | Whoever owns the website |
| Who calls it | An MCP host, such as an AI app, connects to the server and sends tools/call | A browser agent, or JavaScript running in the page, calls the tool |
| How tools are found | The host asks with tools/list after it connects | Someone has to load the page. Tools exist only while the page registers them. The draft spec has no manifest format |
| How the caller is signed in | HTTP transports can use OAuth 2.1 when the server requires authorization. Local stdio servers take their credentials from the environment | The agent works inside the visitor's browser session, so it carries the cookies and logins the page already has |
| Does a person need to be there | No. A server can run on a schedule or in a backend job | The API is built for a person with the page open. Chrome's docs say headless use "may be possible" but the API is "primarily designed for local browser workflows with a human in the loop" |
| Message format | JSON-RPC 2.0 over stdio or Streamable HTTP | Set by the browser. The spec doesn't prescribe how tools are passed to the agent |
The WebMCP spec's introduction says pages that use WebMCP "can be thought of as Model Context Protocol servers that implement tools in client-side script." That's a good way to picture the tool shape: a name, a description and a JSON Schema for the inputs are the same idea in both. Treat it as an analogy, though. The discovery, transport and sign-in are different, so an MCP host can't call a page's tools the way it calls an MCP server.
The questions that decide it
Work through these in order. The first answer that points one way is usually enough.
- Does the action need someone to have your page open? If yes, WebMCP is a candidate. If the agent should work in the background or from an app outside the browser, use MCP.
- Is the logic already in your page? If a form, a booking flow or a cart already runs in your JavaScript, WebMCP lets you expose it with a few
registerTool()calls. If the logic lives only on your backend, put an MCP server in front of it. MCP vs API covers that choice. - Who is the caller? WebMCP tools are for a browser agent or a script on the page. The spec doesn't define a path for an AI app that runs outside the browser to reach a page's tools. For Claude Desktop, Cursor or a coding agent, use MCP.
- Whose sign-in should the action use? If the visitor already signed in to your site, WebMCP runs inside that session. If a third party or a service account needs access, use an MCP server with OAuth.
- Should the visitor watch it happen? WebMCP tools run on the page, and Chrome's docs say they "execute on your webpage visibly." An MCP server's work happens out of sight unless the app shows it.
- Is the action sensitive? Mark it. WebMCP tools can carry a
consequentialHintannotation, which the spec says lets clients require a confirmation before running the tool. An MCP host should ask before running a tool too. The MCP spec says tool annotations should be treated as untrusted unless they come from a trusted server.
Many sites end up needing both. A company might run an MCP server for its API, so that AI apps can use it, and add WebMCP tools to the website, so that a shopper's browser agent can use the page. The two don't share a transport or a discovery mechanism, so you write each side separately.
What the two look like in code
A WebMCP tool is a JavaScript object registered on the page. This is the shape of a tool from Chrome's imperative API docs, shortened:
await document.modelContext.registerTool({
name: 'book_flight',
description: 'Book a flight for the user with confirmed flight details.',
inputSchema: {
type: 'object',
properties: {
flightId: { type: 'string', description: 'ID of the flight to book' },
passengers: { type: 'number', description: 'Number of tickets to purchase' },
},
required: ['flightId', 'passengers'],
},
annotations: {
readOnlyHint: false,
consequentialHint: true,
},
execute: async ({ flightId, passengers }) => {
// Add your flight booking transaction logic here.
return `Booked ${passengers} passenger(s) on flight ${flightId}.`;
},
});
An MCP tool is a function on a server, which the SDK turns into a tool entry with the same kinds of fields. The tools/list example in the MCP vs API guide shows the entry an MCP host receives, and How to build an MCP server writes one in Python and TypeScript.
What changed recently
| Date | What happened | Source |
|---|---|---|
| 13 August 2025 | The WebMCP API proposal is dated, with authors from Microsoft and Google | WebMCP API proposal |
| 10 February 2026 | Chrome opens an early preview program | Chrome blog |
| 18 May 2026 | Chrome's origin trial plan for Chrome 149 to 156 is approved | blink-dev Intent to Experiment |
| 9 June 2026 | Chrome opens origin trial registration from Chrome 149 | Chrome blog |
| 9 July 2026 | Chromium removes navigator.modelContext in favor of document.modelContext | Chromium commit 4a9fee9 |
| By 20 October 2026 | The draft spec no longer includes the declarative form API | WebMCP README and draft spec |
Older tutorials and the February 2026 technical notes use navigator.modelContext. Use document.modelContext in new code.
Common misconceptions
"A WebMCP site is an MCP server." The spec uses that analogy, but a page doesn't speak MCP. The browser decides how to pass the tools to the agent, and the spec says it "does not prescribe the format" for that.
"Once I add WebMCP tools, every AI app can use my site." Tools exist only while a page with the tools is open. Chrome's docs list tool discoverability as a limit: clients and browsers have to visit the site to learn what it offers.
"WebMCP means I don't need a backend." The tool runs in your page's JavaScript, and that code often calls the same backend the page already uses. WebMCP exposes what your page does. It doesn't replace the server work behind it.
"The navigator.modelContext examples still work." They worked in early builds. Chromium removed that property in July 2026, so use document.modelContext.
How to do each option
- Use MCP. How to build an MCP server builds a server, and MCP clients lists the AI apps that connect to one.
- Use WebMCP. What is WebMCP explains the API and its status, and Add WebMCP to your site registers a first tool on a page.
- Check browser support. WebMCP browser support lists which browsers and agents support it, as documented.
- Plan for security. Read WebMCP security before you publish tools that change data or spend money.
FAQ
Is WebMCP the same as MCP?
No. MCP is a protocol that connects AI apps to tool servers. WebMCP is a proposed browser API that lets a web page register tools in JavaScript. They share the idea of a named tool with a description and a JSON Schema for its inputs, but the transport, discovery and sign-in work differently.
Can WebMCP replace my MCP server?
Only for actions that happen on a page a visitor has open. A background job, a server-to-server integration or an AI app that runs outside the browser still needs MCP.
Is WebMCP available to all users?
Not yet as a standard feature. Chrome offers it through an origin trial from Chrome 149, which lets you enable it for visitors on your registered origin. Chrome says the API may change, so plan for updates and check Chrome Status for the current milestones.
Do I need to choose between WebMCP and MCP?
Not always. Many sites will use both: an MCP server for AI apps and API access, and WebMCP tools for the actions visitors take on your pages. The two don't share a transport, so each needs its own code.
- What is WebMCPThe proposal, the navigator and document APIs, and where it stands today.
- Add WebMCP to your siteRegister a first tool on a static page.
- WebMCP browser supportWhich browsers and agents support WebMCP, as documented.
- WebMCP securityRisks in tool descriptions and results, and how to limit them.
- MCP vs APIWhen MCP, function calling or a plain API is the right tool.