mcp-scan – MCPサーバー向けリアルタイム・ガードレール監視と動的プロキシ

mcp-scanはInvariant Labsによるセキュリティツールで、静的スキャナーとして、またはエージェントとModel Context Protocol(MCP)サーバーの間に入る動的プロキシとして動作します。プロキシモードではトラフィック経路上に配置され、ツール呼び出しをリアルタイムで記録し、ガードレールを適用します。これにより、レッドチームと防御側の双方が、エージェントがMCPツールをどのように使用しているか、そしてプロンプトインジェクションやツール悪用がどこで発生しているかを正確に把握できます。

Image

概要

MCPは、AIエージェントが外部ツールやデータソースとやり取りするための構造化された方法を提供しますが、それらのツールはしばしば不透明な設定ファイルや見えにくいネットワークフローの背後にあります。設定不備のMCPサーバーは、シェルアクセス、コード実行、データ流出経路、あるいはステルス性の高いプロンプトインジェクション連鎖を露出させる可能性があります。mcp-scanは、次の2つのモードを提供することでこれに対処します。

  • スキャンモード:ディスク上のMCP設定を検査し、リスクの高いツール定義を強調表示します。
  • プロキシモード:エージェントとそのサーバー間のライブMCPトラフィックを傍受して監視します。

mcp-scannerのような従来ツールがエンドポイントや設定のバッチスキャンに焦点を当てているのに対し、mcp-scanはエージェントの挙動を継続的かつリアルタイムに可視化します。

機能

  • 自動MCP検出:一般的なエージェント環境向けのMCPクライアント/サーバー設定を特定し、危険な設定がないかスキャンします。
  • プロンプトインジェクション/ツール汚染チェック:信頼できないプロンプトや悪意あるツールがエージェントに影響を与え得るツール定義やフローを検査します。
  • 動的プロキシモード:中間者として動作し、トラフィックを中継しながら、すべてのツール呼び出し・引数・応答を記録します。
  • ガードレールポリシー:YAMLで定義したルールを用いてツール呼び出しのブロック/許可、シークレットやPIIの検出、コンテンツパターンに基づくツール出力のフィルタリングを行います。
  • 監査対応ログ:後日の調査、ハンティング、リプレイのためにトラフィックとガードレールイベントを記録します。

インストール

mcp-scanはシンプルなCLIとして配布されています。プロジェクトのドキュメントでは、完全なローカルビルドなしで利用できるよう、パッケージランナー経由でのインストール方法が示されています。コマンド例:

# uv経由で実行
uvx mcp-scan@latest
# またはnpx経由
npx mcp-scan@latest

本番環境で実行する前に、リポジトリのREADMEで最新のインストール手順とプラットフォーム注意事項を確認してください。

使い方

mcp-scanはオフラインスキャンとライブプロキシの両方をサポートします。典型的な利用パターンは次のとおりです。

# 特定のMCPサーバー設定(例:VS CodeのMCP設定)をスキャンするには次を実行します:
mcp-scan ~/.vscode/mcp.json

以下のオプションはすべてのコマンドで利用できます:

--storage-file FILE    スキャン結果とホワイトリスト情報を保存するパス(デフォルト: ~/.mcp-scan)
--base-url URL         検証サーバーのベースURL
--verbose              詳細なログ出力を有効化
--print-errors         エラー詳細とトレースバックを表示
--full-toxic-flows     有害フローに関与し得るすべてのツールを表示(デフォルトでは上位3件のみ表示)
--json                 リッチテキストではなくJSON形式で結果を出力

ガードレールはYAMLで定義し、特定のクライアント/サーバーの組み合わせに紐づけます。簡略化した例:

<client-name>:  # クライアントの略称(例:cursor, claude, windsurf)
  <server-name>:  # mcp設定におけるサーバー名(例:whatsapp-mcp)
    guardrails:
      secrets: block # シークレットを含む呼び出し/結果をブロック
      custom_guardrails:
        - name: "「error」を含むツール結果をフィルタ"
          id: "error_filter_guardrail"
          action: block # または 'log' のみ
          content: |
            raise "エラーが見つかりました。" if:
              (msg: ToolOutput)
              "error" in msg.content

プロキシモードでは、mcp-scanがMCPクライアント設定を書き換えてローカルプロキシを指すようにし、全トラフィックを転送しつつガードレールを適用し、終了時に元の設定を復元します。

攻撃シナリオ

目的:レッドチーム演習中にmcp-scanをプロキシモードで使用し、MCPツール呼び出しをリアルタイムで監視・悪用する。

  1. MCPサーバーを利用する標的エージェント(例:社内自動化エージェントや開発者アシスタント)を特定する。
  2. MCPクライアントがmcp-scan proxyを経由するように設定する。トラフィックが「エージェント → mcp-scan → MCPサーバー」と流れることを確認する。
  3. 現実的なユーザープロンプトをエージェントに与え、ライブのツール呼び出しストリームを取得する。どのMCPサーバーとツールが、どのパラメータで呼び出されるかをマッピングする。
  4. 過剰な権限を持つツールを探す:ファイルシステムアクセス、シェル実行、広範なネットワークアクセス、任意URLの取得能力など。
  5. プロンプトインジェクションのペイロードや悪意あるツール応答を作成し、プロキシログでエージェントの挙動を観察する。この証拠を用いて、データ流出、ラテラルムーブメント、テナント間アクセスなどの連鎖攻撃を実証する。

レッドチームにおける重要性

レッドチームにとってmcp-scanは、不透明なエージェント挙動を「理解して評価できるもの」に変えます。次のことが可能になります:

  • MCP経由で露出している未文書化ツールや隠れた機能を発見する。
  • ツール呼び出しをリプレイまたは改変し、エージェントのプロンプト処理とツールルーティングが実際にどれほど堅牢かを検証する。
  • プロンプトインジェクションと過剰権限ツールを組み合わせた攻撃連鎖を構築し、防御側が監視または無効化すべきフローを正確に示す。

また、Darknetで扱われているより広範なGenAI評価(HexStrike AIの記事におけるマルチエージェント・オーケストレーションや、「Red Teaming LLMs 2025」で紹介される手法など)とも自然に組み合わせられます。これらでは、ツール呼び出しと委任アクションの理解が重要です。

比較:mcp-scanner vs mcp-scan

機能 mcp-scanner mcp-scan
静的MCP設定/エンドポイントスキャン はい – プロンプトインジェクションと安全でないツールパターンに注力 はい – scanモードで実施
実行時の傍受/プロキシ いいえ – バッチスキャナーとして動作 はい – proxyモードがトラフィック経路にインラインで配置
ガードレールポリシーの強制 限定的、または外部依存 はい – YAMLルールをライブのツール呼び出しと出力に適用
リアルタイムのエージェント挙動監視 いいえ – スキャン結果とログに依存 はい – ツール呼び出しと応答の継続ストリーム
ツール呼び出しの監査ログ 基本的な検出結果の出力 SIEMやハント用パイプラインへの取り込みに適した豊富なイベントログ

要するに、mcp-scannerはMCPサーバーやコードベースに対する広範で再現性のある監査に最適である一方、mcp-scanはライブトラフィック分析、挙動ベースのガードレール、インシデント対応により適しています。

検知と緩和

  • まず監視モードでmcp-scanを展開する:ブロックポリシーに切り替える前に、エージェントが実際にMCPツールをどう使っているかのベースラインを取ります。
  • 高リスクツールに厳格なガードレールを定義する:シェルアクセス、ファイルI/O、ネットワークフェッチャー、DBコネクタなどを対象に、呼び出し元を制限します。
  • 設定変更をアラートする:MCPサーバーやツール定義の変更を監視し、特に不審なプロキシログと組み合わさる場合に注意します。
  • プロキシログを取り込む:SIEMやデータレイクに取り込み、検知エンジニアが疑わしいツール呼び出しシーケンスのハントを作成できるようにします。
  • mcp-scannerとmcp-scanを併用する:mcp-scannerで全サーバーを広くカバーし、mcp-scanで最重要なエージェント経路を深く検査します。

結論

mcp-scanは、GenAIセキュリティにおける重要なギャップ、すなわち「エージェントが実際にツールをどう使っているか」をリアルタイムに可視化する点を埋めます。静的スキャンと動的プロキシを組み合わせることで、レッドチームとブルーチームの双方に、安全なMCP利用を探索・監視・強制するための実用的な手段を提供します。エージェント型ワークフローやマルチツール・オーケストレーションを試しているあらゆる組織にとって、mcp-scanはmcp-scannerと並び、ガードレールスタックの中核として位置づけられるべきです。

詳細の確認やmcp-scanのダウンロードはこちら: https://github.com/invariantlabs-ai/mcp-scan

翻訳元: https://www.darknet.org.uk/2025/11/mcp-scan-real-time-guardrail-monitoring-and-dynamic-proxy-for-mcp-servers/

ソース: darknet.org.uk