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-mcpstdioでは、起動時に環境変数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の順に足していくと、どこまで機械に任せたかが自分で説明できる状態を保てます。スコアは判断材料であり、採否の最終判断は人が持つ運用を前提にしてください。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。