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

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

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

Artmann/package-registry-mcpは、npm・crates.io(Cargo)・NuGet・PyPI・Go(pkg.go.dev)の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はレジストリ側にJSON検索APIがないため、詳細情報とバージョン一覧の2種類に限られます。

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

PyPIとGoで検索ができないのはこのMCPサーバーの制約ではなく、レジストリ側がJSON検索APIを公開していないためです。READMEにはPyPIの検索はpypi.org/search/を、Goの検索はpkg.go.devのサイトを直接使うよう書かれています。パッケージ名が分かっていれば、詳細照会とバージョン確認は5レジストリとも使えます。

「reactの最新バージョンと依存関係を教えて」「serdeクレートのダウンロード数を教えて」のように、レジストリを意識せず自然言語で聞くだけでツールが選ばれます。検索系ツールのlimitは1〜100件(既定10件)、バージョン一覧系は1〜1,000件(既定100件)です。リリース履歴を古い版まで遡りたいときは、limitを引き上げて聞きます。

返る情報の中身はレジストリごとに少しずつ違います。

  • npm: メタデータ・依存関係(実行時・開発時・peer)・メンテナー情報・リポジトリリンク
  • crates.io: キーワードとカテゴリ・ダウンロード数(累計と直近)・features・crateのサイズ
  • NuGet: 対象フレームワーク(Target Frameworks)・ダウンロード統計・検証ステータス・プロジェクト/ライセンス/アイコンのURL
  • PyPI: 作者情報・Pythonの対応バージョン・classifiers・脆弱性情報
  • Go: モジュールパス・公開日・VCS情報・go getコマンドのリンク

どのレジストリでも、詳細ツールは直近50件のバージョン履歴(新しい順)を返します。Goだけは引数がnameではなくmoduleで、github.com/gin-gonic/ginのようなモジュールパスをそのまま渡します。.NETの依存関係を調べるときは「Newtonsoft.Jsonの最新バージョンと対象フレームワークを教えて」と聞くと、NuGetの詳細ツールが対象フレームワークまで含めて返します。

脆弱性は「パッケージ → 個別の勧告 → 修正版」の順にたどる

package-registry-mcpはGitHub Security Advisory Database(GHSA)への照会ツールを3つ持ちます。search-github-advisoriesはエコシステム・深刻度・種別・CVE IDで絞り込む検索、get-package-advisoriesは特定パッケージに影響する勧告の一覧、get-github-advisoryはGHSA IDを指定した詳細取得です。

手順

脆弱性を調べる流れ

  1. 1

    パッケージを指定して勧告を一覧する

    get-package-advisoriesにエコシステムとパッケージ名を渡します。「lodashに影響するcriticalな脆弱性はある?」のように聞けば、深刻度で絞った結果が返ります。

  2. 2

    気になる勧告のGHSA IDで詳細を取る

    get-github-advisoryはCVSSスコア・影響を受けるバージョン範囲・修正済みバージョン・CWE分類・参考リンクを1回で返します。

  3. 3

    修正済みバージョンが実在するかをレジストリ側で確かめる

    勧告の修正済みバージョンを、list-npm-package-versionsなど各レジストリのバージョン一覧と突き合わせます。

特定のパッケージを決めずに「npmエコシステムのmalware系アドバイザリを教えて」と聞く使い方もあります。この検索はsearch-github-advisoriesで、typeにmalwareを指定できます。エコシステム単位・深刻度単位で見渡せるのが、パッケージ別のツールにはない強みです。GitHub MCPサーバーを併用していれば、見つけた脆弱性に対応するIssueが既にあるかを同じ会話で確かめる流れも組めます。

ecosystemの値はレジストリ名と一致しない

アドバイザリ側のecosystemはREADMEで次の値が挙げられています(npm / pip / maven / nuget / go / rust / rubygems / composer / pub / swift / erlang / actions / other)。パッケージ検索側で使うレジストリ名との対応は次のとおりです。

調べたいレジストリecosystemに渡す値
npmecosystemに渡す値npm
PyPIecosystemに渡す値pip
crates.io(Cargo)ecosystemに渡す値rust
NuGetecosystemに渡す値nuget
Goecosystemに渡す値go

severityはunknown / low / medium / high / critical、typeはreviewed / malware / unreviewedから選びます。search-github-advisoriesのlimitは1〜100件で、既定は30件です。

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

qianniuspace/mcp-security-auditは、npm/pnpm/yarnの依存関係を監査することに絞ったMCPサーバーです。READMEによれば、返却例はnpm auditのAPIレスポンスを整形した形で載っています。守備範囲の違いは次のとおりです。

くらべる

どちらを繋ぐか

複数言語を横断

package-registry-mcp

npm・Cargo・NuGet・PyPI・Goを横断し、データ源はGitHub Security Advisory Databaseです。結果はGHSA ID・CVSS・CWEなどを含む勧告の一覧で、言語が混在するモノレポに向きます。

npmプロジェクト向け

mcp-security-audit

結果は深刻度別の脆弱性と修正推奨バージョンで、npmパッケージの依存関係を監査したいプロジェクトに向きます。

mcp-security-auditのREADMEには、脆弱性が見つかったときの返却例が載っています。lodash 4.17.15でseverity: "high"・githubAdvisoryId: "GHSA-p6mc-m468-83gw"・fixedVersion: "4.17.19"・CVSSスコア7.4が返る形です。返却にgithubAdvisoryIdが含まれるので、mcp-security-auditで見つけた勧告をpackage-registry-mcpのget-github-advisoryに渡して詳細を掘る、という組み合わせも考えられます。

Claude Codeに追加する手順

package-registry-mcpはnpxで起動できるので、READMEのコマンドをそのまま使えます。

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

-sはスコープの指定です。Claude Code v2.1.287のclaude mcp add --helpでは、スコープはlocal / user / projectのいずれかで、既定値はlocalと表示されます。userにすると、Claude Codeのドキュメントにあるとおり、マシン上のすべてのプロジェクトで使えるサーバーとして登録されます。

引数にフラグ(-yなど)を渡すサーバーは、--の後ろにコマンドを書きます。同じ--helpの使用例に次の形があります。

# Add stdio server with subprocess flags:
claude mcp add my-server -- my-command --some-flag arg1

mcp-security-auditのREADMEにあるnpx設定(npx -y mcp-security-audit)は、この形でそのまま登録できます。JSON文字列で渡すclaude mcp add-jsonでも同じ設定を追加できます。

claude mcp add -s user mcp-security-audit -- npx -y mcp-security-audit

Claude Desktopではclaude_desktop_config.jsonに次のブロックを追加し、保存後にClaude Desktopを再起動します。ファイルの場所はmacOSが~/Library/Application Support/Claude/claude_desktop_config.json、Windowsが%APPDATA%\Claude\claude_desktop_config.jsonです。

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

どちらもAPIキーの設定項目はREADMEにありません。パッケージレジストリとGitHub Security Advisory Databaseは公開APIなので、追加してすぐ使い始められます。スコープの違いはClaude Code MCP設定ガイドで詳しく扱っています。

よくあるつまずき

  • PyPIやGoのパッケージを名前なしで探したい: PyPIには検索ツールがないため、get-pypi-package-detailsにはパッケージ名を正確に渡す必要があります。あいまい検索はpypi.org側で行い、名前を確定してから呼びます。Goも同様です
  • ecosystemにレジストリ名をそのまま渡してしまう: PyPIはpip、Cargoはrustのように、レジストリ名と違う値を使います。上の対応表で確かめます
  • nameにバージョン範囲を渡してしまう: READMEでは、各ツールのname引数は正確なパッケージ名を渡す引数と説明されています。バージョンはlist-*-package-versionsの戻り値から確認します
  • 深刻度の語が2つのサーバーで違う: package-registry-mcpのseverityはmedium、mcp-security-auditのREADMEはmoderateと書いています。同じ会話で両方を使うときは、深刻度の絞り込み語を混ぜないようにします
  • mcp-security-auditの結果がnpm auditの出力と違う: READMEによれば、返却例は生のnpm auditレスポンスを整形したもので、元のレスポンスは追加のメタデータや別の構造を持つことがあります。件数や深刻度を完全に突き合わせるときは、元のコマンド出力も見ます

よくある質問

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

いいえ。どちらもGitHubの個人アカウントが公開しているOSSで、Anthropicが提供するものではありません。Claude Codeの標準的なMCP追加手順で繋げる、サードパーティ製のMCPサーバーです。

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

GitHubのREST APIドキュメントでは、未認証のリクエストは1時間あたり60回、認証済みの個人は5,000回までとされています。GitHub Security Advisory系のツールがGitHubの公開APIを経由する場合は、この枠が関わります。READMEにこのMCPサーバー自身がトークンを設定する項目は無いので、脆弱性照会を短時間に何十件も連続実行すると、未認証枠の上限に届く可能性があります。パッケージの検索・詳細照会は各レジストリ自身のAPIを使うため、この枠とは別です。

まとめ

複数言語の依存を勧告単位で調べるならpackage-registry-mcp、npmの監査結果をそのまま受け取りたいならmcp-security-auditです。ほかの候補はおすすめMCPサーバー10選にあります。サードパーティ製のサーバーを繋ぐときの許可範囲の考え方は、MCPセキュリティガイドにまとめています。

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