> ## Documentation Index
> Fetch the complete documentation index at: https://mcp-b-sync-npm-packages-docs-bf03420.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Browser Support and Flags

> Browser support matrix, Chromium flags, and native WebMCP API availability.

WebMCP is a proposed web standard. Native support is currently a Chromium preview behind a flag. For all other browsers, use [`@mcp-b/webmcp-polyfill`](/packages/webmcp-polyfill/reference) or [`@mcp-b/global`](/packages/global/reference).

<Note>
  Chrome's own documentation should be your first stop for preview status and rollout details: the [WebMCP early preview post](https://developer.chrome.com/blog/webmcp-epp), the [AI on Chrome overview](https://developer.chrome.com/docs/ai), and the [Model Context Tool Inspector](https://chromewebstore.google.com/detail/model-context-tool-inspec/gbpdfapgefenggkahomfgkhfehlcenpd).
</Note>

## Browser support matrix

| Browser                 | Native `modelContext` | Native `modelContextTesting` | Declarative API | Polyfill Support |
| ----------------------- | :-------------------: | :--------------------------: | :-------------: | :--------------: |
| Chrome 146+ (with flag) |          Yes          |              Yes             |       Yes       |        N/A       |
| Chrome/Edge (default)   |           No          |              No              |        No       |        Yes       |
| Firefox                 |           No          |              No              |        No       |        Yes       |
| Safari                  |           No          |              No              |        No       |        Yes       |

## Chromium requirements

* **Version**: Chrome 146.0.7672.0 or higher
* **Flag**: `chrome://flags/#enable-webmcp-testing` set to Enabled
* **Relaunch**: Required after enabling the flag

## Enabling the flag

### Via chrome://flags

1. Open Chrome and navigate to `chrome://flags/#enable-webmcp-testing`
2. Set the flag to **Enabled**
3. Click **Relaunch**

### Via command line

<Tabs>
  <Tab title="macOS">
    ```bash theme={null}
    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
      --enable-experimental-web-platform-features \
      http://localhost:5174
    ```
  </Tab>

  <Tab title="Linux">
    ```bash theme={null}
    google-chrome --enable-experimental-web-platform-features http://localhost:5174
    ```
  </Tab>

  <Tab title="Windows">
    ```powershell theme={null}
    & "C:\Program Files\Google\Chrome\Application\chrome.exe" `
      --enable-experimental-web-platform-features `
      http://localhost:5174
    ```
  </Tab>
</Tabs>

## Common launch flags

| Flag                                          | Purpose                                                         | Use Case                                         |
| --------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------ |
| `--enable-experimental-web-platform-features` | Enables all experimental web platform features including WebMCP | Development and testing                          |
| `--enable-features=WebModelContext`           | Enables only the Web Model Context feature                      | Targeted testing                                 |
| `--user-data-dir=/tmp/chrome-test`            | Isolated browser profile                                        | Avoiding conflicts with existing profile         |
| `--disable-extensions`                        | Disables all browser extensions                                 | Debugging polyfill-vs-native issues              |
| `--remote-debugging-port=9222`                | Enables DevTools Protocol access                                | Advanced debugging, `@mcp-b/chrome-devtools-mcp` |
| `--headless=new`                              | Headless mode                                                   | CI and automation                                |

## Verification

### JavaScript console

```js theme={null}
console.log("modelContext:", !!navigator.modelContext);
console.log("modelContextTesting:", !!navigator.modelContextTesting);
```

### chrome://version

1. Navigate to `chrome://version`
2. Find the **Command Line** section
3. Verify that your launch flags are present

For the deeper Chromium-specific notes we maintain locally, including source paths and test-focused launch setups, see [`CHROMIUM_FLAGS.md`](https://github.com/WebMCP-org/npm-packages/blob/main/e2e/web-standards-showcase/CHROMIUM_FLAGS.md). For practical testing workflows, see [Test Native and Polyfill](/how-to/test-native-and-polyfill).

## Feature detection

Use this pattern to detect the native API and fall back to the runtime:

```js theme={null}
if (!navigator.modelContext) {
  await import("@mcp-b/global");
}

navigator.modelContext.registerTool({
  name: 'my-tool',
  description: 'Example tool',
  inputSchema: { type: 'object', properties: {} },
  execute: async () => ({ content: [{ type: 'text', text: 'ok' }] }),
});
```

For production use, `@mcp-b/global` handles detection automatically. If a native implementation exists, it leaves the core in place and layers MCP-B features on top. For the architectural reason that works, see [Runtime Layering](/explanation/architecture/runtime-layering).

## Security notes

<Warning>
  The `--no-sandbox` flag disables critical security protections. Use it only in trusted CI environments.
</Warning>

* Native WebMCP features are experimental and may change between Chromium versions.
* Use an isolated user data directory for testing so you do not mix preview state with your regular browsing profile.
* `--enable-experimental-web-platform-features` enables more than WebMCP.

For the current specification status, see [Spec Status and Limitations](/explanation/design/spec-status-and-limitations). For the native-preview tutorial path, see [Try the Native Chrome Preview](/tutorials/first-native-preview).
