エージェントに MCP サーバーを追加するとき、選ぶ基準は名前です。名前は、あなたが読み、同僚が勧め、セキュリティチームが承認したものです。しかしエージェントが実際に実行するコードは、その名前が今日指している先にあるものです。
私たちはこれを Listing Swap(掲載すり替え) と呼んでいます。名前はそのままで、その下が変わる状態のことです。具体的には、公式 MCP レジストリにあるサーバーの現在のバージョンが、同じ名前で最初に公開されたバージョンとは別のリモートエンドポイントのドメイン、または別のパッケージ所有者につながっている状態を指します。
公式 MCP レジストリの 1,075 件のサーバーが、最初の公開時とは別のドメインまたはパッケージ所有者を指しています。そのうち 698 件はタイトルと説明文がまったく同じままでした。
測定内容
2026年10月10日、公式レジストリの全エントリ(41,351 サーバーの 142,002 バージョン)をダウンロードし、各サーバーの現在のバージョンを、その名前で最初に公開されたバージョンと比較しました。すり替えとして数えたのは所有者が変わった場合だけで、サーバーが新しいパス、バージョン、サブドメインに移っただけの場合は含めていません。
| 指標 | サーバー数 |
|---|---|
| レジストリ内のサーバー | 41,351 |
| 複数バージョンを持つサーバー | 17,989 |
| 掲載すり替え | 1,075 (履歴のあるサーバーの 6.0%) |
| パッケージの公開者が別の所有者に変わった | 652 |
| リモートエンドポイントが別のドメインに移った | 377 |
| ローカルパッケージとリモートエンドポイントの間で切り替わった | 47 |
| タイトルと説明文が同じままのすり替え | 698 (65%) |
重要な理由
これらのサーバーが悪意あるものだと言っているわけではありません。ほとんどのすり替えはおそらく通常の出来事です。プロジェクトの名称変更、ホスティングの移転、パッケージの新しいメンテナーへの引き継ぎなどです。問題は、乗っ取りもまったく同じように見え、現状ではどちらも誰にも気づかれないことです。
- レジストリが確認するのは名前であり、接続先ではない。 ある名前空間で公開できることは、その名前空間を管理していることの証明にはなります。しかし、バージョン 2 の接続先をバージョン 1 の接続先と比較する仕組みはありません。
- クライアントは名前を信頼する。 レジストリからのインストールでは、名前が最新バージョンに解決されます。一度与えた承認は、エンドポイントやパッケージ所有者が変わっても改めて求められません。
- 掲載内容は変わらないように見える。 すり替えの3分の2ではタイトルと説明文が変わっていないため、掲載内容を確認する人には何も新しいものが見えません。
これは、Invariant Labs が 2025 年に報告したツール定義の「rug pull」より一段上の層の問題です。rug pull では、承認後にサーバーがツールの説明を変更します。掲載すり替えでは、サーバー自体が何かを変える必要はありません。名前が、別の誰かが運用する別のコードにつながるようになるだけです。
無害な例
天気サーバー io.example/weatherを例に考えます。このサーバーは @example の npm スコープのパッケージで公開されています。チームはこれを承認します。1か月後、同じ名前・同じ説明文でバージョン 1.3 が公開されますが、パッケージは別の人物が運用する別のスコープから提供されるようになっています。エージェントは次回のインストールで 1.3 を取得します。コードの公開者が変わったことをクライアントは一切知らせません。そして新しいパッケージがファイルを読み取ったり、新しい送信先にデータを送ったりする場合、それは古いパッケージに与えた権限のもとで行われます。
対策
MCP サーバーをインストールする場合
- バージョンを固定し、レジストリが対応していればパッケージハッシュやイメージダイジェストも固定してください。
- エンドポイントのドメインやパッケージ所有者の変更は新しいサーバーとして扱い、改めて審査してください。
- インストール前に確認してください。Redthread コネクタを使って ChatGPT または Claude に「この MCP サーバーが Redthread のスキャンに合格したか確認して」と尋ねるか、次のオープンソースツールでバッジを検証してください:
atpp verify。 - インストール済みのものを確認する:
python3 atpp.py check-configがお使いのマシン上で Claude、Cursor、VS Code の設定を読み取り、掲載すり替えが起きたサーバーを警告します(どのように)。
MCP サーバーを公開する場合
- ホスティングを移転したりパッケージを引き継いだりする場合は、掲載内容とリポジトリにその旨を明記し、ユーザーが新しい接続先を信頼できる根拠を示してください。
- パッケージハッシュを公開し、イメージはダイジェストで固定してください。署名付きアーティファクトがあれば、ユーザーは比較する対象を持てます。
レジストリやクライアントを運営する場合
- 名前の横に接続先を表示し、バージョン間で何が変わったかを示してください。
- サーバーのエンドポイントのドメインやパッケージ所有者が変わったときは、改めて確認を求めてください。アプリが新しい権限を求めたときにスマートフォンが確認を求めるのと同じです。
このチェックは無料です
本日から、Redthread によるレジストリの日次スキャンに target-stable チェックが加わりました。各サーバーの署名付きスキャン結果とバッジには、初回公開以降に掲載がすり替えられたかどうかが示されます。件数は レジストリスキャンのページで毎日更新されます。同じチェックは Redthread コネクタを通じて ChatGPT と Claude でも利用できます。
サードパーティの MCP サーバーをインストールするエージェントをチームで運用しており、承認済みサーバーがすり替えられたときに通知する許可リストが必要な場合は、 お問い合わせ。