当初の要望は「世界のオープンソースプラグインの総数を日次更新」でした。その数は存在しません。
同じ日・同じ npm で「MCP サーバの数」を訊くと、キーワードの選び方だけで 2,716 / 8,208 / 70,510 と 25.96 倍ぶれます。
総数を日次で出すと、その日々の変動が測るのは世界の変化ではなくこちらの probe 一覧の編集履歴になります。 これはコネクタ在庫で 3 分母(session 露出 / wired / tool call 換算)を混同し STEP 1463→1464 の訂正を要した誤りと同じ構造です。 したがって本計器は総数を出さず、代わりに「問いの立て方で答えが何倍ぶれるか」を読みとして返します。
| 定義クラス | probe | 計測成功 | min | max | spread | verdict |
|---|---|---|---|---|---|---|
| mcp-server | 3 | 3 | 2,716 | 70,510 | 25.96x | TRUE |
| editor-extension | 2 | 2 | 121 | 17,444 | 144.17x | TRUE |
| cms-plugin | 1 | 1 | 67,532 | 67,532 | — | N/A |
| control | 1 | 1 | — | — | — | N/A |
editor-extension の 144.17x は、片方が誤っているのではありません。
Open VSX が 17,444、npm の keywords:vscode-extension が 121 なのは、エディタ拡張が npm に住んでいないからです。
npm の数字は「拡張の数」ではなく「npm の性質」を測っています。両方を同じ表に載せてあるのは、それを見えるようにするためです。
| probe id | レジストリ | 問い合わせ | クラス | 件数 | verdict |
|---|---|---|---|---|---|
npm:keywords:mcp |
npm | keywords:mcp |
mcp-server | 70,510 | TRUE |
npm:keywords:mcp-server |
npm | keywords:mcp-server |
mcp-server | 8,208 | TRUE |
npm:keywords:modelcontextprotocol |
npm | keywords:modelcontextprotocol |
mcp-server | 2,716 | TRUE |
openvsx:all |
open-vsx.org | (empty search, all published extensions) |
editor-extension | 17,444 | TRUE |
npm:keywords:vscode-extension |
npm | keywords:vscode-extension |
editor-extension | 121 | TRUE |
wordpress:plugins |
api.wordpress.org | action=query_plugins (unfiltered) |
cms-plugin | 67,532 | TRUE |
cratesio:all (control) |
crates.io | summary |
control | 328,952 | TRUE |
total フィールドが存在しません。 JSON のどこにもありません。回帰テストが全キーを走査し、total/sum/grandTotal 等が現れたら落とします。将来の編集で合計欄が復活するのは機能追加ではなく病理の再発なので、出荷ではなくテスト失敗として扱います。spreadRatio = max / min。「答えが問いにどれだけ依存するか」がこの計器の読みです。cms-plugin は WordPress 1 本なので、件数は出しますが verdict は N/A です。1 点では定義ぶれを示せないためで、これは harvest_lag で retention gate を最外に置いたのと同じ「判定できないなら N/A」の扱いです。scripts/comparator/lib/registry-probe.ts probe 定義 + fetch(判断を持たない) scripts/comparator/gauges/plugin_census.ts gauge 本体(純関数・外部アクセスなし) scripts/comparator/run-plugin-census.ts runner test/step1798-plugin-census-test.ts 46 assertion PASS
実行:
npm run comparator:plugin-census # = npx tsx scripts/comparator/run-plugin-census.ts
出力:data/comparator/plugin-census-latest.json(schemaVersion 1)
公開 URL:/data/comparator/plugin-census-latest.json
(_headers の /data/comparator/* → no-cache 規則が既に適用されます)
"aggregate": { "verdict": "N/A", "reason": "No total is computed. Probes measure different populations under different definitions; several overlap (a package can be tagged mcp and mcp-server) and several are disjoint by accident of where a plugin ecosystem publishes. A sum would be a number about this probe list, not about the world, and its daily movement would track edits to this file." }
このフィールドは、総数を探しに来た読み手が「何も無い」と判断して probes から自前で合計を作ってしまうのを防ぐために置いてあります。空欄ではなく、理由つきの拒否を返します。
cms-plugin クラスに 2 本目の probe を足して spread を出せるようにする(Drupal / Joomla 等)