WebMCP Demo Store

Tienda de referencia WebMCP: el mismo catálogo de 150 productos expuesto a agentes de IA mediante llamadas a herramientas MCP en lugar de scraping del DOM: verificado por benchmarks con un 79% menos de bytes de acción, 42% menos de tokens de entrada y 8/8 tareas correctas.

Documentación

WebMCP Demo Store — servidor de un solo archivo, dos modos, un punto de referencia

La misma tienda, las mismas herramientas, dos modos de entrega:

  • Modo WebMCP — la página expone su catálogo a través de llamadas a herramientas MCP (MCP sobre HTTP /mcp, además de document.modelContext nativo de Chrome), de modo que un agente lee solo lo que la tarea necesita.
  • Modo simple — la misma tienda como un sitio web ordinario; el agente analiza páginas HTML completas, como todo agente debe hacer hoy.

Punto de referencia (catálogo de 150 productos, tareas idénticas): 79% menos bytes de acción, 42% menos tokens de entrada, 8/8 tareas correctas en ambos modos. El modo DOM gana en catálogos pequeños y luego colapsa; WebMCP gana con la edad. Informe de cruce: report.html → WebMCP_Comparison_Report.pdf.

Ejecútalo

python3 server.py                    # plain mode      → http://localhost:9501
MCP=1 PORT=9502 python3 server.py    # WebMCP mode     → http://localhost:9502 + /mcp

Solo stdlib (http.server, json, uuid, threading) — sin pip install, sin dependencias.

Demos en vivo

Prueba de WebMCP nativo de Chrome (13 de octubre de 2026)

Chrome 154 + --enable-features=WebMCP expone document.modelContext en orígenes HTTPS (about:blank excluido).

  • Registró el contrato de tienda de 5 herramientas mediante la API IMPERATIVA (registerTool): search_products, add_to_cart, get_cart, checkout (respaldado por servidor; todas las búsquedas en la página).
  • Flujo de cliente estándar verificado: descubrimiento getTools() → llamadas executeTool() → pedidos 1017/1018 realizados, selecciones T2/T4/T8 correctas (HP Pavilion 14, Razer DeathAdder, OnePlus 12R).
  • Peculiaridades de la compilación 154 encontradas y resueltas:
    1. executeTool(tool, args) requiere argumentos como una cadena JSON (la forma de objeto lanza "Failed to parse input arguments"); los valores de retorno también son cadenas JSON — JSON.parse en ambos lados.
    2. Las herramientas no se pueden volver a registrar bajo el mismo nombre (InvalidStateError) — recarga la página para restablecer.
    3. Nombre de bandera/característica: --enable-features=WebMCP funciona sin interfaz; el chrome://flags/#enable-webmcp-testing de los documentos es la ruta manual. Nota: la API es document.modelContext (movida desde navigator desde la compilación de julio de 2026).
  • Conclusión: el contrato de herramientas de la demo es compatible con el WebMCP nativo de Chrome, no solo con nuestro shim JSON-RPC. Cuando Chrome envíe el agente cliente (Gemini-in-Chrome), la tienda ya estará lista para agentes.

Estructura del repositorio

rutaqué
server.pytodo: tienda + carrito + pedidos + transporte MCP (MCP=1) + servicio estático/informes
catalog.json / catalog_10.jsoncatálogos de demostración de 150 productos / 10 productos
compare.py, compare_llm.py, browser_llm.pyarneses de punto de referencia (agente de modo DOM, contabilidad de tokens LLM, flujo nativo del navegador)
make_report.pyregenera los informes HTML/PDF desde results.json / agg_150_vs_30.json
whitepaper.html, report*.html, *.pdf, chart_*.pngartefactos de estrategia + evidencia (deck de lanzamiento incluido)
weekly_recap.pycontadores + resumen de URL en vivo (usado por el cron de operaciones)

Licencia

MIT.