cisco-ai-defense/mcp-scanner
Scan MCP servers for potential threats & security findings.
MCP Scanner とは?
MCP Scanner は、Model Context Protocol(MCP)サーバーと、それらが公開するアセット(ツール、プロンプト、リソース、さらにはサーバーコード自体)を検査する Python ベースのセキュリティツールです。3 つの分析エンジンを組み合わせています:
- Cisco AI Defense inspect API – MCP ペイロードを評価できる独自サービス。
- YARA – 既知の悪意のあるコードに対する古典的なパターンマッチングルール。
- LLM ベースの分析 – プロンプト、ツール、コードの安全性を推論する大規模言語モデルのプロンプト。
結果は詳細なセキュリティレポートで、ローカル、CI/CD パイプライン、または REST API 経由で使用できます。
主な機能(README に記載)
| 機能 | 説明 |
|---|---|
| 複数の操作モード | スタンドアロン CLI(mcp-scanner)として実行するか、スキャナーを REST API(mcp-scanner-api)として公開します。 |
| 3 エンジン分析 | YARA、Cisco AI Defense API、LLM を組み合わせて、または個別に使用します。 |
| 脆弱性パッケージスキャン | pip-audit を統合し、Python 依存関係の既知の CVE をフラグします。 |
| 準備性スキャン | タイムアウトやエラーハンドリングの欠如など、本番環境向けの懸念事項を静的にチェックします。 |
| 動作コードスキャン | Docker サンドボックスで実行するか、MCP サーバーのソースコードを静的に分析して悪意のある動作を検出します。 |
| VirusTotal バイナリスキャン | バンドルされたファイル(画像、PDF、実行可能ファイル、アーカイブ)の SHA-256 ハッシュを VirusTotal で検索します。 |
| PyPI および npm サプライチェーンスキャン | パッケージをダウンロードし、隔離された Docker コンテナで実行し、その動作を分析します。 |
| 静的/オフラインスキャン | 事前生成された MCP JSON ファイルを受け入れます – CI/CD やエアギャップ環境に最適です。 |
| きめ細かい認証 | OAuth、ベアラートークン、カスタム HTTP ヘッダー、および Cisco AI Defense、LLM プロバイダー、VirusTotal の明示的な API キー設定をサポートします。 |
| MCP 2.0 プロトコルサポート | 今後の 2026-07-28 プロトコルバージョンをネゴシエートし、レガシーハンドシェイクに自動的にフォールバックします。 |
| カスタム YARA ルール | ユーザーは独自のルールセットを追加して、組織固有のパターンを検出できます。 |
| 包括的なレポート | 複数の出力形式(要約、表、生 JSON、ツール別)と、より深い洞察のための --detailed フラグ。 |
実行方法
- 前提条件 – Python 3.11+、
uvパッケージマネージャー、およびオプションの API キー(Cisco AI Defense、LLM プロバイダー、VirusTotal)。MCP Python SDK(mcp>=2.0.0)がバンドルされています。 - インストール – グローバルツールとして:
またはソースからuv tool install --python 3.13 cisco-ai-mcp-scanneruv syncを使用。 - 設定 – 使用するサービスの環境変数をエクスポートします。例:
export MCP_SCANNER_API_KEY=… # Cisco AI Defense export MCP_SCANNER_LLM_API_KEY=… # OpenAI / Bedrock など export VIRUSTOTAL_API_KEY=… # VirusTotal - クイックスキャンを実行 – YARA のみでリモートサーバーをスキャンする CLI コマンドの例:
または REST API を起動:mcp-scanner --server-url https://mcp.example.com/mcp \ --analyzers yara --format summarymcp-scanner-api --host 0.0.0.0 --port 8080
典型的なユースケース
| シナリオ | MCP Scanner が役立つ理由 |
|---|---|
| 内部 LLM サービスのセキュリティ監査 | MCP プロトコル実装とプロンプト/ツールの内容の両方をチェックし、隠れた悪意のある動作を検出します。 |
| サードパーティパッケージのサプライチェーンレビュー | pypi-scan / npm-scan がパッケージをダウンロードし、サンドボックス化し、動作分析と YARA チェックを実行します。 |
| CI/CD ゲート | 生成された MCP JSON ファイルに対して static サブコマンドを使用して、コードが昇格される前に安全性を強制します。 |
| インシデント対応 | 疑わしい MCP サーバーにバンドルされたバイナリに対して virustotal をすばやく実行します。 |
| コンプライアンス | vulnerable-package は Python 依存関係の既知の CVE をフラグし、LLM/YARA の調査結果を補完します。 |
制限と考慮事項(README より)
- LLM アナライザーには有料の API キー(OpenAI、Bedrock、Azure など)が必要です – ツールはモデルにプロンプトを送信するだけで、モデルをローカルでホストすることはありません。
- VirusTotal ルックアップには API キーが必要です。ファイルのアップロードはオプションで、プライバシーのためデフォルトで無効になっています。
- PyPI/npm パッケージの動作分析はデフォルトで Docker 内で実行されます。Docker を無効にすると(
--no-docker)、コードはプロセス内で実行され、分離性が低くなる可能性があります。 - stdio ベースの MCP サーバーのスキャンでは、サーバーが重い起動作業を実行する場合、より長いタイムアウト(
MCP_SCANNER_STDIO_TIMEOUT)が必要になる場合があります。 - このツールはセキュリティ調査結果に焦点を当てており、問題を自動的に修正または是正しようとはしません。
誰にとって役立つか?
- セキュリティエンジニア – MCP エンドポイントを公開する内部 LLM ベースのサービスを保護します。
- DevOps / CI チーム – MCP サーバーが使用する Python または JavaScript パッケージのサプライチェーン安全性の自動ゲートを希望します。
- MCP ベースのアプリケーション開発者 – ツール、プロンプト、リソースが意図せず悪意を持たないことを確認する必要があります。
- レッドチーム / 監査コンサルタント – YARA シグネチャ、LLM 推論、Cisco の AI-Defense API をターゲットの MCP デプロイメントに組み合わせる簡単な方法を探しています。
結論
cisco-ai-mcp-scanner は、新興の Model Context Protocol エコシステムに特化した、フル機能の Python ネイティブセキュリティスキャナーです。YARA、商用 AI 防御サービス、LLM 推論を組み合わせることで、実務者に MCP サーバー、そのコード、および依存パッケージの安全性を評価するための単一のコマンドライン(または API)インターフェースを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト