Claude Media
ClaudeでSocket MCPを使い、依存パッケージの安全性スコアを確認する

ClaudeでSocket MCPを使い、依存パッケージの安全性スコアを確認する

Socket MCPをClaude Codeにつなぎ、depscoreで依存パッケージのスコアを引く手順。OAuthのつまずき、権限の絞り方、スコア20未満の導入を止めるhookまで。

Socket MCPは、npmやPyPIなどの依存パッケージについて、Socketが付けたセキュリティスコアをClaudeの会話の中で引けるようにするMCPサーバーです。「このパッケージを入れて大丈夫か」を、インストールの前にClaude Codeへ確認させる使い方に向いています。

ここではClaude Codeへの接続手順、最初にはまりやすいOAuthの注意点、depscoreの呼び方、権限とCLAUDE.mdでの絞り方、スコアが低いパッケージの導入を止めるhookまでを順に扱います。同じ脆弱性対策でも、コードの脆弱性スキャンが主題の場合はSnyk Studioの導入手順を参照してください。

Socket MCPで何が確認できるか

Socket MCPは、Socketの依存パッケージ向けスコアとメタデータを、MCP経由でAIアシスタントに渡すサーバーです。READMEは「パッケージ1つの採点、package.jsonの監査、危険な依存の洗い出し」を会話の中でできると説明しています。

Claudeのコネクタページでは「Anthropic verified」の表示があり、掲載は2026年4月です。ページの説明では、脆弱性とマルウェア、サプライチェーンのリスク、コード品質とメンテナンス、ライセンスの4観点で評価し、0〜100のスコアを5つの観点で返すとされています。

READMEが挙げる特徴のうち、使い始める前に押さえておきたいのは次の点です。

  • npm、PyPI、cargo、Maven、NuGet、RubyGems、Go Modulesなど複数のエコシステムに対応する
  • 1回のリクエストで複数の依存をまとめて照会できる
  • ホスト型サーバー(https://mcp.socket.dev/)はOAuthでサインインする。APIキーは要らない
  • 自分でホストする経路もあり、その場合はAPIトークンを使う

READMEには「early development and rapidly evolving」とあり、仕様は動いています。ツール名や引数は、導入前にリポジトリのdocs/service.mdで見直してください。

ツールは7つ — コネクタページの1つとの差

READMEの一覧では、公開されているツールはdepscore、organizations、alerts、threat_feed、package_files、package_file_contents、package_file_grepの7つです。一方、Claudeのコネクタページの「Tools」欄に載っているのはdepscoreだけです。

どちらが古いのかはページ上では判断できません。実際に接続したら/mcpで見えるツール一覧を基準にするのが確実です。

ツール用途Socketアカウントの組織
depscore用途パッケージのスコアを照会するSocketアカウントの組織不要(公開データ)
package_files用途パッケージの公開ファイル一覧を見るSocketアカウントの組織不要
package_file_contents用途1ファイルを読む(最大1MBのテキスト)Socketアカウントの組織不要
package_file_grep用途1ファイルを正規表現で検索するSocketアカウントの組織不要
organizations用途所属する組織の一覧(org_slugを得る)Socketアカウントの組織必要
alerts用途組織のアラート(深刻度・カテゴリで絞れる)Socketアカウントの組織必要
threat_feed用途マルウェアやタイポスクワットの検出一覧Socketアカウントの組織必要

右の列は、各ツールの引数にorg_slugがあるかどうかの整理です。ホスト型サーバーは、depscoreを含む全ツールの呼び出しにSocketのサインインを求めます。「組織が要らない」は、組織の登録が要らないという意味で、サインインは別です。

package_filesで一覧を取り、返ってきたハッシュをpackage_file_contentsかpackage_file_grepに渡す、という2段階で使います。インストール前にpostinstallの中身を読ませたいときに使える組み合わせです。

Claude Codeに接続する

ホスト型サーバーへの接続は、次の1行です。

claude mcp add --transport http socket-mcp https://mcp.socket.dev/

追加しただけではまだ使えません。Claude Codeで/mcpを開き、socket-mcpを選んでAuthenticate(すでにサインイン済みならRe-authenticate)を実行し、ブラウザーで承認します。

落とし穴

「authenticated」の表示はサインイン完了を意味しない

READMEは、サインイン前に「authenticated」と出ても、組織系のツールが使える状態とは限らないと注意しています。対応表では、Claude Code 2.1.285で最初のorganizations呼び出しがサインインを求める形で失敗し、明示的にOAuthを通すと成功しています。ステータスの文字だけで判断せず、承認まで実行してください。

Claude Desktopやclaude.aiで使う場合は、カスタムコネクタの追加画面でURLにhttps://mcp.socket.dev/を入れ、接続して認可します。Team・Enterpriseプランでは、組織のオーナーが先に組織設定のコネクタから追加する必要があります。

認証情報の保存まわりで接続エラーが出る場合は、MCPのstored credentialsエラーの対処も参照してください。

depscoreでスコアを引く

接続できたら、READMEの例のとおりに聞きます。

express バージョン4.18.2のセキュリティスコアを確認して

内部ではdepscoreが呼ばれます。引数は次のとおりです。

引数必須既定値説明
packages必須必須既定値なし説明照会するパッケージの配列
packages[].ecosystem必須任意既定値npm説明エコシステム(PURL type)
packages[].depname必須必須既定値なし説明パッケージ名
packages[].version必須任意既定値unknown説明バージョン
platform必須任意既定値なし説明linux-x64などのOS・アーキテクチャのヒント

ecosystemはPURL typeで、JavaScriptはnpm、Pythonはpypi、Goはgolang、Javaはmaven、Rubyはgem、.NETはnuget、Rustはcargo、PHPはcomposerです。packagistはcomposerの別名として受け付けられます。

複数をまとめて照会するときのリクエストは、次の形になります。

{
  "packages": [
    { "ecosystem": "npm", "depname": "express", "version": "4.18.2" },
    { "ecosystem": "pypi", "depname": "fastapi", "version": "0.100.0" }
  ]
}

戻り値は1つのテキストブロックです。スコアの項目はAPIの応答で決まるため、行の骨格だけが示されています。

Dependency scores:
pkg:npm/<package>@<version>: <score fields returned by the API>
  Report: <Socket package report URL>
pkg:pypi/<package>@<version>: No score found

一致するレコードがないパッケージはNo score foundになります。依頼した件数と戻りの件数を見比べないと、欠けた項目に気づけません。スコアが付かなかった理由はdepscoreの説明にありません。No score foundは「安全」ではなく「判断材料なし」と読み、バージョンの綴りやecosystemの指定違いを疑ってください。

使いどころ — 追加の前、棚卸し、中身の確認

Socket MCPが向いているのは、次の3場面です。

  • 追加の前に1回聞く: 新しい依存を入れる直前に、名前とバージョンを渡してスコアを見る。タイポスクワット(名前の似せ)を拾う目的で効きます
  • package.jsonの棚卸し: 依存の一覧をまとめてdepscoreに渡し、スコアの低いものだけを抜き出させる
  • 中身を読んでから判断する: スコアが低い、または初見のパッケージはpackage_filesで構成を見て、package_file_grepでevalやネットワーク呼び出しを探す

棚卸しの依頼文は、範囲と出力の形を決めておくと結果が揃います。

package.jsonのdependenciesとdevDependenciesをすべてdepscoreで照会して。
スコアが低い順に10件を表にして、No score foundのものは別に一覧にして。

スコアの数値だけで採否を決めない運用にしておくと安全です。READMEのhook説明には、express・lodash・reactが75〜97、browserslistを似せたbrowserlistが15、確認済みのマルウェアが0という例が出ています。数値の幅は、判断の目安になりますが、閾値を決めるのは自分です。

権限を絞る — 読み取りだけ自動許可する

Claude CodeのMCPツールは、mcp__<サーバー名>__<ツール名>の形で権限ルールに書けます。サーバー名はclaude mcp addで付けたsocket-mcpです。パッケージ照会だけを毎回の確認なしで通したいなら、depscoreだけを許可します。

{
  "permissions": {
    "allow": [
      "mcp__socket-mcp__depscore"
    ]
  }
}

これを.claude/settings.jsonに置きます。mcp__socket-mcp__*と書けばサーバーの全ツールが対象になりますが、組織のアラートや脅威フィードまで自動で通ります。公開データの照会だけ許可し、alertsやthreat_feedは都度確認のままにしておく構成のほうが、権限の範囲が説明しやすくなります。ルールの管理は/permissionsコマンドの使い方にまとめています。

CLAUDE.mdで「追加前に必ず照会する」を習慣にする

READMEは、クライアントのルールファイル(Claude Code・Claude DesktopならCLAUDE.md)に使い方の指示を書く例を挙げています。そのまま使える形です。

## 依存パッケージの追加
新しい依存を追加する前に、必ずdepscoreでスコアを確認すること。
スコアが低い場合は、代替ライブラリを提案するか、自前で書く案を出すこと。

この指示はあくまでClaudeへの依頼で、守られる保証はありません。強制したいときは次のhookを使います。

スコアが低いパッケージの導入をhookで止める

リポジトリには、Claude Code用のPreToolUse hook「socket-gate」が同梱されています。Claude Codeがインストールコマンドを実行する直前に、公開のSocket MCPサーバーへ照会し、サプライチェーンのスコア(supplyChain)が20未満なら導入を拒否します。

対象のコマンドは、npm install・npm i・npm add・yarn add・pnpm add・bun add、pip install・uv add・poetry add、cargo add・cargo install、gem install・bundle add、go get・go install、dotnet add packageなどです。

導入は、ファイルをコピーして設定に書くだけです(Node.js 24以上が前提)。パッケージからコピーする場合は次のとおりです。

mkdir -p ~/.claude/hooks
cp -R node_modules/@socketsecurity/mcp/dist/socket-gate ~/.claude/hooks/

そのうえで~/.claude/settings.jsonに次を足します。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "node ~/.claude/hooks/socket-gate/socket-gate.cjs"
          }
        ]
      }
    ]
  }
}

hookの一般的な仕組みはClaude Code Hooks完全ガイドで扱っています。

README側に書かれている制約は3つあります。

  • 失敗時は通す設計: ネットワーク、タイムアウト、解析のエラーはすべて許可側(fail open)に倒れる。Socketが落ちても作業は止まらないが、その間は検査も効いていない
  • コマンドラインに名前が出る導入だけが対象: マニフェストを直接編集してからnpm installやpip install -r requirements.txtを打つ場合は、確認すべきパッケージ名がコマンドに現れない。推移的な依存、curl | sh、導入済みパッケージのpostinstallも再検査されない
  • 間接経路は対象外: サブエージェントやシェルを呼ぶMCPツール、Bash以外のツール呼び出しは、matcherを広げない限り対象外

また、hookはOAuthの設定も開始もしません。READMEに書かれているのは「サインインはhookの役割ではない」というところまでで、未サインインの状態でhookがどう振る舞うかの記載はありません。先に/mcpでサインインを済ませてから使ってください。

自分でホストする場合

Socketの外にリクエストを出したくない場合は、サーバーを自分で動かせます。Node.js 24以上とSocketのAPIトークンが要ります。トークンはsocket.devのAPI tokensページで作り、depscoreだけならpackages:listスコープで足ります。

pnpm add -g @socketsecurity/mcp
claude mcp add socket-mcp -e SOCKET_API_TOKEN="your-api-token-here" -- socket-mcp

stdioでは、起動時に環境変数SOCKET_API_TOKENを読みます(SOCKET_API_KEYなどの別名も受け付けます)。複数人で使うならHTTPモードで常駐させる選択肢もあり、その場合は要求ごとにAuthorization: Bearerでトークンを渡せます。

他のクライアントでの確認状況

READMEの互換性表は2026年10月2日付のスナップショットで、検証は9月29日〜10月1日に行われています。対象はorganizationsとdepscoreの2ツールだけです。

クライアントホスト型OAuthの結果
Claude Code 2.1.285ホスト型OAuthの結果初回は失敗し、明示的なOAuthで成功
Codex CLI 0.159.2ホスト型OAuthの結果明示ログイン後に動作
Zed Agent 1.22.0ホスト型OAuthの結果明示OAuth後に動作。アイドル後にタイムアウトが時々出る
Cursor 3.22.12ホスト型OAuthの結果検証条件では失敗(organizationsがUnauthorizedのまま)

Cursorはローカルのstdio(APIトークン使用)ならdepscoreが通ったと報告されています。Claude Desktop、VS Code、Windsurf、Factoryは、この表の検証対象外です。トークンの更新やサーバー側の失効、全ツールの網羅も試されていません。

他の同種コネクタとどう使い分けるか

SocketはパッケージのレジストリとスコアのAPIが入口です。自分のコードの脆弱性を直させたい場合はSnyk Studio、稼働中のアプリのランタイムの脆弱性と依存関係を見たい場合はMiggo MCPが近い選択肢になります。Socketの入口は「入れる前の依存を調べる」ことで、導入前の確認に絞って使えます。

まとめ

Socket MCPの最初の山は、接続そのものより「サインインまで済ませること」です。/mcpでAuthenticateを実行し、depscoreがNo score found以外を返すことを1回確かめてから、権限ルール、CLAUDE.md、hookの順に足していくと、どこまで機械に任せたかが自分で説明できる状態を保てます。スコアは判断材料であり、採否の最終判断は人が持つ運用を前提にしてください。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. github.com/SocketDev/socket-mcp
  2. claude.com/marketplace/connectors/socket
  3. code.claude.com/docs/en/mcp
  4. code.claude.com/docs/en/permissions
この記事を共有:XはてブLinkedIn