mcp-scanner – プロンプトインジェクションと安全でないエージェント向け Python MCP スキャナ

mcp-scanner は、Model Context Protocol (MCP) サーバーおよびエージェントのツール群を対象に、プロンプトインジェクション、ジェイルブレイク、安全でないツールパターンをスキャンするオープンソースの Python ツールです。決定論的な YARA 風チェックと大規模言語モデル(LLM)ジャッジを用いて、リスクの高いプロンプトを分類します。また、このプロジェクトは Cisco の AI Defense Inspect API とも統合されています。

Image

概要

MCP エンドポイントは、新たな攻撃面をさらけ出します。それは、信頼できないプロンプトテンプレートやツール記述子を取り込むエージェントフレームワークです。mcp-scanner はこれらのポイントを自動的に監査します。ローカルのコードベースや稼働中のエンドポイントをスキャンし、脆弱なプロンプト処理や開放されたツールフックを検出し、LLM ジャッジでリスクをランク付けします。レッドチームにとっては迅速な偵察手段となり、防御側にとってはリリース前に安全なプロンプト運用を徹底するためのツールとなります。

従来の Web スキャナとは異なり、mcp-scanner はエージェントのセマンティクスを理解します。Burp SuiteOWASP ZAP、および fuzzing archive で扱われている実績あるリコン・ファジングツールと組み合わせることで、検出結果をさらに拡張できます。

機能

  • 3 つのスキャンエンジン: 決定論的なシグネチャマッチング、コンテキストに応じたトリアージを行う LLM ジャッジ、そして解析を強化する Cisco AI Defense Inspect API 連携。
  • 2 つの動作モード: アドホックなチェック用のコマンドラインスキャナ、もしくは自動化パイプライン向けの REST API サーバ。
  • 認証対応: 明示的な認証パラメータや OAuth トークンを受け取り、保護された MCP エンドポイントを安全にテスト可能。
  • カスタムルール: エンゲージメントスコープに合わせて、YARA 風シグネチャを拡張・調整可能。
  • 構造化レポート: チケッティングや継続的モニタリングシステムにそのまま投入できる JSON とテキストサマリを出力。

インストール

ソースからインストールする場合:

git clonehttps://github.com/cisco-ai-defense/mcp-scanner

cd mcpscanner

# uv でインストール(推奨)

uv venvp<Python version less than orequal to3.13>/path/to/your/choice/of/venv/directory

source/path/to/your/choice/of/venv/directory/bin/activate

uv pip install.

# もしくは開発モードでインストール

uv pip installe.

PyPI から直接インストールする場合:

uv venvp<Python version less than orequal to3.13>/path/to/your/choice/of/venv/directory

source/path/to/your/choice/of/venv/directory/bin/activate

uv pip install ciscoaimcpscanner

環境設定

スキャンを実行する前に、必要な環境変数を設定します。以下の例は公式リポジトリからのもので、Cisco AI Defense および LLM 連携の典型的な設定を示しています。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# Cisco AI Defense API(任意)

export MCP_SCANNER_API_KEY=“your_cisco_api_key”

export MCP_SCANNER_ENDPOINT=“https://us.api.inspect.aidefense.security.cisco.com/api/v1”

# AWS Bedrock Claude(AWS 認証情報・プロファイル利用)

export AWS_PROFILE=“your-profile”

export AWS_REGION=“us-east-1”

export MCP_SCANNER_LLM_MODEL=“bedrock/anthropic.claude-sonnet-4-5-20250929-v2:0”# 任意の AWS Bedrock 対応モデル

# AWS Bedrock Claude(API キー/Bearer トークン利用)

export MCP_SCANNER_LLM_API_KEY=“bedrock-api-key-…”# Amazon Bedrock -> API Keys で生成

export AWS_REGION=“us-east-1”

export MCP_SCANNER_LLM_MODEL=“bedrock/us.anthropic.claude-sonnet-4-5-20250929-v2:0”# 任意の AWS Bedrock 対応モデル

# LLM プロバイダの API キー(LLM アナライザに必須)

export MCP_SCANNER_LLM_API_KEY=“your_llm_api_key”  # OpenAI

# LLM モデル設定(任意 – デフォルトあり)

export MCP_SCANNER_LLM_MODEL=“gpt-4o”  # 任意の LiteLLM 対応モデル

export MCP_SCANNER_LLM_BASE_URL=“https://api.openai.com/v1”  # カスタム LLM エンドポイント

export MCP_SCANNER_LLM_API_VERSION=“2024-02-01”  # API バージョン(必要な場合)

# Azure OpenAI の例

export MCP_SCANNER_LLM_BASE_URL=“https://your-resource.openai.azure.com/”

export MCP_SCANNER_LLM_API_VERSION=“2024-02-01”

export MCP_SCANNER_LLM_MODEL=“azure/gpt-4”

# 拡張思考モデル(タイムアウト長め)用

export MCP_SCANNER_LLM_TIMEOUT=300

mcp-scan を実行する前に、これらの値を自分の環境やローカル LLM エンドポイントに合わせて調整してください。このツールは OpenAI、Azure OpenAI、AWS Bedrock、Ollama や vLLM などのローカルバックエンドをサポートしています。

使い方

mcp-scanner は対話的にもバックグラウンドサービスとしても実行できます。典型的なワークフローは次のとおりです。

  • LLM または AI Defense エンドポイント向けの認証情報と環境変数を設定する。
  • 対象の MCP サーバーまたはローカルリポジトリに対してクイックスキャンを実行する。
  • LLM ジャッジを有効にして結果を絞り込み、ノイズを低減する。
  • 結果を JSON としてエクスポートし、トリアージやダッシュボードに利用する。

コマンドパターンの例:

# 既知の設定ファイルに定義されたすべてのサーバーに対し、YARA のみでスキャン

mcpscannerscanknownconfigsanalyzers yaraformat summary

# 詳細な出力

mcpscannerscanknownconfigsanalyzers yaradetailed

攻撃シナリオ

目的: 組織の MCP デプロイメント内に存在する安全でないプロンプトや露出したツールフックを特定する。

  1. DNS、リポジトリ、クラウドインベントリから、想定される MCP エンドポイントを列挙する。
  2. MCP メタデータエンドポイントに到達可能であることを確認する。
  3. まずシグネチャモードで mcp-scanner を実行し、エスケープされていない変数や直接的なシステムコールを用いるプロンプトをフラグする。
  4. LLM ジャッジを有効にし、最もリスクの高いテンプレートや記述子を優先度付けする。
  5. 検証済みの検出結果をラボ環境で再現し、悪用可能性と対策手順を実証する。

レッドチームにおける有用性

偵察フェーズにおいて、mcp-scanner を使うことで、より深いエクスプロイトに進む前に MCP エンドポイントの脆弱なプロンプト処理をテストできます。発見までの時間を短縮し、AIPentestKitPyRIT といった、Darknet で既に取り上げられているツール群に有用なデータを供給します。フラグされた各プロンプトは、さらなる調査に値するインジェクションやエージェント悪用のベクタを示している可能性があります。

検知と緩和

  • 監視: ログ内の繰り返されるプロンプトパターンやテンプレート変数インジェクションを監視する。
  • 制限: エージェントのツール記述子に対し、認証と許可リストを強制する。
  • サニタイズ: 実行前にプロンプトテンプレートを検証し、安全でないトークンを除去する。
  • 統合: ZAP や Burp を Web アプリケーションテストのパイプラインに組み込むのと同様に、mcp-scanner を CI/CD や MCP デプロイメントチェックに組み込む。

比較

Web スキャナとの比較: mcp-scanner はプロンプトとツールのセマンティクスに特化しており、一般的な HTTP スキャナでは見逃される問題を検出します。

手動コードレビューとの比較: シグネチャエンジンと LLM エンジンが単純作業を自動化しますが、悪用可能性の最終確認には依然として人手によるレビューが必要です。

Discover more

クラシックなプロキシツールとの比較: ZAPBurp はトランスポート層テストにおいて依然として不可欠であり、mcp-scanner はエージェントロジックをカバーすることでそれらを補完します。

まとめ

mcp-scanner は、MCP サーバーやエージェントフレームワーク全体にわたるプロンプトインジェクションや安全でないツールパターンを高速かつ自動的に洗い出す手段を提供します。プロキシやファザと同じ偵察ツールキットに加えるべき存在です。エージェントシステムの台頭により、これはすべてのレッドチームおよび AppSec ワークフローにとって喫緊の追加要素となっています。

mcp-scanner の詳細やダウンロードはこちらから確認できます: https://github.com/cisco-ai-defense/mcp-scanner

Reader Interactions

翻訳元: https://www.darknet.org.uk/2025/10/mcp-scanner-python-mcp-scanner-for-prompt-injection-and-insecure-agents/

ソース: darknet.org.uk