SafeDep Vet MCP について
vet はコマンドラインツールで、依存関係、GitHub Actions ワークフロー、AI エージェントの設定に含まれる悪意あるパッケージ、既知の脆弱性、危険な設定を本番環境への反映前に検出します。開発者と CI パイプラインを対象とし、アカウントは不要でソースコードも送信しません。
主な機能
- 01悪意あるパッケージと既知の脆弱性の検出
- 02修正版バージョンの提示
- 03CEL によるポリシーのコード管理と失敗条件の制御
- 04CycloneDX 形式の xBOM と CBOM の生成
- 05ローカル環境の AI ツール、MCP サーバー、エディター拡張の監査
活用シーン
- 01プルリクエストでの新規依存関係とワークフロー変更の確認
- 02CI での終了コードや SARIF レポートによるビルドの停止
- 03開発者マシン上の MCP サーバーと AI ツールの監査
MCP 対応
endpoint audit コマンドは、開発者マシン上の MCP サーバーを一覧表示し、マルウェアの有無を確認します。vet 自体は MCP サーバーとして動作しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/safedep/vet:v1.20.0ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/safedep/vet:v1.20.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
悪意のあるパッケージ、脆弱性、リスクのある CI ワークフローが本番環境に到達する前に検出します。
メモ
このブランチはアルファ版の vet v2 です。vet v1 は
mainにあり、 最新リリースとして提供されています。v2.0.0 リリースノートでは、 v1 の各コマンドとフラグが v2 でどう対応するかを説明しています。
vet の概要
依存関係、GitHub Actions ワークフロー、AI エージェントの設定は、自分で書いていないコードを実行します。vet はそれらに潜むリスクを検出します。
- 悪意のあるパッケージ。 vet は各パッケージを SafeDep Threat Intel と照合します。Threat Intel は、レジストリに新しいパッケージバージョンが公開されると分析します。
- 既知の脆弱性。 アップグレード先となる修正版も示します。
- リスクのあるワークフロー。 危険なトリガー、テンプレートインジェクション、漏えいしたシークレット、コミット SHA が固定されていないアクションを検出します。
- ロックファイルの改ざんと新しいバージョン。 信頼できないレジストリからのエントリーや、クールダウン期間内のバージョンを検出します。
- ポリシー・アズ・コード。 CEL のルールでスキャンの失敗条件を決定します。保存済みのスキャンに対してルールをテストできます。
- AI と暗号のインベントリ。 コードが呼び出す AI ライブラリと暗号アルゴリズムを一覧表示し、CycloneDX xBOM と CBOM を書き出します。
vet の利用にアカウントは不要で、ソースコードも送信されません。
クイックスタート
brew install --cask safedep/tap/vet@edge
vet scan
vet scan --fail-on high # exit 1 on a high or critical finding
vet scan --base-ref origin/main --fail-on high # report only what a pull request changes
vet report show --report sarif=vet.sarif # write SARIF from the saved scan, with no new scan
インストール
| 配布方法 | コマンド |
|---|---|
| Homebrew | brew install --cask safedep/tap/vet@edge |
| mise | mise use -g 'github:safedep/vet[prerelease=true]@2' |
| Go | go install github.com/safedep/vet/v2/cmd/vet@latest |
| コンテナー | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise はリリース公開の 1 日後にそのリリースをインストールします。install.mdには、最新ビルドのコマンド、リリースバイナリ、ビルド証明書に関する情報があります。
vet がスキャンする対象
| 対象 | 例 |
|---|---|
| ディレクトリ(デフォルト) | vet scan、vet scan ./service |
| Git リポジトリ | vet scan https://github.com/safedep/vet |
| コンテナーイメージ | vet scan oci://alpine:3.20、vet scan image.tar |
| SBOM(CycloneDX または SPDX) | vet scan sbom.cdx.json |
| 単一のパッケージ | vet scan pkg:npm/[email protected] |
| このマシン上のツール | vet endpoint audit |
vet は npm、PyPI、Go、Maven、Gradle、Cargo、RubyGems、NuGet、Packagist、Pub などのロックファイルとマニフェストを読み取ります。また、対象の GitHub Actions ワークフローと AI エージェント設定も読み取ります。これらをインストールしたり実行したりすることはありません。コントロールによって、このデータから検出結果が生成されます。controls.mdを参照してください。
ポリシー
ポリシーでは、スキャンを失敗とする条件を決定します。このファイルを vet-policy.yml として保存します。
version: 2
rules:
- id: no-malware
description: A malicious or suspicious package fails the build.
when: finding.family == "malware"
action: fail
- id: no-workflow-injection
when: finding.control_id in ["dangerous-trigger", "template-injection"]
action: fail
- id: no-critical-vulnerability
when: finding.control_id == "vulnerability" && finding.severity == "critical"
action: fail
- id: new-dependency-age
description: A pull request cannot add a version that is less than 14 days old.
when: package.change == "ADDED" && has(package.days_since_publish) && package.days_since_publish < 14
action: fail
suppressions:
- purl: pkg:npm/[email protected]
reason: The upgrade to 4.18.1 is in pull request 42.
expires: 2026-12-31
新しいスキャンは実行せず、直近のスキャンに適用してテストします。その後、プルリクエストに適用します。
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
有効期限を過ぎると、抑制によって検出結果が隠されなくなります。ルールのフィールドや追加のルールについてはpolicy.mdを、ポリシーを自動作成するAgent Skillについては、それぞれのドキュメントをお読みください。
ユースケース
- プルリクエストのチェック。 vet GitHub Actionは、パッケージ、ワークフロー、または検出結果を追加するプルリクエストにコメントし、攻撃が見つかった場合はチェックを失敗させます。
vet ci initを実行すると、リポジトリに追加できます。 - CI ゲート。 終了コード、GitHub コードスキャン向けの SARIF、GitLab および Bitbucket のレポートについては、ci.mdをご覧ください。
- プルリクエストのレビュー。
--base-refを指定すると、変更によって追加されたパッケージとワークフローのみを報告します。 - xBOM と CBOM。 コードで使用されている AI ライブラリと暗号技術の CycloneDX 1.7 インベントリです。inventory.mdをご覧ください。
- AI エージェント。 vet は Claude Code などのエージェントを検出し、プロンプトを表示せずに JSON を出力します。
- エンドポイント監査。
vet endpoint auditは、開発者のマシン上にある AI ツール、MCP サーバー、エディター拡張機能、グローバル npm パッケージを一覧表示し、マルウェアがないか確認します。
ドキュメント
| ページ | 内容 |
|---|---|
| インストール | すべてのインストール方法とリリースの検証方法 |
| コマンド | すべてのコマンド、そのフラグと終了コード |
| コントロール | コントロールとそのオプション |
| ポリシー | ルール、抑制、ゲート |
| 出力 | レポート形式、保存済みスキャン、設定 |
| CI と AI エージェント | GitHub Actions、GitLab、Bitbucket、エージェントモード |
| インベントリ | コードでの使用状況、AI と暗号技術、xBOM と CBOM |
プライバシー
vet は、各パッケージのデータを取得するため、パッケージの識別情報(エコシステム、名前、バージョン)を SafeDep に送信します。ソースコードやファイルの内容は送信しません。
コミュニティ
- DiscordまたはGitHub Discussionsで質問したり、アイデアを共有したりできます。
- バグは課題トラッカーで報告してください。
- プルリクエストを作成する前に、コントリビューションガイドをお読みください。
vet はクラウドでも実行できます。SafeDep Cloudを使うと、インフラを管理することなく、リポジトリ上で vet を実行できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。