Community程式設計與開發github.com

sushant-me/mcpaudit-mcp-security

在 AI 代理連接到 MCP 伺服器之前,檢查其宣告內容 — 包括工具描述中的提示注入文字、不可見 Unicode、相似或重複的工具名稱、框架名稱衝突以及不受限制的外殼指令參數。適用於審查 MCP 伺服器、安裝 MCP 整合、評估第三方工具提供者,或當有人問「這個 MCP 伺服器安全嗎?」或「審核這些工具定義」時。

mcpaudit-mcp-security 是什麼?

此技能提供一個名為 `mcpaudit` 的 CLI 工具,用於在 AI 代理連接到 MCP 伺服器之前,對其宣告的工具清單執行安全審計。它可以在工具描述中檢測多種潛在的安全問題,包括提示注入嘗試、不可見 Unicode 字元(例如標籤區塊編碼的可列印 ASCII 零寬度文字)、外觀相似或重複的工具名稱、與框架原始工具同名的衝突(如 `set_model_response`、`google_search`、`finish`),以及可能導致命令注入的不受限制參數。此工具可與任何 MCP 用戶端一起使用,使用者只需提供 `tools.json` 檔案(可從用戶端輸出或供應商宣告檔中取得)。審計結果按嚴重性分級:`critical` 表示需要立即處理的框架名稱衝突,`high` 涵蓋指令注入、不可見字元、外觀相似名稱、破壞性宣告唯讀工具及重複名稱,`medium`/`low` 則包括易混淆名稱、缺少註釋、不受限制參數、URL 在描述中及未記錄工具。值得注意的是,像 Zero Width Tag Block 這樣的問題無法透過直接閱讀宣告文件發現,而 `mcpaudit` 會將其解碼並報告。此技能專注於靜態宣告分析,不執行伺服器實作,因此無法驗證伺服器行為的正確性,但能確保其對模型暴露的內容是安全的。

相容平台~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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

檢查 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 -

十一項檢查

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。

其中有兩項無法透過閱讀宣告文件發現。Unicode 標籤區塊會將可列印 ASCII 編碼為零可見寬度的文字,而 mcpaudit 會報告其解碼後的內容。兩個標準化後使用相同 ASCII 的名稱(例如 search / ѕearch)可以繞過基於記憶的允許清單。

分類處理

按照嚴重性由上而下處理。critical 等級的發現是停止信號:在連線之前解決它,或取得書面風險接受。乾淨的結果就是結果——一個行為良好的伺服器會產生零發現,這讓審查人員可以快速批准它。

限制

這僅讀取宣告內容,而非行為。它無法告訴您伺服器的實作是否正確,只能告訴您它宣傳的內容放在模型面前是否安全。

想要執行部分

將核准的工具集固定為政策檔案,以便伺服器在審查後靜默修改說明文件時,無法悄悄變更,而是會導致 CI 失敗——這是付費版本:MCP Server Security Review,在 Agensi 上架。在該清單上線之前,包含範例的規則參考文件位於 https://github.com/sushant-me/mcpaudit-mcp-security

限制

這僅讀取宣告內容,而非行為。它無法告訴您伺服器的實作是否正確,只能告訴您它宣傳的內容放在模型面前是否安全。

相關技能