mcpField
A
ai-code-scanner

ai-code-scanner

ローカル
github.com/GuardBeeセキュリティ11 日前に更新

ai-code-scanner について

LLMやAIの統合における安全上の問題をコードから検出するMCPサーバーです。モデル出力の危険な処理、キーの露出、プロンプトインジェクションなどを調べ、カスタムルールとSARIF出力にも対応します。

主な機能

  1. 015カテゴリ、10種類のパターンを検出
  2. 02キー露出と危険なモデル出力を確認
  3. 03エージェントのツール権限とプロンプトインジェクションを検査
  4. 04カスタムJSONルールパックを読み込み
  5. 05SARIF 2.1.0形式で結果を出力
  6. 06guardbee.ymlによる設定

活用シーン

  1. 01AI統合におけるモデル出力の処理を確認
  2. 02プロンプトへの個人データ混入を調査
  3. 03組織固有のパターンをセキュリティスキャンに追加
  4. 04CI/CDでスキャンしSARIFの結果を確認

MCP 対応

MCPクライアントにscan_text、scan_file、scan_directory、list_patternsツールを提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"4hmetuyar-ai-code-scanner": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-ai-code-scanner"
]
}
}
}
起動コマンドnpx -y @guardbee/mcp-ai-code-scanner

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

パッケージ
npm@guardbee/mcp-ai-code-scanner0.3.2

ツール

4

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

パラメーター型必須説明
labelstringいいえ検出結果に表示する任意のラベル(例:ファイル名)
contentstringはいスキャンするコードの内容

詳細

@guardbee/mcp-ai-code-scanner

🇬🇧 英語 | 🇹🇷 トルコ語 | 🇨🇳 中国語 | 🇯🇵 日本語 | 🇰🇷 韓国語 | 🇧🇷 ポルトガル語 | 🇪🇸 スペイン語 | 🇩🇪 ドイツ語

npm バージョン npm ダウンロード数 ライセンス:MIT

LLM/AI 連携でよく見られるセキュリティパターンをコードベースからスキャンする MCP(Model Context Protocol)サーバーです。

secret-scanner が漏えいしたシークレットや API キーを探すのに対し、このパッケージはパターンを探します。モデルの出力をどの程度信頼しているか、モデルが呼び出せるツールにどの程度の権限があるか、サードパーティの LLM にどのようなデータが送信されるかなど、静的な認証情報スキャンでは検出できないリスクを調べます。

テレメトリはデフォルトでオフです。GUARDBEE_TELEMETRY=1 を設定すると、サーバー、ツール、成功の有無、処理時間、ファイルパスなどの短いパラメーター値が送信されます。長い文字列や content、token、password などのフィールドはプレースホルダーに置き換えられます。詳しくは @guardbee/mcp-telemetry をご覧ください。

Claude ──► ai-code-scanner ──► Your codebase
              │
              ├─ Client-exposure    (dangerouslyAllowBrowser: true)
              ├─ Output handling    (eval(llmOutput), unvalidated JSON.parse)
              ├─ Excessive agency   (an agent tool named execute_command)
              ├─ Data privacy       (email/national ID interpolated directly into a prompt)
              └─ Prompt injection   (raw request data mixed into a system prompt)

機能

  • 5 カテゴリー、10 パターン — クライアントの露出、出力の処理、過剰な自律性、データプライバシー、プロンプトインジェクション
  • すべての検出結果に、リスクの理由と対処方法(recommendation)が含まれます。「検出した」というだけではありません
  • SARIF 2.1.0 出力 — CI/CD 連携(GitHub Code Scanning など)
  • guardbee.yml による設定ファイルのサポート
  • カスタムルールパック — JSON ファイルを使って、組織固有のパターン(KVKK/GDPR のフィールド名、内部ツール名)を追加して検出範囲を拡張できます。フォークは不要です
  • 36 件のユニットテスト — 組み込みパターンごとに、陽性と陰性(誤検出)のシナリオを用意し、カスタムルールの読み込みと検証もテストします

クイックスタート

Claude Desktop/MCP クライアント
{
  "mcpServers": {
    "guardbee-ai-code-scanner": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-ai-code-scanner"]
    }
  }
}
CLI(CI/CD)
npx @guardbee/mcp-ai-code-scanner scan ./src --fail-on=high --format=sarif > results.sarif

MCP ツール

ツール説明
scan_text指定したテキスト/コードスニペットをスキャンします
scan_file単一のファイルをスキャンします
scan_directoryディレクトリを再帰的にスキャンします(node_modules、.git、dist は自動的にスキップされます)
list_patternsカテゴリー別に、サポートされているすべてのパターンを一覧表示します

検出パターン

カテゴリパターン深刻度意味
クライアントへの露出openai_dangerously_allow_browsercriticalOpenAI キーがブラウザーに漏えいしています
クライアントへの露出client_bundled_ai_api_keycriticalNEXT_PUBLIC_/VITE_/REACT_APP_ 経由で AI キーがクライアントバンドルに含まれています
出力の取り扱いeval_llm_outputcriticalモデルの出力が eval()/Function() によってコードとして実行されています
出力の取り扱いexec_llm_outputcriticalモデルの出力がシェルコマンドに渡されています(コマンドインジェクション)
出力の取り扱いllm_output_dangerously_set_inner_htmlhighモデルの出力が生の HTML として描画されています(XSS)
出力の取り扱いllm_json_no_validationmediumモデルの出力がスキーマ検証なしで JSON.parse されています
過剰な権限excessive_agency_tool_namehighエージェントにシェル/コード実行を許可するツールです
過剰な権限unbounded_agent_loopmedium反復回数に上限のないエージェントループです(コスト/DoS)
データプライバシーpii_field_in_llm_prompthighメールアドレス、国民 ID、カード番号などのデータがプロンプトに直接含まれています
プロンプトインジェクションunsanitized_input_in_system_promptmedium未加工のリクエスト/ユーザーデータがシステムプロンプトに混在しています

これらはヒューリスティックな検出結果です。静的なテキストパターンのスキャンであり、完全な AST 解析ではありません。誤検知を少なくするように設計されていますが、検出結果はすべて手動で確認してください。


設定(guardbee.yml)

ai-code-scanner:
  fail-on: high       # any | critical | high | medium | low | none
  max-files: 5000
  rules-dir: .guardbee/rules   # custom rule packs, see below
  exclude:
    - ".test.ts"
    - "fixtures/"

カスタムルール

組み込みパターンは、AI/LLM 統合でよくあるミスをカバーしていますが、フィールド名や内部規約(たとえば、KVKK の規制対象データを含むプロパティ名)はプロジェクトごとに異なります。1 つ以上の JSON ファイルを .guardbee/rules/ に配置すると(rules-dir で設定可能)、スキャン時に組み込みルールと統合されます。CLI と MCP サーバーの両方に適用されます(list_patterns では (custom) と表示されます)。

ファイルには、単一のルールオブジェクトまたはルールの配列を記述します。

{
  "id": "kvkk_musteri_tc_no",
  "name": "musteriTcNo interpolated into a prompt",
  "category": "data-privacy",
  "pattern": "musteriTcNo",
  "flags": "gi",
  "severity": "high",
  "recommendation": "Mask the national ID before it enters the prompt."
}

category は client-exposure | output-handling | excessive-agency | data-privacy | prompt-injection | cost-control のいずれか、severity は critical | high | medium | low のいずれかです。pattern は JS の正規表現ソース文字列です (flags のデフォルトは "g")。組み込みルールまたは別のカスタムルールと ID が重複するルールは拒否されます。スキャナーは実行を続けますが、標準エラーに問題を報告し、その項目をスキップします。


開発

npm run build
npm test             # 36 unit tests

ライセンス

MIT — GuardBee

フィードバック

質問、アイデア、または誤検知はありますか?GitHub Discussions でスレッドを立てるか、issue を作成してください。GuardBee が役に立った場合は、リポジトリに ⭐ を付けていただけると、ほかの人にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

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

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