WebMCP Demo Store

io.github.kamatanujPublished by GitHub account kamatanujv1.0.0Updated Nov 1, 2026

WebMCP demo store: same catalog via MCP tool calls vs DOM scraping. -79% bytes, -42% tokens.

The publisher's own server: demo.st

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBusiness & Commerce

Overview

AI-generated overview

A demo online store exposed as MCP tools, letting an assistant search a product catalog, manage a cart and place orders without scraping HTML.

What you can do
  • Search the product catalog by category, maximum price, minimum rating or brand substring
  • Read full details of a single product by its id
  • Add products to a cart and view current cart contents with the total
  • Place an order for the current cart and receive an order id
When to use it
Useful for trying out or demonstrating agent-driven shopping flows over MCP, or for comparing tool-call access against DOM scraping on the same catalog. It is a demo store, not a real merchant.
Requirements
A remote streamable HTTP endpoint; no authentication, environment variables or headers are declared. The README also describes running the bundled Python server locally in plain or MCP mode, which needs only the Python standard library.
Before you install
Checkout places an order and returns an order id, so cart and order state changes on the demo server; treat orders as test data. The README notes the demo has been used to place real order numbers, and the catalog is a fixed demo set rather than live inventory.

Installation

In SourceWeft

  1. Open WebMCP Demo Store in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.kamatanuj%2Fwebmcp-store/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "webmcp-demo-store": {
      "type": "http",
      "url": "https://demowithmcp.converso.work/mcp"
    }
  }
}

README

WebMCP Demo Store — one-file server, two modes, one benchmark

[Listed on mcpservers.org]

Same store, same tools, two delivery modes:

  • WebMCP mode — the page exposes its catalog through MCP tool calls (MCP-over-HTTP /mcp, plus Chrome-native document.modelContext), so an agent reads only what the task needs.
  • Plain mode — the same store as an ordinary website; the agent parses full HTML pages, as every agent must today.

Benchmark (150-product catalog, identical tasks): 79% less action bytes, 42% fewer input tokens, 8/8 tasks correct in both modes. DOM mode wins on small catalogs then collapses; WebMCP wins with age. Crossover report: report.html → WebMCP_Comparison_Report.pdf.

Run it

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

stdlib-only (http.server, json, uuid, threading) — no pip install, no dependencies.

Live demos

Chrome-native WebMCP test (13 Oct 2026)

Chrome 154 + --enable-features=WebMCP exposes document.modelContext on HTTPS origins (about:blank excluded).

  • Registered the 5-tool store contract via the IMPERATIVE API (registerTool): search_products, add_to_cart, get_cart, checkout (server-backed; all fetches in-page).
  • Standard client flow verified: getTools() discovery → executeTool() calls → orders 1017/1018 placed, T2/T4/T8 picks correct (HP Pavilion 14, Razer DeathAdder, OnePlus 12R).
  • 154 build quirks found & worked around:
    1. executeTool(tool, args) requires args as a JSON string (object form throws "Failed to parse input arguments"); return values are JSON strings too — JSON.parse both sides.
    2. Tools can't be re-registered under the same name (InvalidStateError) — reload the page to reset.
    3. Flag/feature name: --enable-features=WebMCP works headless; docs' chrome://flags/#enable-webmcp-testing is the manual path. Note: API is document.modelContext (moved from navigator since July 2026 build).
  • Takeaway: the demo's tool contract is compatible with Chrome's native WebMCP, not just our JSON-RPC shim. When Chrome ships the client agent (Gemini-in-Chrome), the store is already agent-ready.

Repo layout

pathwhat
server.pythe whole thing: store + cart + orders + MCP transport (MCP=1) + static/report serving
catalog.json / catalog_10.json150-product / 10-product demo catalogs
compare.py, compare_llm.py, browser_llm.pybenchmark harnesses (DOM-mode agent, LLM-token accounting, browser-native flow)
make_report.pyregenerates the HTML/PDF reports from results.json / agg_150_vs_30.json
whitepaper.html, report*.html, *.pdf, chart_*.pngstrategy + evidence artifacts (launch deck included)
weekly_recap.pycounters + live-URL digest (used by the ops cron)

License

MIT.

Source: README.md at commit 15e17a4

Tools

5

search_products

Search product catalog. Filter by category (mice|laptops|phones), max_price (INR), min_rating, brand substring.

Parametersbrandquerycategorymax_pricemin_rating

get_product_details

Full details of one product by id.

Parametersidrequired

add_to_cart

Add product to cart (qty default 1).

Parametersidrequiredqty

get_cart

Current cart contents and total.

Takes no parameters.

checkout

Place order for current cart. Returns order id.

Takes no parameters.

Version history

1
  1. v1.0.0LatestOct 18, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Demo integrations