mcpField
W
webmcp

webmcp

github.com/pillarhq開発069 回インストール32 週間前に更新
リポジトリ

webmcp について

webmcpは、W3C WebMCP APIを使ってウェブページに呼び出し可能なJavaScriptツールを追加するためのスキルです。ツール定義、セキュリティ、ユーザー確認、SPAの状態に応じた登録管理を扱います。

主な機能

  1. 01ツール名・スキーマ・実行処理の定義
  2. 02入力値の検証と機密データの保護
  3. 03重要な操作でのユーザー確認
  4. 04SPAの状態に応じた登録の更新
  5. 05LLMが選択しやすい説明の作成

活用シーン

  1. 01ブラウザーAIエージェントへのページ機能公開
  2. 02ウェブページへの呼び出し可能なツール追加
  3. 03人が介在するエージェントワークフローの構築

MCP 対応

W3C WebMCP APIの`navigator.modelContext`を使い、AIエージェントやブラウザーアシスタントが呼び出せるページツールを登録する方法を扱います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pillarhq/pillar-skills --skill webmcp

インストール後、Claude Code で/webmcpを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
rules/
descriptions.md
dynamic-registration.md
security.md
tool-definition.md
user-interaction.md

詳細

WebMCP ツール

W3C WebMCP API(navigator.modelContext)を使用してツールを実装すると、AI エージェント、ブラウザーアシスタント、支援技術がページ上の構造化された JavaScript 関数を呼び出せます。

適用する場面

次のような場合に、これらのガイドラインを参照してください。

  • ブラウザーの AI エージェント向けにウェブページへツールを追加する
  • navigator.modelContext を使って呼び出し可能な関数を登録する
  • 既存のページ機能をエージェントに公開する
  • 人間が関与する協調型エージェントのワークフローを構築する

基本ルール

優先度ルール説明
CRITICALtool-definitionすべてのツールには、name、description、inputSchema、execute が必要です
CRITICALsecurityパラメーターを検証し、破壊的な操作は確認を取り、機密データを漏らさないでください
HIGHdescriptions具体的な説明を記述してください。LLM はこれを読んでツールを選択します
HIGHdynamic-registrationSPA の状態変化に応じてツールを登録・登録解除してください
MEDIUMuser-interaction購入、削除、送信には agent.requestUserInteraction() を使用してください

クイックリファレンス

1. ツールの登録(CRITICAL)
navigator.modelContext.registerTool({
  name: "add-to-cart",
  description: "Add a product to the shopping cart by ID",
  inputSchema: {
    type: "object",
    properties: {
      productId: { type: "string", description: "Product ID" },
      quantity: { type: "number", description: "How many to add (1-100)" }
    },
    required: ["productId"]
  },
  execute: async ({ productId, quantity }) => {
    await cartApi.add(productId, quantity ?? 1);
    return { content: [{ type: "text", text: `Added ${quantity ?? 1} to cart` }] };
  }
});
2. 機能検出(CRITICAL)
if ("modelContext" in navigator) {
  navigator.modelContext.registerTool({...});
}
3. ツールの説明(HIGH)
// Good — specific, includes what it returns
description: "Search available flights. Returns {id, airline, price, departure, arrival}. Does not book — use book-flight to complete."

// Bad — vague
description: "Search flights"
4. ユーザーの確認(MEDIUM)
execute: async ({ productId }, agent) => {
  const ok = await agent.requestUserInteraction(() =>
    confirm(`Buy product ${productId}?`)
  );
  if (!ok) throw new Error("Cancelled");
  await purchase(productId);
  return { content: [{ type: "text", text: "Purchased" }] };
}
5. SPA 向けの動的登録(HIGH)
// React — register on mount, unregister on unmount
useEffect(() => {
  if (!("modelContext" in navigator)) return;
  navigator.modelContext.registerTool({ name: "edit-doc", ... });
  return () => navigator.modelContext.unregisterTool("edit-doc");
}, [doc.id]);

使用方法

詳しい説明とコード例については、個々のルールファイルをお読みください。

rules/tool-definition.md
rules/descriptions.md
rules/security.md
rules/dynamic-registration.md
rules/user-interaction.md

すべてのパターンを詳しく説明した完全ガイド:AGENTS.md

コメント