mcp-cap:鎖定 MCP server 能力面變化

前言

在 DSH 生態中,MCP server 通常在運行時聲明其能力,而不是通過 manifest、package.json 字段或 schema 文件預先定義。因此,瞭解一個 server 能做什麼的唯一方法就是啓動它——而啓動這一行爲本身就是信任決策。大多數客戶端在安裝時進行一次信任,此後便不再回顧。

這帶來了三個具體問題:每次運行 npx -y 都會拉取最新版本,工具的真實能力在描述中不可見,且服務器默認會獲得整個環境(包括所有環境變量、token 和會話)。mcp-cap 是一個 DSH 插件,它用於檢查 MCP server 聲明的能力面,將其密封成可 review 的 lock 文件,並在版本變化時通知新增的能力。

插件簡介

mcp-cap 是一個專注於管理員安全和供應鏈安全的 DSH 插件。

  • 定位:用於審計和鎖定 MCP server 的能力面,防止未授權的權限提升。
  • 維護者:liyixuan201211。
  • 類別:admin-security。
  • 許可:MIT。
  • 核心價值:不調用任何 tool(拒絕 tools/call, resources/read, prompts/get),默認只給 server 一個最小環境,且任何環境變量的值都不會被打印或寫進 lock 文件。

核心功能

該插件通過以下方式實現安全隔離與審計:

  1. 拒絕執行工具:通過 allowlist 拒絕 tools/call、resources/read 和 prompts/get 等方法,確保不會真正執行 tool。
  2. 最小環境原則:默認不傳遞完整的 PATH、HOME、臨時目錄等,除非通過 --inherit-env 顯式開啓。這防止了 server 訪問用戶的敏感憑證。
  3. 能力密封:將 server 聲明的能力面寫入 lock 文件,形成可入庫的審計記錄。
  4. 變化檢測:通過 verify 功能檢測能力面變化,並根據嚴重程度返回不同的退出代碼。

安裝與啓用

在 DSH 環境中安裝該插件:

dsh plugin --profile web add github:liyixuan201211/mcp-cap

安裝後,即可使用 mcp-cap 命令行工具。

典型用法

安裝完成後,可以使用以下命令操作 MCP server。

檢查 server 的聲明能力:

mcp-cap inspect -- npx -y @modelcontextprotocol/server-filesystem /srv

密封當前能力面:

mcp-cap seal --out .mcp-cap/fs.lock.json -- npx -y @modelcontextprotocol/server-filesystem /srv

驗證能力面是否發生變化:

mcp-cap verify --lock .mcp-cap/fs.lock.json -- npx -y @modelcontextprotocol/server-filesystem /srv

查看 server 將獲得的環境變量:

mcp-cap env -- npx -y @modelcontextprotocol/server-filesystem /srv

退出代碼與行爲約定

verify 命令通過退出代碼傳達審計結果。以下是核心的退出碼定義:

退出碼 含義
0 操作成功,或 verify 時能力面未變化
1 意外錯誤
2 用法錯誤
3 verify 時檢測到能力面變化(但未升級)
4 verify 時檢測到危險能力的升級
5 無法確定:server 未啓動、未響應 MCP 或協議異常
6 拒絕操作:沒有可對比的 lock 文件,或沒有值得密封的內容

其中,退出碼 5 表示無法確定 server 的狀態(例如 server 未啓動或未響應 MCP 協議),這絕不等於“未發現任何能力”。此外,插件僅根據聲明推斷能力,不會真正執行 tool;這意味着服務器可能存在通過 schema 未提及的方式執行惡意操作的風險,無法完全通過靜態分析發現。

適用場景與注意事項

  • 適用場景:需要爲 MCP server 進行供應鏈安全審計、需要強制執行最小權限原則、需要追蹤 server 版本變更帶來的能力變化。
  • 環境要求:兼容 DSH 版本 >=0.1.5-rc.1 <0.2.0。
  • 權限說明:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。

經過上述步驟,你可以將 MCP server 的能力面鎖定,並在後續運行中通過 verify 時刻保持對權限變更的警覺。

更多細節可參考 GitHub 倉庫 或 社區目錄。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜