Communityコーディング&開発github.com

mcpaudit-mcp-security

MCPサーバーが宣言する内容をエージェントが接続する前にチェックします。ツール説明文内のプロンプトインジェクション、不可視Unicode(ゼロ幅で印字可能なASCIIをエンコードするタグブロックを含む)、類似・重複ツール名、フレームワーク名の衝突、無制限のシェルシンクなどを検出します。MCPサーバーのレビュー時、MCPインテグレーションのインストール時、サードパーティツールプロバイダーの検証時、または「このMCPサーバーは安全ですか」「これらのツール定義を監査してください」と尋ねられた際に使用します。

mcpaudit-mcp-security とは?

このスキルは、AIエージェント(Claude Code、Cursor、Codexなど)がMCPサーバーに接続する前に、そのサーバーが宣言するツール定義を監査するためのセキュリティツールです。ツール名や説明文に含まれるプロンプトインジェクション、不可視Unicode文字(ゼロ幅のタグブロックを使用して印字可能なASCIIをエンコードするものを含む)、類似または重複したツール名、フレームワークが予約する名前との衝突、無制限のシェルシンクパラメータなど、11種類のチェックを実行します。これは、サードパーティのMCPサーバーを評価する際や、エージェントが異常な動作を示す場合の診断ツールとして有用です。ツール定義のみを読み取り、実際のサーバー実装の動作は検証しないという制限があります。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sushant-me/mcpaudit-mcp-security/tree/HEAD/plugins/mcp-tool-audit/skills/mcp-tool-audit

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

MCPサーバーが宣言する内容をチェック

ツールの説明文はドキュメンテーションではありません。クライアントは、ツールが呼び出される前に tools/list でツール名と説明文を受け取り、それらがモデルのコンテキストに入ります。つまり、説明文は唯一意味のある方法で実行可能です。それは指示を運ぶことができるのです。

これが適用される状況

  • MCPサーバーをエージェントに追加し、それが何を公開するのかを知りたい場合
  • エージェントが呼び出せるサードパーティツールを問うセキュリティレビューがある場合
  • エージェントが異常な動作を示し、ツール説明文が疑わしい場合

実行方法

pip install "git+https://github.com/sushant-me/mcpaudit"
mcpaudit audit tools.json        # 発見があれば終了コード1、なければ0

PyPIではなくリポジトリからインストールしてください。PyPI上の mcpaudit という名前は別の無関係なプロジェクトであり、そのCLIはファイル引数を受け付けません。

tools.json はクライアントが受け取ったものから取得します:mcp-client --list > tools.json、またはベンダーの公開宣言ファイル(何も実行しないので最適)を使用します。パイプも機能します:mcp-client --list | mcpaudit audit -

11のチェック項目

critical — reserved-name-collision:フレームワークがツールテーブル 外 にインストールする名前(set_model_response、google_search、finish)を持つツール。これにより、プリミティブが静かに置き換えられます。

high — instruction-in-declaration、invisible-characters、look-alike-tool-names、destructive-declared-read-only、duplicate-tool-name。

medium / low — confusable-tool-name、missing-annotations、unconstrained-sink-parameter、url-in-description、undocumented-tool。

これらのうち2つは、宣言を読むだけでは確認できません。Unicodeの タグブロック は、印字可能なASCIIを可視幅がゼロのテキストにエンコードし、mcpaudit はそれがデコードしたものを報告します。同じASCIIに正規化される2つの名前(search / ѕearch)は、記憶から書かれた許可リストを無効化します。

トリアージ

重大度の高いものから順に作業します。critical の発見は停止を意味します:接続する前に、それを解決するか、リスクを文書で承認してもらいます。クリーンな結果は結果です。適切に動作するサーバーはゼロ件の発見を生成し、レビュー担当者が迅速に承認できるようになります。

制限

これは 宣言を読み取るものであり、動作を検証するものではありません。サーバーの実装が正しいかどうかを判断することはできず、広告されている内容がモデルの前に置いても安全かどうかのみを判断します。

実施側の機能が必要な場合

承認されたツールセットをポリシーファイルとして固定し、レビュー後にサーバーが静かに説明文を変更した場合にCIを失敗させる(静かに変更されないようにする)機能は、有料版です:MCP Server Security Review(Agensiに掲載予定)。その掲載が有効になるまでは、実例付きのルールリファレンスが https://github.com/sushant-me/mcpaudit-mcp-security にあります。

制限

これは 宣言を読み取るものであり、動作を検証するものではありません。サーバーの実装が正しいかどうかを判断することはできず、広告されている内容がモデルの前に置いても安全かどうかのみを判断します。

関連スキル