mcpField
M
MCP Gateway Scan

MCP Gateway Scan

ローカル
github.com/willianpinhoセキュリティ215 週間前に更新

MCP Gateway Scan について

MCP Gateway Scanは、MCPやエージェントゲートウェイを評価する読み取り専用の静的スキャナーです。7つのセキュリティ領域を採点し、根拠の場所を示すほか、サーバーや設定への接続判定も行います。

主な機能

  1. 017領域のセキュリティ採点
  2. 02CONNECT/REVIEW/DO-NOT-CONNECT判定
  3. 03CLI、JSON、CIモード
  4. 04秘密値を伏せる読み取り専用スキャン

活用シーン

  1. 01デプロイ前のゲートウェイ評価
  2. 02接続前のサードパーティMCPサーバー確認
  3. 03赤判定時にCIを失敗させる

MCP 対応

MCPサーバーとして動作し、指定パスをスキャンして領域別スコアと構造化された検出結果を返す `scan_gateway` ツールを提供します。MCPサーバーのリポジトリやクライアント設定も評価できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"willianpinho-mcp-gateway-scan": {
"command": "npx",
"args": [
"-y",
"mcp-gateway-scan"
]
}
}
}
起動コマンドnpx -y mcp-gateway-scan

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-gateway-scan0.1.1

ツール

1

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
cibooleanいいえtrue の場合、CI ゲートの判定も報告します(RED が 1 つでもあれば失敗します)。
pathstringはいスキャンするリポジトリまたはディレクトリのパス(必須)です。

詳細

mcp-gateway-scan

npm version Glama server License: MIT

MCP/エージェントゲートウェイの本番運用準備におけるアンチパターンを対象とする、読み取り専用の静的スキャナーです。 リポジトリを指定すると、7つの観点を赤・黄・緑で数秒で評価します。

**Provenwright MCP Gateway Readiness Audit**を手がけるチームが開発しました。 根拠の索引、スコア付きのギャップマトリクス、90日間のロードマップを含む、出典付きの包括的な監査です。 監査の詳細:provenwright.com/audit

npx mcp-gateway-scan ./path/to/your/gateway

コードと設定をスキャンし、MCP ゲートウェイをデモからインシデントへと変えてしまう失敗要因を特定して、それぞれの場所を正確に出力します。たとえば、モデルが認可を決定する、エラーハンドラーがフェイルオープンする、サプライチェーンが固定されていない、トレースが見えない、支出に上限がない、シークレットがインラインに記述されている、運用上の制御手段がない、といった問題です。

100%読み取り専用です。 ファイルを_読み取る_だけです。コードを実行したり、ネットワークに接続したりすることはなく、シークレットの値を出力することもありません。インラインシークレットが見つかった場合は、値を伏せて場所(<file:line>)のみを報告します。


インストール

# one-off
npx mcp-gateway-scan <path>

# or global
pnpm add -g mcp-gateway-scan
mcp-gateway-scan <path>

Node ≥ 18 が必要です。

使い方

mcp-gateway-scan <path> [options]

Options:
  --json          Machine-readable JSON instead of the terminal report
  --ci            Compact, no-color output for pipelines; exits 1 on any RED
  --no-color      Disable ANSI colors
  -h, --help      Show help
  -v, --version   Print version

Exit codes:
  0  no red dimensions
  1  one or more red dimensions
  2  usage / IO error

「このサーバーに接続してもよいですか?」— 接続判定

実際の認証情報を保持するエージェントにサードパーティの MCP サーバーを接続する前に、対象サーバーを connect に指定すると、同じ7つの観点に基づいて、最も重大な問題を最初に示すCONNECT、REVIEW、DO-NOT-CONNECTのいずれかの判定を1つだけ取得できます。

# the server's repo checkout
mcp-gateway-scan connect ./some-mcp-server

# its MCP client config entry (.mcp.json / claude_desktop_config.json)
mcp-gateway-scan connect ./.mcp.json

# its package manifest
mcp-gateway-scan connect ./package.json

判定では、各観点のスコアを1つの決定にまとめます。

判定条件終了コード
DO-NOT-CONNECTS1(完全侵害クラス)の観点が1つでも赤1
REVIEW具体的または潜在的なリスクがある(S2/S3 が赤、または黄が1つでもある)1
CONNECT静的チェックですべての観点が緑0

スキャンエンジン、--json/--ci フラグ、読み取り専用とシークレットの伏せ字処理の保証は同じです。connect は出力を、接続するかどうかの判定として示し直すだけです。CONNECT が緑でも、良い兆候にすぎず保証ではありません。静的スキャンでは、公開者や実行時の動作を保証できません。

Claude Code/Cursor 内で実行する(MCP サーバー)

同じパッケージをMCP サーバーとして実行すれば、エージェントに「このリポジトリのゲートウェイ準備状況をスキャンして」と話しかけるだけで、会話を通じてスキャンできます。

Claude Code(コマンド1つ):

claude mcp add gateway-scan -- npx -y mcp-gateway-scan mcp

Cursor/任意の MCP クライアント — .mcp.json に追加します。

{
  "mcpServers": {
    "gateway-scan": {
      "command": "npx",
      "args": ["-y", "mcp-gateway-scan", "mcp"]
    }
  }
}

次に、エージェントに scan_gateway ツールを実行するよう依頼します。

  • 入力:{ "path": "<repo or dir>", "ci": false }(ci は省略可能です。CI ゲートの判定が追加されます)。
  • 出力:観点ごとの 🟢🟡🔴 サマリーと構造化された結果。読み取り専用で、指定したパスのみをスキャンします。シークレットの値は伏せられ、場所だけが示されます(値は表示されません)。

同じパッケージで2つのモードを利用できます。mcp-gateway-scan mcp はサーバー(エージェントから使用)で、デフォルトの mcp-gateway-scan <path> はCLI(ターミナルまたは CI で直接実行)です。mcp サブコマンドを使用しても、CLI の動作は変わりません。

Glama から見つけることもできます

mcp-gateway-scan は Glama MCP directory に掲載されています。ツールのスキーマを確認したり、ブラウザーで試したり、掲載ページからコンテナ化されたサーバーを直接デプロイしたりできます。ビルド仕様とリリース手順については、docs/glama-release.md に記載されています。

出力例

  [RED] D2 Fail-close / fail-open posture  S1
        Error handlers on the call path return allow/true/ok or pass — the
        system fails OPEN. A degraded auth/policy check silently becomes
        'allow'. Launch blocker.
        ✗ gateway.ts:23  fail-open on error path  return { allowed: true };

  [GREEN] D6 Security, secrets & identity  S1
        No inline secrets; credentials referenced from a manager/env and
        IDP/OIDC identity wiring is present.
        ✓ docker-compose.yml:7  secret-manager / env reference  DATABASE_URL: op://Production/gateway-db/url

  SCORE
  ┌────────┬──────────────────────────────────────────┬─────────┬──────────┐
  │ Dim    │ Title                                      │ Status  │ Severity │
  ├────────┼──────────────────────────────────────────┼─────────┼──────────┤
  │ D1     │ Tool-access governance & RBAC              │ RED     │ S1       │
  │ ...    │ ...                                        │ ...     │ ...      │
  └────────┴──────────────────────────────────────────┴─────────┴──────────┘

  0 green  0 yellow  7 red

CI に組み込む

--ci は、grep しやすい簡潔なサマリーを出力し、いずれかの項目が赤の場合はゼロ以外の終了コードを返します。そのため、リグレッション(新たなフェイルオープンのハンドラー、ピン留めされていないイメージ、コミットされたシークレット)があるとビルドは失敗します。

# .github/workflows/gateway-readiness.yml
- name: MCP gateway readiness scan
  run: npx mcp-gateway-scan ./gateway --ci
RED    D2 S1 Fail-close / fail-open posture (findings=1)
RESULT green=4 yellow=2 red=1
VERDICT FAIL — red dimension(s) present; see findings above.

7 つの評価項目

項目チェック内容
D1 ツールアクセス/RBACプロンプトに記述された認可、ゲートウェイポリシーレイヤーの欠如
D2 フェイルクローズallow/true/ok/pass を返す catch/except ブロック、タイムアウトの欠如
D3 オンボーディング/サプライチェーン:latest、@main、npx -y …@、ピン留めされていないイメージ。sha256:/integrity は評価対象
D4 オブザーバビリティOTel/traceparent/スパンの有無、ログ内の未加工プロンプト
D5 ルーティング/コストmax_tokens/予算/レート制限/クォータの欠如
D6 シークレット/IDインラインのシークレットリテラル(場所のみ。値はマスキング)。op:///vault:/process.env は評価対象。IDP/OIDC
D7 本番環境への対応キルスイッチ/フィーチャーフラグ、429/レート制限、評価/レッドチームゲートの欠如

各項目は、重大度タグと、一致した証拠(file:line)とともに、🟢 緑/🟡 黄/🔴 赤で評価されます。この評価基準の手法は、OWASP Top 10 for LLM Applications、MCP 仕様(2025-06-18)、OpenTelemetry GenAI のセマンティック規約に準拠しています。

同梱のフィクスチャで試す

mcp-gateway-scan fixtures/secure      # mostly green
mcp-gateway-scan fixtures/vulnerable  # mostly red

fixtures/vulnerable ツリーには、機能しない偽のプレースホルダーシークレット(sk-EXAMPLENOTREAL…、AKIAEXAMPLE…)のみが含まれているため、マスキングされたシークレットの出力を安全に確認できます。

精度

すべての検出結果は、懐疑的なシニアエンジニアにも納得できる根拠を示せることを目指しています。このスキャナーは、プロンプトの内容(システムメッセージの文字列/YAML のプロンプトフィールド)と、パターンを単に説明しているだけのコードとを区別します。そのため、rg 'only use|if the user is admin' を引用したドキュメントコメントは、プロンプト内の認可として検出されませんが、同じ語句が実際のシステムプロンプトに含まれている場合は検出されます。すべての評価項目でコメント行と grep のレシピ/正規表現の説明は除外され、「制御が存在する」というシグナルは文章ではなくコード/設定から照合されます。

これは何か(そして、何ではないか)

これは、高速で無料のヒューリスティックな足がかりとなる、静的パターンスキャナーです。緑のスコアは良好な兆候ですが、保証ではありません。赤のスコアは、修正すべき箇所を具体的に示します。これは、フォールトインジェクションを実行したり、稼働中の IAM/IDP を調査したり、トレースを読み取ったりはしません。そうした詳細な調査を行うのが、根拠を引用したギャップマトリックスと、段階的な90日間の是正ロードマップを提供する、完全版のMCP Gateway Readiness Auditです。

このスキャナー(無料、MIT)完全版 MCP Gateway Readiness Audit(有料)
方法静的なパターンチェック稼働中のコードベースの読み取り専用レビュー
ライブテスト—フォールトインジェクション(F1–F5)、トレース検証
証拠一致した行エビデンスインデックス内の各指摘事項の file:line
成果物7次元スコア根拠を引用したギャップマトリックス+重大度+段階的な90日間のロードマップ
提供方法即時、自動専門家による対応+ライブレビューセッション

完全版の監査が必要ですか? このスキャナーは、無料のヒューリスティックな足がかりです。 **Provenwright MCP Gateway Readiness Audit**では、さらに詳細な調査を行います。 稼働中のコードベースの読み取り専用評価、各指摘事項の証拠(ファイル+行番号)、 根拠を引用したギャップマトリックス、段階的な90日間の是正ロードマップを提供します。

サンプルレポート:provenwright.com/sample/
完全版監査の詳細:provenwright.com/audit
15分間の相談を予約:cal.com/willianpinho
メール:[email protected]

ライセンス

MIT © Willian Pinho

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。