WebMCP Demo Store

Loja de referência WebMCP: o mesmo catálogo de 150 produtos exposto a agentes de IA via chamadas de ferramentas MCP em vez de raspagem de DOM - verificado por benchmark com 79% menos bytes de ação, 42% menos tokens de entrada, 8/8 tarefas corretas.

Documentação

WebMCP Demo Store — servidor de arquivo único, dois modos, um benchmark

Mesma loja, mesmas ferramentas, dois modos de entrega:

  • Modo WebMCP — a página expõe seu catálogo por meio de chamadas de ferramentas MCP (MCP-over-HTTP /mcp, além do document.modelContext nativo do Chrome), para que um agente leia apenas o que a tarefa precisa.
  • Modo simples — a mesma loja como um site comum; o agente analisa páginas HTML completas, como todo agente precisa fazer hoje.

Benchmark (catálogo de 150 produtos, tarefas idênticas): 79% menos bytes de ação, 42% menos tokens de entrada, 8/8 tarefas corretas em ambos os modos. O modo DOM vence em catálogos pequenos e depois colapsa; o WebMCP vence com a idade. Relatório de cruzamento: report.html → WebMCP_Comparison_Report.pdf.

Como executar

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

Somente stdlib (http.server, json, uuid, threading) — sem pip install, sem dependências.

Demonstrações ao vivo

Teste WebMCP nativo do Chrome (13 out 2026)

Chrome 154 + --enable-features=WebMCP expõe document.modelContext em origens HTTPS (about:blank excluído).

  • Contrato de loja com 5 ferramentas registrado via API IMPERATIVA (registerTool): search_products, add_to_cart, get_cart, checkout (com suporte do servidor; todas as buscas na página).
  • Fluxo padrão do cliente verificado: descoberta getTools() → chamadas executeTool() → pedidos 1017/1018 feitos, seleções T2/T4/T8 corretas (HP Pavilion 14, Razer DeathAdder, OnePlus 12R).
  • Peculiaridades do build 154 encontradas e contornadas:
    1. executeTool(tool, args) exige argumentos como uma string JSON (a forma de objeto lança "Failed to parse input arguments"); os valores de retorno também são strings JSON — use JSON.parse em ambos os lados.
    2. Ferramentas não podem ser re-registradas com o mesmo nome (InvalidStateError) — recarregue a página para redefinir.
    3. Nome do sinalizador/recurso: --enable-features=WebMCP funciona em modo headless; o chrome://flags/#enable-webmcp-testing da documentação é o caminho manual. Observação: a API é document.modelContext (movida do navigator desde o build de julho de 2026).
  • Conclusão: o contrato de ferramentas da demo é compatível com o WebMCP nativo do Chrome, não apenas com nosso shim JSON-RPC. Quando o Chrome lançar o agente cliente (Gemini-in-Chrome), a loja já estará pronta para agentes.

Estrutura do repositório

caminhoo quê
server.pytudo: loja + carrinho + pedidos + transporte MCP (MCP=1) + serviço de estáticos/relatórios
catalog.json / catalog_10.jsoncatálogos de demonstração com 150 produtos / 10 produtos
compare.py, compare_llm.py, browser_llm.pyharnesses de benchmark (agente em modo DOM, contabilidade de tokens LLM, fluxo nativo do navegador)
make_report.pyregenera os relatórios HTML/PDF a partir de results.json / agg_150_vs_30.json
whitepaper.html, report*.html, *.pdf, chart_*.pngartefatos de estratégia + evidências (deck de lançamento incluído)
weekly_recap.pycontadores + resumo de URL ao vivo (usado pelo cron de operações)

Licença

MIT.