WebMCP Demo Store について
WebMCP Demo Storeは、エージェント向けのストアサーバー兼ベンチマークです。通常のページとMCPモードを備え、商品カタログへのアクセス方法を比較できます。
主な機能
- 01通常ページとWebMCPモード
- 02商品検索とカートのツール
- 03ChromeネイティブWebMCP対応
- 04DOMとトークンのベンチマーク
- 05標準ライブラリのみのサーバー
活用シーン
- 01ページ解析とMCP呼び出しの比較
- 02商品カタログでのエージェント動作のテスト
- 03タスクのデータ量と入力トークンの測定
MCP 対応
WebMCPモードでは、MCP-over-HTTPの`/mcp`エンドポイントを通じて商品カタログと購入操作を提供します。Chromeの`document.modelContext` APIでツールを登録することもできます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://demowithmcp.converso.work/mcpclaude mcp add --transport http kamatanuj-webmcp-store https://demowithmcp.converso.work/mcp{"mcpServers":{"kamatanuj-webmcp-store":{"type":"http","url":"https://demowithmcp.converso.work/mcp"}}}Cursor で開く{"servers":{"kamatanuj-webmcp-store":{"type":"http","url":"https://demowithmcp.converso.work/mcp"}}}VS Code で開く{"mcpServers":{"kamatanuj-webmcp-store":{"type":"http","url":"https://demowithmcp.converso.work/mcp"}}}{"mcpServers":{"kamatanuj-webmcp-store":{"serverUrl":"https://demowithmcp.converso.work/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
WebMCP Demo Store — 1 ファイルのサーバー、2 つのモード、1 つのベンチマーク
同じストア、同じツール、2 つの提供モード:
- WebMCP モード — ページは MCP ツール呼び出し(MCP-over-HTTP
/mcpと Chrome ネイティブのdocument.modelContext)を通じてカタログを公開するため、エージェントはタスクに必要な情報だけを読み取ります。 - プレーンモード — 同じストアを通常のウェブサイトとして提供します。現在のすべてのエージェントと同様に、エージェントは HTML ページ全体を解析します。
ベンチマーク(150 商品のカタログ、同一タスク):アクションのバイト数を 79% 削減、入力トークンを 42% 削減し、両モードで 8/8 タスクに正解。 DOM モードは小規模なカタログでは優位ですが、その後は性能が急落します。WebMCP は時間とともに優位になります。クロスオーバーレポート:report.html → WebMCP_Comparison_Report.pdf
実行方法
python3 server.py # plain mode → http://localhost:9501
MCP=1 PORT=9502 python3 server.py # WebMCP mode → http://localhost:9502 + /mcp
標準ライブラリのみ(http.server、json、uuid、threading)を使用します。pip のインストールや依存関係は不要です。
ライブデモ
- プレーンモード:https://demonomcp.converso.work
- WebMCP:https://demowithmcp.converso.work(`.well-known/mcp` による検出、
/mcpエンドポイント) - 起動パッケージ(スライド、ホワイトペーパー、レポート):https://demowithmcp.converso.work/launch.html
Chrome ネイティブ WebMCP テスト(2026 年 10 月 13 日)
Chrome 154 と --enable-features=WebMCP により、HTTPS オリジンで document.modelContext が利用できます(about:blank は対象外です)。
- IMPERATIVE API(
registerTool)を使用して、5 つのツールからなるストアのコントラクトを登録しました:search_products、add_to_cart、get_cart、checkout(サーバー連携。すべての fetch はページ内で実行)。 - 標準的なクライアントフローを検証しました:
getTools()による検出 →executeTool()の呼び出し → 注文 1017/1018 を確定し、T2/T4/T8 の商品を正しく選択(HP Pavilion 14、Razer DeathAdder、OnePlus 12R)。 - 154 ビルドで見つかった問題と回避策:
executeTool(tool, args)では、args を JSON 文字列として渡す必要があります(オブジェクト形式では "Failed to parse input arguments" がスローされます)。戻り値も JSON 文字列なので、両方を JSON.parse します。- 同じ名前でツールを再登録することはできません(InvalidStateError)。ページを再読み込みしてリセットしてください。
- フラグ/機能名:ヘッドレスでは
--enable-features=WebMCPが動作します。ドキュメントにあるchrome://flags/#enable-webmcp-testingは手動で設定する方法です。注:API はdocument.modelContextです(2026 年 7 月のビルド以降、navigator から移動)。
- 要点:このデモのツールコントラクトは、JSON-RPC shim だけでなく、Chrome のネイティブ WebMCP とも互換性があります。Chrome がクライアントエージェント(Gemini-in-Chrome)をリリースする頃には、このストアはすでにエージェント対応済みです。
リポジトリ構成
| パス | 内容 |
|---|---|
server.py | 全機能を収録:ストア、カート、注文、MCP トランスポート(MCP=1)、静的ファイル/レポートの配信 |
catalog.json / catalog_10.json | 150 商品/10 商品のデモカタログ |
compare.py、compare_llm.py、browser_llm.py | ベンチマーク用ハーネス(DOM モードのエージェント、LLM トークンの集計、ブラウザネイティブのフロー) |
make_report.py | results.json / agg_150_vs_30.json から HTML/PDF レポートを再生成 |
whitepaper.html、report*.html、*.pdf、chart_*.png | 戦略とエビデンスの成果物(起動スライドを含む) |
weekly_recap.py | カウンターとライブ URL のダイジェスト(運用 cron で使用) |
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。