mcpField
M
mcp-config-auditor

mcp-config-auditor

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

mcp-config-auditor について

mcp-config-auditorは、MCPクライアントの設定ファイルとインストール済みサーバー一覧を監査するMCPサーバーです。バージョン未固定、秘密情報、安全でない承認設定、サーバーやスキルの競合を検査し、既定ではサーバーを起動せず設定も送信しません。

主な機能

  1. 01Cursor、Claude Desktop、Windsurf、VS Codeの設定を監査
  2. 02未固定のパッケージとコンテナイメージを検出
  3. 03秘密情報と安全でない承認設定を検出
  4. 04リモート接続とサーバー間のツール競合を検査
  5. 05エージェントスキルの危険な権限や指示をスキャン
  6. 06インストール済みサーバーを検出し許可リストと照合

活用シーン

  1. 01MCPクライアント設定の認証情報露出を確認
  2. 02実行前にMCPサーバーパッケージを確認
  3. 03インストール済みサーバーを組織の許可リストと照合
  4. 04スキルファイルの危険な権限を監査

MCP 対応

MCPクライアントにMCP設定の監査機能を提供します。コマンドラインでは設定ファイルのスキャンや、インストール済みサーバーの検出と許可リストとの照合ができ、サーバーは起動しません。

設定

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

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

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

パッケージ
npm@guardbee/mcp-config-auditor0.3.1

ツール

6

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

パラメーター型必須説明
labelstringいいえ検出結果に表示する任意のファイル名
contentstringはいJSON 設定の生データ

詳細

@guardbee/mcp-config-auditor

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

マシン上のMCPクライアント設定を監査するMCPサーバーです。Cursorのmcp.json、Claude Desktopのclaude_desktop_config.json、Windsurfのmcp_config.json、VS Codeのmcp.jsonを対象とします。

mcp-server-auditorはMCPサーバーのソースを読み取ります。このパッケージは、エージェントが実行するサーバーを決定する設定を読み取ります。これらのサーバーを起動したり、設定を外部に送信したりすることはありません。

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

Claude ──► mcp-config-auditor ──► mcp.json  (or host-wide discover)
              │
              ├─ Unpinned package     (npx -y pkg, @latest)
              ├─ Typosquat            (one edit from a known server package)
              ├─ Secret in env/args
              ├─ autoApprove "*"
              ├─ Remote HTTP without auth
              ├─ Cross-server shadowing (when you pass a tool inventory)
              ├─ Agent SKILL.md (allowed-tools, body, lookalike names)
              └─ Shadow MCP discover  (OWASP MCP09 — host paths + org allowlist)

チェック項目

パターン重大度OWASP意味
unpinned_package高MCP04:2025ランチャー(npx、uvx、pnpm、yarn、bunx、pipx)が、major.minor.patch で固定されていないパッケージを実行します
unpinned_container_image高MCP04:2025docker run / podman run が、@sha256: ダイジェストではなくタグを指定してイメージを起動します
typosquat_package致命的MCP04:2025パッケージ名が、既知の MCP サーバーパッケージ名と1文字の編集で一致します
secret_in_env致命的MCP01:2025認証情報のような値、または長いリテラルを含む機密キーです
secret_in_args致命的MCP01:2025コマンドライン上のトークンです
auto_approve_wildcard致命的MCP02:2025autoApprove / alwaysAllow が * または true です
cleartext_remote高MCP07:2025ループバック以外の http:// URL です
unauthenticated_remote高/中MCP07:2025Authorization / API キーヘッダーもトークン環境変数もない、ループバック以外の URL です
cross_server_tool_shadow高MCP03:20252つのサーバーで同じツール名が使われています
confusable_tool_name致命的MCP03:2025サーバー間で、同形異字または1文字違いのツール名が使われています
cross_server_tool_redirect高MCP03:2025説明文が、モデルに別のサーバーのツールを呼び出すよう指示しています
skill_unrestricted_shell致命的MCP02:2025allowed-tools に制限のない Bash、shell、または * が含まれています
skill_unrestricted_write高MCP02:2025allowed-tools にパス制限のない Write または Edit が含まれています
skill_instruction_override致命的MCP06:2025スキルが、以前の指示を無視するようモデルに指示しています
skill_covert_instruction致命的MCP06:2025スキルが、ユーザーに動作を隠すようモデルに指示しています
skill_secret_file_read致命的MCP01:2025スキルが、.ssh、.env、または類似のファイルを読み取るようモデルに指示しています
skill_at_secret_ref致命的MCP01:2025@ 参照によって認証情報のパスをインライン展開しています
secret_in_skill致命的MCP01:2025スキルファイルにリテラルトークンが記述されています
skill_name_shadow高MCP03:20252つの SKILL.md ファイルで同じ名前が使われています
skill_confusable_name致命的MCP03:20252つのスキル名が、見た目の似た文字だけで異なります
shadow_mcp_server高MCP09:2025discover — ホストにインストールされているものの、組織の許可リストにないサーバーです
allowlist_not_configured中MCP09:2025discover が許可リストなしで実行されました
unreviewed_mcp_server低MCP09:2025許可リストがまだない状態で、discover 中に確認されたサーバーです
mcp_server_drift_across_clients中MCP09:20252つのクライアントで、同じサーバーキーが異なるパッケージ/URLに対応しています

ループバック URL(localhost、127.0.0.1、::1)は、リモートに関する検出項目ではありません。プレースホルダー値(${API_KEY}、changeme)はシークレットではありません。検出されたシークレットの一致箇所はマスキングされます。Bash(git diff:*) はコマンド許可リストであり、制限のないシェルではありません。Read 単独では警告されません。

クイックスタート

{
  "mcpServers": {
    "guardbee-mcp-config-auditor": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-config-auditor"]
    }
  }
}
npx @guardbee/mcp-config-auditor scan .cursor/mcp.json --fail-on=high --format=sarif > results.sarif
npx @guardbee/mcp-config-auditor inventory ./tool-inventory.json
npx @guardbee/mcp-config-auditor discover --allowlist=./mcp-allowlist.json --fail-on=high
Shadow MCP 検出(MCP09)

このマシン上の Cursor/Claude Desktop/Claude Code/Windsurf/VS Code/Gemini CLI/Cline/Zed の既知のパスをたどり、インストール済みの各サーバーを組織の許可リストと照合します。サーバーは起動しません。Claude Code のプロジェクト単位のサーバー(~/.claude.json 内の projects["<path>"].mcpServers)は claude-code:<path> の下に表示されます。Zed の context_servers とコメント付き JSON にも対応しています。

インベントリ。 --format=json を指定すると inventory が追加されます。各サーバーについて、クライアント、設定ファイルのパス、名前、トランスポート、コマンドと引数、バージョンを含む npm/PyPI パッケージと固定済みかどうか、URL、環境変数とヘッダーの名前、自動承認の設定、検出結果が含まれます。秘密情報は一切保持されません。環境変数とヘッダーの値は除外され、--token/--api-key 形式のフラグに続く引数値、KEY=value 形式のペア、プロバイダートークン、接続文字列内のパスワードは [redacted] に置き換えられ、URL からは認証情報とクエリ値が削除されます。--format=text は同じ一覧を、--format=sarif は検出結果を出力します。

組織全体での管理。 --upload を指定すると、インベントリを GuardBee ダッシュボードに送信します(GUARDBEE_API_KEY。gateway.write スコープを持つワークスペースキー)。ダッシュボードにはマシンごとに最新のインベントリが保持されます。デバイス管理ツールまたはログインスクリプトから実行してください。マシンのホスト名、OS、OS ユーザー名が含まれます。--no-user を指定するとユーザー情報は含まれません。

GUARDBEE_API_KEY=gb_… npx @guardbee/mcp-config-auditor discover --allowlist=./mcp-allowlist.json --upload --fail-on=none

許可リストの JSON:

{
  "names": ["filesystem", "github"],
  "packages": ["@modelcontextprotocol/server-filesystem", "@guardbee/mcp-secret-scanner"],
  "hosts": ["mcp.example.com"]
}

または、次の形式の行を指定します:name:filesystem、package:@scope/pkg、host:mcp.example.com、またはサーバー名のみ。

ディレクトリをスキャンすると、mcp.json、mcp_config.json、claude_desktop_config.json、SKILL.md が開かれます。他の名前のファイルをスキャンするには、ファイルパスを指定してください。SKILL.md という名前のファイルは、エージェントスキルとして監査されます。同名スキルや類似スキルに関する検出結果は、ディレクトリのスキャン時に表示されます。1 つのファイルからは他のファイルを確認できないためです。

guardbee.yml:

mcp-config-auditor:
  fail-on: high
  max-files: 5000
  exclude:
    - "fixtures/"

ツールインベントリの形式:

{
  "servers": [
    { "name": "github", "tools": [{ "name": "create_issue", "description": "Open an issue" }] }
  ]
}

クライアント設定にはツールが記載されていないため、シャドーイングの検出にはこのインベントリが必要です。rug-pull-detector は実際の tools/list を取得できます。このパッケージは、そのようなリストをいくつか比較します。

フィードバック

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

コメント

MCP は初めてですか?

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

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