A curated list of resources for WebMCP — the W3C web standard that lets websites expose structured tools to AI agents via
navigator.modelContext.
- Official Tooling
- Polyfills & Core Libraries
- Framework Libraries
- Browser Extensions
- Bridges & Adapters
- CMS & Platform Integrations
- Payment
- Platforms
- Demo Applications
- Starter Templates & Courses
- Analysis & Readiness Tools
- Articles & Tutorials
- Videos & Talks
- Security Resources
- Community
- Specification
- API Quick Reference
- Key People
- GoogleChromeLabs/webmcp-tools - Official Chrome Labs toolkit with Model Context Tool Inspector extension, WebMCP Evals CLI, React flight-search demo (imperative), and restaurant reservation demo (declarative).
- Model Context Tool Inspector - Official Chrome extension for listing registered tools, executing manually, and testing with Gemini API.
- WebMCP-org/chrome-devtools-quickstart - Quickstart for connecting Chrome DevTools MCP to WebMCP tools with benchmark showing ~89% token reduction vs. screenshot automation.
- WebMCP-org/webmcp-sh - Source code for webmcp.sh playground built with React 19, Vite, PGlite (in-browser Postgres), and Cloudflare Workers.
- @mcp-b/global - Polyfill implementing
navigator.modelContextfor browsers without native support. Drop-in replacement with the same API surface as the spec. - webmcp-core - Zero-dependency
navigator.modelContextpolyfill (2.94 KB IIFE). Drop-in@mcp-b/globalreplacement with payment metadata support, SSR compatibility, and feature detection for native API fallback. 70 tests, TypeScript strict. - MiguelsPizza/WebMCP (mcp-b.ai) - MCP-B reference implementation by @MiguelsPizza. Monorepo with Chrome extension, tab/extension transports, native-server bridge, and Zod validation. Now continued under WebMCP-org.
- ripulio/web-mcp - Monorepo implementing WebMCP with MCP server CLI, Chrome extension, DevTools panel, and
navigator.modelContextpolyfill. - opentiny/next-sdk - Frontend AI SDK with
WebMcpServer/WebMcpClientclasses, transport adapters (MessageChannel, SSE, HTTP), Zod validation, and Vue 3 chat UI component. - jasonjmcghee/WebMCP - Early WebMCP prototype by @jasonjmcghee with client-side widget and localhost WebSocket bridge. NPM package and Docker support. Pre-dates the W3C spec; not spec-compliant.
- @mcp-b/react-webmcp - React hooks (
useWebMCP,useMcpTool) for registering and invoking WebMCP tools.
- igrigorik/AgentBoard - AI switchboard extension by @igrigorik with multi-provider LLM sidebar (OpenAI, Anthropic, Google, Ollama), scriptable WebMCP tools running in page context, remote MCP server support, and command templates.
- amedina/agentic-web-learning-tool - Chrome extension framework for agentic AI workflows, visual workflow composition, MCP server integration, and Chrome built-in AI playground.
- WebMCP-org/char-plugin - Claude Code plugin that installs Char embeddable AI agent, configures WebMCP servers, registers tools, and provides
/char:setupwizard.
- nathan-gage/webmcp-bridge - CLI + Chrome extension that bridges
navigator.modelContexttools to any MCP client (Claude, Cursor, Windsurf) via local WebSocket. Includes plugin marketplace for injecting bridge scripts on sites without native WebMCP. - three-water666/WebMCP - Universal bridge connecting web AI (Gemini, ChatGPT, DeepSeek) to local VS Code via MCP. VS Code extension + browser extension + Electron app with auto port discovery.
- Juggernaath/WebMCP - Browser automation platform exposing 14+ MCP tools (navigate, click, type, screenshot, fill forms, manage tabs). Includes task recording, scraping, and playback.
- victorzxj/webmcp-adapter - Universal adapter exposing frontend page actions as WebMCP tools with auto-discovery, schema generation, and Service Worker governance.
- 6missedcalls/openclaw-webmcp-skill - OpenClaw skill enabling AI agents to discover and invoke
navigator.modelContexttools without DOM scraping.
- wmcp.dev - WordPress plugin adding WebMCP declarative attributes (
toolname,tooldescription) to Contact Form 7, Gravity Forms, WPForms, and WooCommerce forms. - code-atlantic/webmcp-abilities - WordPress plugin bridging the Abilities API to
navigator.modelContext.registerTool(), exposing any registered ability as a structured tool for AI agents in Chrome 146+. - chgold/wp-ai-connect - WordPress plugin exposing WebMCP REST API. AI agents authenticate via JWT and invoke tools like
wordpress.searchPostsandwordpress.getPost. - tuvit/webmcp - Wix platform extension injecting WebMCP attributes into Wix Stores pages for AI agent access to e-commerce data.
- webmcp-payments - x402 payment acceptance middleware for WebMCP tools. Enables websites to charge AI agents per tool invocation using the HTTP 402 payment protocol with inline pricing metadata.
- webmcp-platform - Unified WebMCP platform integrating polyfill, payments, and SDK into a single import. One-line setup for making websites agent-friendly with built-in monetization via x402.
- Travel Demo - Official Chrome team demo using
searchFlightstool via imperative API. Part of the Chrome Early Preview docs. - Playground WebMCP - Interactive browser playground for connecting to MCP servers, running tools, and querying in-browser PostgreSQL. (Source).
- isainative.dev - Audit public GitHub repositories for AI coding readiness. Exposing both declarative and imperative WebMCP tools.
- grzetich/webmcp-kanban - React kanban board with 8 AI-callable tools (create, move, update, delete cards), drag-and-drop, and localStorage persistence. Live demo.
- WebMCP-org/big-calendar - Next.js calendar with 15 WebMCP tools for CRUD, navigation, and settings. Includes embedded AI agent via chat widget.
- WebMCP-org/ai-tinkerers-webmcp-demo - In-browser RAG pipeline with document ingestion, Transformers.js embeddings, Dexie/IndexedDB storage, and semantic search via WebMCP tools.
- Legit-Control/webMCP-exploration - React app integrating WebMCP with Legit SDK for Git-like versioned state mutations. AI agents edit calendar in isolated branches with visual previews.
- SrinivasanTarget/WebMCP-demo - Full WebMCP polyfill demo with 15+ sample tools (math, DOM, storage, network) and an AI-agent simulator with JSON-RPC messaging.
- tsunoyu/webmcp-travel-insurance - Travel insurance app demonstrating complete policy lifecycle (quoting, purchasing, claims) via
navigator.modelContexttools. - Cycasio/medsyn-web - Living evidence synthesis database for medical research with WebMCP tools for searching RCT studies, retrieving GRADE evidence summaries, and submitting studies for review.
- khushalsagar/webmcp-demo - By the Chrome spec co-author (@khushalsagar). Flight booking with both declarative HTML and imperative JS approaches.
- Doriandarko/webmcp-starter - Single-file "Midnight Eats" DoorDash-style demo with 9 tools (8 imperative, 1 declarative) and zero dependencies.
- alecron/webmcp-demo - Notes app with 5 tools (add, list, search, delete, stats) using
navigator.modelContext.provideContext(). - alanw707/webmcp-readiness-radar - Web app scoring a site's WebMCP agent-readiness with pillar-wise breakdown and recommendations.
- CodelyTV/webmcp-course - Course examples for both declarative (
toolname/tooldescriptionattributes) and imperative (navigator.modelContext) APIs. Tied to Codely Pro Spanish course. - taqm/webmcp-sample - Next.js + TypeScript starter template with Bun runtime, Biome linting, and Git hooks.
- webmaxru/agent-skills: WebMCP - Agent skill with template assets for implementing and debugging browser WebMCP integrations in JavaScript or TypeScript apps.
- opentiny/docs - Unified VitePress documentation for the OpenTiny NEXT ecosystem covering
WebMcpClient,WebMcpServer, MCP browser extensions, and related projects.
- AI Agent Readiness Scanner (source) - Free tool to score any website's AI agent readiness across 6 categories: WebMCP support, semantic HTML, structured data, llms.txt, crawlability, and content quality. Returns a grade (A–F), a 5-level readiness label (Invisible → AI-Native), per-check fix instructions with code examples, and supports side-by-side competitor comparison.
- Chrome's WebMCP Early Preview: The End of AI Agents Clicking Buttons - Third-party walkthrough covering both imperative and declarative APIs, events, CSS pseudo-classes, and best practices.
- What is WebMCP? Your Website Just Became a Function Call - Explainer comparing WebMCP vs server-side approaches, covering declarative HTML.
- WebMCP (Dejan AI) - SEO-focused analysis of tool descriptions as the next indexing problem.
- WebMCP: Making the Web AI-Agent Ready - Introduction with code samples for
registerTool,provideContext, and declarative forms.
- Chrome's WebMCP Makes AI Agents Stop Pretending - Trust model and security analysis.
- Google Chrome Ships WebMCP (VentureBeat) - Industry coverage with Google/Microsoft engineer quotes.
- Google Previews WebMCP (Search Engine Land) - Coverage exploring whether WebMCP is the next frontier of technical SEO.
- Google's WebMCP Moves the Web Closer to a Structured Database (The Decoder) - Broader web architecture implications.
- How WebMCP Lets Developers Control AI Agents With JavaScript (The New Stack) - Developer-focused technical analysis.
- The WebMCP Revolution: Transforming SEO (xugj520) - How WebMCP shifts SEO from content to capability indexing.
- WebMCP: Making Every Website a Tool — Alex Nahas Interview (Arcade.dev) - Amazon engineer (@MiguelsPizza) who built MCP-B, inspiring the W3C proposal.
- WebMCP Just Landed in Chrome 146 (bug0.com) - Concise setup tutorial.
- I Added 3 WebMCP Attributes (Medium) - Declarative approach walkthrough.
- MCP, A2A, NLWeb, and AGENTS.md (No Hacks Pod) - Where WebMCP fits among agentic protocols.
- The Agentic Web (The New Stack) - W3C perspective including WebMCP.
- Inside the Agentic Web (All Things Open) - Developer standards landscape overview.
- Don't Let AI Agents Push Your Buttons — Use WebMCP Instead! - Khushal Sagar (Chrome Staff SWE, spec co-author), Nov 2025.
- The Rise of WebMCP - Sam Witteveen covering launch and web dev impact.
The Security and Privacy Considerations covers (PR #55, PR #59):
- Prompt Injection — Tool poisoning (malicious descriptions), output injection (tainted return values), tool-as-target (exploiting high-value tools).
- Misrepresentation — Tools whose behavior doesn't match their description.
- Privacy Leakage — Over-parameterized tools extracting unnecessary personal data.
- MCP-B Security Best Practices - Practical recommendations for WebMCP implementations.
- Known Security Issues (MiguelsPizza Wiki) - Community-maintained attack vector list.
- Protecting Against Indirect Injection (Microsoft) - Applicable to WebMCP tool descriptions.
- Mitigating Prompt Injections in Browser Use (Anthropic) - Defense strategies for browser-based AI agents.
- Validate all input in
execute()— don't rely on schema alone. - Use
agent.requestUserInteraction()for destructive/financial actions. - Check
event.agentInvokedto differentiate agent vs human. - Set
readOnlyHint: trueon read-only tools. - Never return raw PII in tool responses (privacy leakage).
- Implement rate limiting in tool handlers.
- Keep descriptions positive ("Search flights") not negative ("Don't use for hotels").
- Log all tool invocations for audit.
- Update UI after execution — agents verify state via DOM.
- Use
toolautosubmitonly for idempotent operations.
- W3C Web Machine Learning CG - The W3C Community Group developing the WebMCP specification (charter). Open for anyone to join.
- CG Meeting Minutes - Bi-weekly telecon minutes since September 2025, including all formal resolutions.
- TPAC 2025 Session - Full-day face-to-face session in Kobe, Japan (Nov 11, 2025) with TAG review and key resolutions.
- Chrome AI Dev Preview Group - Official Google discussion group for Chrome AI features including WebMCP.
- GitHub Issues - Primary venue for async technical discussion and spec feedback.
- Bug Reports - Chrome implementation bug reports.
- Automation: webmcp-monthly-roundup - GitHub Action generating monthly newsletter roundups of WebMCP repo activity.
- r/HowToAIAgent - Chrome 146 launch discussion.
- r/ClaudeCode - Developer reactions.
- WebMCP List - Open directory of WebMCP-enabled websites with search, category browsing, and community submissions. Itself WebMCP-enabled with 4 tools for AI agent discovery.
| Browser | Status | Version | How to Enable |
|---|---|---|---|
| Chrome | Early Preview | 146.0.7672.0+ (Canary) | chrome://flags → "WebMCP for testing" |
| Edge | Expected | TBD | Same Chromium flag |
| Firefox | Not yet | — | — |
| Safari | Not yet | — | — |
if ("modelContext" in navigator) {
// WebMCP is supported
}| Document | Link | Description |
|---|---|---|
| Normative Spec | webmachinelearning.github.io/webmcp | Full spec: navigator.modelContext, registerTool(), provideContext(), events, CSS pseudo-classes |
| Source Repo | webmachinelearning/webmcp | Bikeshed spec, explainers, security/privacy docs, issue tracker |
| Chrome Early Preview | developer.chrome.com | Setup instructions, API overview, demo walkthrough |
| Declarative API Explainer | PR #76 | HTML form-based tools: toolname, tooldescription, toolautosubmit |
| Service Workers | service-workers.md | Background tool execution without a visible tab |
| Security & Privacy | security-privacy.md | Prompt injection, misrepresentation, over-parameterization |
| Deep Discussion Analysis | docs/spec-discussions/ | All 55 issues + 20 PRs analyzed by theme |
| Topic | Issue | Author | Status |
|---|---|---|---|
| Accessibility via agentic interfaces | #65 | @anssiko | Open |
In-page agent API (executeTool vs createClient) |
#51 | @khushalsagar | Open |
Elicitation / requestUserInteraction |
#21 | @bwalderman | Resolved |
| Tool annotations & side-effect hints | #53 | @victorhuangwq | Open |
| Agent identity | #54 | @EmLauber | Deferred |
| WebExtensions API | #74 | @reillyeon | Open |
| Iframe tool registration | #57 | @khushalsagar | Open |
| User gesture activation | #62 | @beaufortfrancois | Open |
| File attachments | #81 | @markafoltz | Open |
| Streaming arguments | #82 | @MiguelsPizza | Open |
| Scope clarification | #43 | — | Open |
Formal decisions from W3C CG meetings (minutes archive):
| Date | Resolution | Issue |
|---|---|---|
| Sep 2025 | Human-in-the-loop first. Automation deferred until security model matures. | #27 |
| Sep 2025 | SDK abstraction. Browser translates between page and MCP client; decoupled from MCP version. | #32 |
| Oct 2025 | navigator.modelContext is the root object name. |
#24 |
| Oct 2025 | Tools as discovery. Declarative API enables crawling/indexing without JS. | #8 |
| Oct 2025 | Both provideContext() and registerTool() supported. |
#15 |
| Oct 2025 | No JS injection by external agents. Extension API / CDP preferred. | #16 |
| Oct 2025 | requestUserInteraction() for elicitation. Block abusive sites permanently. |
#21 |
| Oct 2025 | No user-takeover notification needed. Elicitation handles it. | #20 |
| Nov 2025 | TAG endorsement. Continue as high-level API. Coordinate with AI Agent Protocol CG. | #35 |
| Nov 2025 | Cross-origin scoped out of v1. Same-origin tool registration only. | #52 |
| Nov 2025 | Agent identity deferred. No clear v1 need. | #54 |
| Jan 2026 | Declarative complements imperative. HTML form attributes + JS API. | PR #26 |
| Jan 2026 | AbortSignal for cancellation. Tool callbacks receive abort signal. |
#48 |
| Jan 2026 | Concurrent execution punted. Depends on in-page agent API design. | #47 |
| Feb 2026 | outputSchema added. Structured output definitions for tools. |
#9 |
// Register a tool (#15)
navigator.modelContext.registerTool({
name: "searchFlights",
description: "Search for available flights between two airports",
inputSchema: {
type: "object",
properties: {
origin: { type: "string", description: "IATA code (e.g. LHR)" },
destination: { type: "string", description: "IATA code (e.g. JFK)" },
date: { type: "string", format: "date" }
},
required: ["origin", "destination", "date"]
},
annotations: { readOnlyHint: true }, // #53
execute: async ({ origin, destination, date }) => {
const results = await searchFlightsAPI(origin, destination, date);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
}
});
// Replace all tools (#15)
navigator.modelContext.provideContext({ tools: [/* ... */] });
// Remove tools
navigator.modelContext.unregisterTool("searchFlights");
navigator.modelContext.clearContext();<form toolname="book_table"
tooldescription="Reserve a table at this restaurant"
toolautosubmit action="/api/reserve">
<input type="date" name="date" required toolparamdescription="Reservation date">
<input type="time" name="time" required toolparamdescription="Reservation time">
<input type="number" name="guests" min="1" max="20" required>
<button type="submit">Reserve</button>
</form>form.addEventListener("submit", (e) => {
if (e.agentInvoked) {
e.preventDefault();
e.respondWith(handleAgentSubmission(e));
}
});
window.addEventListener('toolactivated', ({ toolName }) => { /* ... */ });
window.addEventListener('toolcancel', ({ toolName }) => { /* ... */ });form:tool-form-active { outline: 2px solid #4CAF50; }
button:tool-submit-active { background: #FFD700; }execute: async ({ productId }, agent) => {
const ok = await agent.requestUserInteraction(async () => {
return confirm(`Purchase ${productId}?`);
});
if (!ok) throw new Error("Canceled");
return { content: [{ type: "text", text: "Purchased" }] };
}| Person | Affiliation | Role | Links |
|---|---|---|---|
| Anssi Kostiainen | W3C / Intel | CG Chair, coordinates with TAG and AAIF (#35), spec draft (PR #64), WebIDL (PR #75) | GitHub |
| Brandon Walderman | Microsoft | Spec co-author, initial explainer (PR #1), service workers (PR #4), elicitation (#21), naming (#24), API design (#15) | GitHub · LinkedIn |
| David Bokan | Spec co-author, discovery (#8), output schema (#9), external agents (#16) | GitHub | |
| Khushal Sagar | Spec co-author, Chrome lead, SDK (#32), createClient (#51), iframes (#57), annotations (#53), scope (#52), concurrency (#47, #49) |
GitHub · LinkedIn | |
| Dominic Farolino | Spec editor, declarative explainer (PR #76), iframe policy (#57) | GitHub · LinkedIn · X | |
| Victor Huang | Security & Privacy (PR #55, PR #59), threat model (#45), annotations (#53), identity (#54) | GitHub | |
| Mark Foltz | Spec editor, file attachments (#81), streaming (#82), build system (PR #77–#80) | GitHub | |
| Reilly Grant | WebExtensions API (#74), navigator placement (#24), component coordination (#15) |
GitHub | |
| Anders Ruud | Declarative deep dive — forms, radio buttons, labels (#66–#69, #71) | GitHub | |
| Francois Beaufort | Chrome Early Preview, user gesture activation (#62), modelContextTesting (#74), JS examples (PR #61) |
GitHub | |
| Andre Bandarra | Chrome Early Preview, travel demo | GitHub · X · Blog | |
| Alex Nahas | Amazon (prev.) | Original WebMCP concept, MCP-B creator, declarative proposal (PR #26), async registration (#30) | GitHub · LinkedIn |
| Jason McGhee | Independent | Early WebMCP implementation, external MCP client API (#23) | GitHub · X |
| Ilya Grigorik | Shopify | Commerce perspective, agent-to-agent (#31) | GitHub |
| Leonie Watson | TPGi | Accessibility expert, screen readers (#65) | GitHub |
See contributing.md for guidelines. Only submit resources directly about the WebMCP browser standard (navigator.modelContext API or toolname/tooldescription HTML attributes). Do not submit general server-side MCP resources. (Follow awesome-list standards for entry quality.)
- Yigit Konur @yigitkonur
- Web-MCP.net Crew @web-mcp.net
To the extent possible under law, the maintainers have waived all copyright and related or neighboring rights to this work.