Claude Media
パッケージレジストリMCPサーバーでnpm・Cargo・PyPIを横断検索

パッケージレジストリMCPサーバーでnpm・Cargo・PyPIを横断検索

npm・Cargo・NuGet・PyPI・Goを1つのMCPサーバーで検索し、GitHub Security Advisoryで脆弱性も横断照会できます。npm専用の監査ツールとの使い分けも扱います。

npm・crates.io(Cargo)・NuGet・PyPI・Go(pkg.go.dev)にはそれぞれ公式のMCPサーバーがありません。Artmann/package-registry-mcpはこの5つのレジストリを1本のMCPサーバーにまとめ、パッケージ検索・詳細情報・バージョン一覧に加えてGitHub Security Advisoryでの脆弱性照会までカバーします。npm依存関係の監査だけに絞るならqianniuspace/mcp-security-auditという選択肢もあります。本記事は両者の役割の違いと、Claude Codeへの追加手順を扱います。

package-registry-mcpとは何か

package-registry-mcpはnpmパッケージとして配布されているMCPサーバーで、Claude・Cursor・Copilotなど複数のAIアシスタントから利用できます。対応するのはnpm・crates.io・NuGet・PyPI・Goモジュールの5レジストリで、パッケージのメタデータ・依存関係・バージョン履歴をリアルタイムに取得します。Node.js 18以上またはBun runtimeがあれば動作します。

5つのレジストリで何ができるか

レジストリごとに提供される機能には差があります。npm・crates.io・NuGetは検索とパッケージ詳細・バージョン一覧の3種類が揃いますが、PyPIとGoは検索APIそのものが存在しないため、詳細情報とバージョン一覧の2種類に限られます。

レジストリ検索パッケージ詳細バージョン一覧
npm検索パッケージ詳細バージョン一覧
crates.io(Cargo)検索パッケージ詳細バージョン一覧
NuGet検索パッケージ詳細バージョン一覧
PyPI検索検索APIなしパッケージ詳細バージョン一覧
Go(pkg.go.dev)検索検索APIなしパッケージ詳細バージョン一覧

PyPIとGoで検索ができないのはこのMCPサーバーの制約ではなく、レジストリ側がJSON検索APIを公開していないためです。READMEには「PyPIの検索はpypi.org/search/を直接使ってほしい」と明記されています。パッケージ名が分かっている前提での詳細照会・バージョン確認は5レジストリとも変わらず使えます。

各パッケージ詳細ツールが返す情報はメタデータ(名前・説明・バージョン・ライセンス)・依存関係・メンテナー情報・リポジトリリンク・直近50件のバージョン履歴で共通しています。「reactの最新バージョンと依存関係を教えて」「serdeクレートのダウンロード数を教えて」のように、レジストリを意識せず自然言語で聞くだけでツールが自動的に選ばれます。

検索系・バージョン一覧系のツールにはどちらもlimitパラメータがあり、検索は1〜100件(既定10件)、バージョン一覧は1〜1,000件(既定100件)まで指定できます。大量のバージョン履歴を一度に取得したい場合(廃止予定バージョンの洗い出しなど)は、limitを明示的に引き上げて聞くとより多くの結果を一度に受け取れます。Goモジュールだけは指定形式が他と異なり、パッケージ名ではなくgithub.com/gin-gonic/ginのようなモジュールパスをそのまま渡す必要があります。

NuGet・.NETプロジェクトでの使い方

.NETプロジェクトの依存関係を確認したい場合も、他のレジストリと同じ感覚でNuGetのツールを呼び出せます。「Newtonsoft.Jsonの最新バージョンと対象フレームワークを教えて」と聞けば、get-nuget-package-detailsが対象フレームワーク(Target Frameworks)・ダウンロード統計・検証ステータス・プロジェクト/ライセンス/アイコンURLまで含めて返します。npmやCargoに比べてNuGetはメタデータの粒度が細かく、対象フレームワークのようなNuGet特有の情報も一度の呼び出しで確認できます。

依存パッケージの脆弱性を横断で調べる

package-registry-mcpはGitHub Security Advisory Databaseへの照会ツールも持ちます。search-github-advisoriesecosystem(npm/pip/maven/nuget/go/rust/rubygems/composer/pub/swift/erlang/actions)・severity(critical/high/medium/low)・type(reviewed/malware/unreviewed)・cveIdで絞り込め、get-package-advisoriesはパッケージ名を指定してそのパッケージに影響する既知の脆弱性を一覧できます。

「lodashに影響するcriticalな脆弱性はある?」「npmエコシステムで直近登録されたmalware系アドバイザリを教えて」のような聞き方をすれば、そのままGHSAを横断検索した結果が返ります。1つのパッケージだけでなく、エコシステム単位・深刻度単位で見渡せるのがこのツールの強みです。

GHSA IDが分かっている場合はget-github-advisoryでピンポイントに詳細を取れます。CVSSスコア・影響を受けるバージョン範囲・修正済みバージョン・CWE分類・参考リンクまでを1回の呼び出しでまとめて取得できるので、「このアドバイザリの深刻度と対象バージョンを教えて」という聞き方がそのまま通ります。既存のGitHub MCPサーバーを併用していれば、見つけた脆弱性に対応するIssueがリポジトリに既に作られているかをそのまま確認する流れも組めます。

npm専用ならmcp-security-auditという選択肢もある

同じ「パッケージの脆弱性を調べる」目的でも、qianniuspace/mcp-security-auditはnpm/pnpm/yarnの依存関係監査に特化したMCPサーバーです。両者は守備範囲と出力の粒度が異なるので、用途に応じて使い分けます。

観点package-registry-mcpmcp-security-audit
対象レジストリpackage-registry-mcpnpm/Cargo/NuGet/PyPI/Go横断mcp-security-auditnpmのみ(pnpm/yarnにも対応)
脆弱性データ源package-registry-mcpGitHub Security Advisory Databasemcp-security-auditnpm registryのセキュリティ情報
出力形式package-registry-mcpアドバイザリの一覧(GHSA ID・CVSS・CWE等)mcp-security-audit深刻度別のレポート+修正推奨バージョン
向く場面package-registry-mcp複数言語のプロジェクトを横断で棚卸ししたいmcp-security-auditnpmプロジェクトの依存関係を定期的に監査したい

複数言語のモノレポで「まずどのエコシステムに何件のcritical脆弱性があるか」を俯瞰したいならpackage-registry-mcp、npmプロジェクトのpackage.jsonに対してnpm audit相当のレポートをClaude経由で継続的に回したいならmcp-security-auditが向きます。両方を同時に繋いでも競合しません。

Claude Codeに追加する手順

package-registry-mcpはnpxで即座に起動できます。

claude mcp add -s user package-registry npx package-registry-mcp

Claude Desktopの場合はclaude_desktop_config.jsonに次のブロックを追加します。

{
  "mcpServers": {
    "package-registry": {
      "command": "npx",
      "args": ["package-registry-mcp"]
    }
  }
}

mcp-security-auditも同様にnpx経由で追加できます。

claude mcp add-json mcp-security-audit \
  '{"command":"npx","args":["-y","mcp-security-audit"]}' \
  -s user

どちらもAPIキーや認証は不要です。パッケージレジストリとGitHub Security Advisory Databaseは公開APIなので、追加してすぐに使い始められます。MCPサーバー追加コマンドのスコープの違いはClaude Code MCP設定ガイドに詳しくまとめています。

よくあるつまずき

  • PyPIパッケージを検索しようとしてエラーになる: PyPIには検索APIが無いため、get-pypi-package-detailsにはパッケージ名を正確に渡す必要があります。あいまい検索はpypi.org側で行ってから名前を確定してください。Goモジュールも同様です
  • ecosystemパラメータのスペルミスで結果が0件になる: GHSA検索のecosystempip(PyPIではなくpip)・rust(Cargoではなくrust)のように、レジストリ名とは異なる値を使います。パッケージ検索側のレジストリ名とアドバイザリ検索側のecosystem値を混同しないようにします
  • crates.ioやNuGetのツールでnameにバージョン範囲を渡してしまう: 各ツールのname引数は完全一致のパッケージ名のみを受け付けます。バージョン指定は別のget-*-package-detailsの戻り値から確認します
  • mcp-security-auditの結果がnpm auditコマンドの出力と微妙に違う: データソースが異なるため、検出件数や深刻度の判定が完全に一致するとは限りません。最終判断はどちらか一方に頼らず、両方の結果を突き合わせて確認するのが安全です

よくある質問

package-registry-mcpmcp-security-auditはAnthropic公式のプロダクトですか

いいえ。どちらも個人開発者が公開しているOSSで、npm・crates.io・PyPIなどレジストリ運営元の公式サーバーでもありません。Claude Codeの標準的なMCP追加手順で繋げる、サードパーティ製のMCPサーバーです。

認証不要とのことですが、大量に呼び出すとレート制限に引っかかりませんか

GitHub Security Advisory系のツールはGitHubの公開APIを経由します。GitHubの公式ドキュメントによれば、未認証のAPIリクエストは1時間あたり60回、認証済みなら5,000回まで許可されます。READMEにはこのMCPサーバー自身が認証トークンを設定する仕組みの記載が無いため、脆弱性照会を短時間に何十件も連続実行するような使い方では、未認証枠の上限に達する可能性があります。通常のパッケージ検索・詳細照会(npm/crates.io/NuGet/PyPI/Go)は各レジストリ自身のAPIを使うため、この制限とは別枠です。

モノレポでnpmとCargoが混在している場合はどう使い分けますか

使い分けは不要です。package-registry-mcpは1つのMCPサーバーで5レジストリすべてを扱うため、「このMonorepoのnpm依存とCargo依存の両方でcritical脆弱性が無いか確認して」のように言語をまたいだ指示をそのまま投げられます。

まとめ

package-registry-mcpはnpm・Cargo・NuGet・PyPI・Goの5レジストリとGitHub Security Advisory Databaseを1本のMCPサーバーで扱える横断ツールです。npmプロジェクトの依存関係監査に絞るならmcp-security-auditも選択肢に入ります。どちらも認証不要のnpx起動で、おすすめMCPサーバー10選の候補に加える価値があります。接続後の許可範囲の考え方はMCPセキュリティガイドも参考にしてください。複数言語のリポジトリを1人〜少人数で見ているチームほど、レジストリを行き来する手間が省ける恩恵は大きくなります。

この記事を共有:XはてブLinkedIn