上一篇我們做了 File System MCP,讓 MCP Server 可以讀取我們電腦上的檔案。
但做到這裡,其實就會出現一個問題:
如果 MCP 可以讀檔案,那是不是代表 AI 可以讀我電腦上的所有檔案?
當然不是,這就牽涉到 MCP 裡很重要的一個概念:權限與存取範圍。
上一篇的 File System MCP,我們會指定一個可以存取的資料夾。
例如:
mcp-learning/
├── server.py
└── sandbox/
├── test.txt
├── notes.txt
└── project/
└── info.txt
如果我們把 sandbox/ 設定成 MCP Server 可以存取的目錄,那麼 Server 就可以在這個範圍內讀取檔案。
但如果電腦裡還有:
Documents/
Pictures/
Downloads/
Desktop/
這些資料夾並不會因為我們建立了 File System MCP,就自動全部開放,也就是說MCP Server 能做什麼,取決於我們給它什麼權限。
假設今天我們做了一個可以讀檔案的 MCP Server,如果沒有任何限制,那麼 AI 可能就有機會接觸到一些我們不希望它讀取的資料,例如:
私人文件
帳號資訊
設定檔
工作資料
其他重要檔案
不要覺得這些東西不會被挪作他用,或是這些資料讓AI知道也不會怎樣,許多時候資料的洩漏往往就在不經意間,所以在設計 MCP Server 時,不能只考慮「能不能做到」,也要考慮:
這個 Tool 到底應該被允許做到什麼程度?
例如我們可以限制:
這樣即使 AI 可以使用這個 Tool,它能做的事情也會被限制在我們設定的範圍內。
這其實不只適用在 MCP,例如我們今天做一個 Tool read_file
它只需要讀取檔案,那就不需要同時給它:
delete_file
write_file
move_file
能給的權限越少,發生問題時影響的範圍也會比較小,因此在設計 MCP Server 時,可以先問自己一個問題:
這個 Tool 為了完成工作,最少需要哪些權限?
這樣會比一開始就把所有權限都開放來得安全。
今天沒有寫新的 MCP Tool,而是回頭思考昨天的 File System MCP,當我們開始讓 AI 接觸電腦上的檔案、資料庫或 API 後,權限就會變成很重要的一件事,MCP 不只是讓 AI 可以使用 Tool,我們也需要思考 Tool 可以使用到什麼程度,這也是之後實際做 MCP Server 時,很需要注意的地方。