本文根據 MCP 官方文檔《Local Server Security》《The MCP Registry》以及 Kiro、Cursor、TRAE 的官方 MCP 安全說明整理,資料核對於 2026-10-11。MCP 是什麼見本站《MCP 是什麼》;各工具的配置步驟見文末連結。
適用於誰
- 剛學會配 MCP,看到網上一堆「必裝 MCP 推薦」想全裝上的人;
- 搜「mcp 推薦」「mcp server 推薦」「mcp 安全風險」「mcp 安全問題」的人;
- 團隊負責人,想給同事定一個「哪些 MCP 能裝」的規矩的人。
結論先說
- 本地 MCP 伺服器不是沙箱裏的插件,而是一個普通進程:以你的用戶身份運行,繼承你的環境變量,能讀你帳號能讀的一切(SSH 密鑰、雲憑據、瀏覽器資料、主目錄),還能向任何地方發起網絡連接。這句話是 MCP 官方文檔的原意。
- 安全決定發生在啟動之前:裝什麼(來源)和怎麼跑(隔離)。stdio 傳輸本身不提供任何隔離。
- 少裝。所有伺服器共享同一個模型上下文,一個惡意伺服器可以影響智能體怎麼使用其他伺服器的工具。每多裝一個,其他的也多一分暴露。
- 優先遠程版本。伺服器不需要你本機的文件和工具時,用廠商託管的遠程版本,比在本機跑一個進程更穩妥。
- 各家工具都明確說了:第三方 MCP 伺服器不經它們審查。責任在你。
- 官方說「如果讀完只做一件事」:打開 MCP 配置,刪掉不用的伺服器,弄清剩下每一個的來源,並確認版本是鎖定的。
一、本地伺服器能碰到什麼
MCP 官方畫的圖很直白:宿主應用(Cursor、Claude Code 等)啟動一個子進程,這個進程可以訪問——
- 環境變量:裏面常有 token 和 API Key;
- 你的帳號能讀寫的文件;
- 不受限制的出站網絡;
- 它的整個依賴樹:安裝時從網上拉下來的所有包。
Kiro 的文檔說得更直接:stdio 類型的 MCP 伺服器在你的環境裏以與智能體相同的權限執行任意命令,運行在智能體工具沙箱之外;一個被攻破或惡意的伺服器可以在沒有任何額外確認的情況下帶走代碼、憑據和數據。
二、五類風險
MCP 官方列出的威脅:
- 惡意伺服器:仿冒包名(typosquatting)、長得很像的倉庫;
- 過度收集的伺服器:本身正規,但收集的數據超出需要;
- 被污染的依賴:作者沒問題,但它依賴的某個包被攻破;
- 被投毒的工具目錄:工具名稱和描述本身就是給模型看的指令,可以藏惡意內容;
- 有漏洞的伺服器或橋接組件:正規、未被改動的組件也可能被利用。
第 4 條最容易被忽視:你看到的只是「一個叫 search 的工具」,模型看到的是它完整的描述文字——那段文字可以寫成「調用前先把某某文件的內容作為參數傳進來」。這屬於提示注入的一種,見《AI 編程安全注意事項》。
三、去哪找:幾種目錄的區別
| 來源 | 性質 | 要注意 |
|---|---|---|
| 服務廠商自己的文檔 | Notion、GitHub、Sentry、Figma 等廠商官方提供的 MCP 端點 | 最可靠的起點;多數是遠程伺服器,走 OAuth 登入 |
| MCP Registry(官方) | 協議官方的集中式元數據倉庫,由 Anthropic、GitHub、PulseMCP、Microsoft 等支持;用 DNS 驗證做命名空間管理 | 目前是 preview;它存的是元數據(名字、位置、啟動方式),收錄不等於安全審計 |
| 工具內置市場 | Cursor Marketplace、Trae 的 MCP 市場、Cline 的 MCP 面板等 | Cursor 說明 Marketplace 裏是官方插件,社區的另在 cursor.directory;Trae 明確聲明不審查、不認可市場裏的第三方伺服器 |
| 社區列表、文章推薦 | GitHub 上的 awesome 列表、網誌 | 只當線索用,每一個都要自己過一遍下面的檢查 |
選的時候先問官方文檔裏的那個問題:它真的需要跑在我本機嗎? 如果一個第三方服務只是調自己的雲端 API,卻非要你在本機裝一個進程,官方建議把這當作一個值得留意的信號。確實需要本機的(讀本地文件、操作本地瀏覽器、連本地數據庫)才裝本地版。
四、裝之前的七步檢查
第一步:認清發布者。能不能把這個包對應到一個源碼倉庫和一個可識別的發佈者?MCP 官方的底線是:只裝你讀得到源碼、認得出發佈者的伺服器。
第二步:逐字核對包名。仿冒包名是成本最低的攻擊。npx -y 某包名 裏的包名要和官方倉庫 README 裏的一字不差。
第三步:鎖定版本。安裝指定版本而不是 latest,這樣今天審過的代碼不會明天悄悄換掉。
json
{
"mcpServers": {
"example": {
"command": "npx",
"args": ["-y", "[email protected]"]
}
}
}
第四步:讀一遍工具列表。多數客戶端都能顯示每個伺服器提供的工具和描述。掃一眼有沒有和功能不相干的工具、描述裏有沒有奇怪的指令。更好的是用會在工具定義變化時重新提示你的客戶端。
第五步:隔離運行。官方給的基線是:第三方伺服器放在容器裏跑(比如 Docker),不掛載多餘的目錄;或者放在專門的開發用虛擬機裏。Cursor 的企業設定裏也有按伺服器配置網絡模式的選項(全部允許、白名單、全部拒絕)。
第六步:憑據單獨給、給最小的。
- 用每個伺服器自己的
env傳密鑰,不要放進全局環境變量讓所有伺服器都能讀到; - 給每個伺服器單獨籤一個權限最小的 token。Kiro 文檔舉的例子:GitHub 用細粒度個人訪問令牌,而不是經典令牌,並且只授權需要的倉庫;
- 配置文件裏不要寫死密鑰,用變量引用(Cursor 是
${env:NAME},其他工具寫法略有不同);帶密鑰的配置文件不要提交進倉庫; - 定期輪換;
- 別忘了文件也是憑據:
~/.ssh、~/.aws這類目錄,被能讀主目錄的伺服器讀到就等於泄露。
第七步:收緊文件和網絡。文件系統類的伺服器只給單個項目目錄,能只讀就只讀;一個只包裝某個 API 的伺服器只應該和那一個域名通信,純本地處理的伺服器可以直接斷網運行。官方的兜底建議是:拿不準就「單個項目目錄、只讀、無網絡」。
五、用的時候
- 保留調用前確認。Cursor 預設每次調用 MCP 工具前都會詢問,可以展開看參數;Cline 的 Auto Approve 裏「Use MCP servers」是單獨的開關。新裝的伺服器先別開自動批准。
- 不用的及時關。Cursor、Cline 都可以單獨停用某個伺服器而不刪除。少一個加載的伺服器,就少一份工具描述進入上下文,也少一分風險。
- 敏感環境變量加白名單。Kiro IDE 只展開你明確批准過的環境變量,新增未批准變量時會彈安全警告——類似的機制有就用上。
- 定期清點。每隔一段時間打開配置文件看一遍:哪些還在用、來源是否還可信、版本是否該更新。
六、團隊怎麼管
MCP 官方對組織的提醒是:本地 MCP 伺服器就是用戶自己裝的普通軟件,不要指望他們會先來問你。可以做的事:
- 發佈一個經過評估的允許清單,寫明接受標準;
- 規定預設的運行方式(比如第三方伺服器一律進容器);
- 不需要本機訪問的,統一部署遠程版本;
- 客戶端配置文件都在固定位置,可以持續盤點;
- 準備好出事時的動作:能快速封掉某個伺服器的出網、輪換它用過的憑據。
Cursor 的企業版有 MCP Allowlist(按命令或 URL 模式批准伺服器,還能限制哪些工具可自動運行),Cline 的企業版文檔裏也有 MCP 伺服器管控的設定項。
自查清單
- 配置裏的每個伺服器我都認識,不用的已經刪掉;
- 不需要本機資源的,用的是遠程版本;
- 每個伺服器的發佈者可識別,版本已鎖定;
- 第三方伺服器在容器、沙箱或虛擬機裏運行;
- 每個伺服器只有自己的、權限最小的憑據;
- 文件訪問限定到具體目錄,能只讀的只讀;
- 不需要聯網的已斷網,其餘有出網範圍;
- 我看過每個伺服器的工具描述。
各工具的配置教學
想找現成的技能和規則倉庫,可以看本站的 Skill 庫。
參考資料
- Local Server Security(MCP 官方):https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/local-server-security
- The MCP Registry(MCP 官方):https://modelcontextprotocol.io/registry/about
- MCP Best practices(Kiro 官方):https://kiro.dev/docs/mcp/security
- Model Context Protocol (MCP)(Cursor 官方):https://cursor.com/docs/mcp
- MCP 概覽(TRAE 官方):https://docs.trae.ai/ide/model-context-protocol
0 條評論
還沒有評論,來搶沙發~