Filesystem MCP:讓 AI 安全地操作你的檔案系統
了解 Filesystem MCP 如何讓 AI 助手在嚴格權限控制下安全地讀寫和管理檔案。掌握檔案操作、安全最佳實踐和進階整合模式。
當你使用 AI 編碼助手時,是否希望它能夠:
- 直接讀取檔案:無需手動複製貼上檔案內容
- 批量處理檔案:一次操作多個檔案或目錄
- 安全的檔案寫入:在受控範圍內修改檔案
- 動態探索專案結構:自動發現和分析檔案
Filesystem MCP 是 Anthropic 官方提供的 Model Context Protocol 服務器,專門為 AI 助手提供安全、可控的檔案系統操作能力。
什麼是 Filesystem MCP?
Filesystem MCP 是一個基於 Node.js 的 MCP 服務器,實作了 Model Context Protocol 的檔案系統操作介面,讓 AI 助手能夠在嚴格的權限控制下讀寫本地檔案。
核心特色
-
靈活的權限控制 🔒
- 透過命令行參數指定允許存取的目錄
- 支援動態 Roots 機制,運行時更新權限
- 預設禁止所有未授權的目錄存取
-
豐富的檔案操作 📁
read_file()- 讀取檔案內容write_file()- 寫入或覆蓋檔案edit_file()- 行級編輯(搜尋與替換)list_directory()- 列出目錄內容create_directory()- 建立目錄move_file()- 移動或重新命名檔案search_files()- 使用 glob 模式搜尋檔案get_file_info()- 取得檔案元資料
-
安全性優先 🛡️
- 沙箱機制防止存取未授權目錄
- 可設定唯讀模式(Docker 支援
roflag) - 支援環境變數配置,避免硬編碼路徑
-
現代化整合 ⚡
- 支援 Roots 協定(推薦方式)
- 無需重啟即可更新權限
- 與所有 MCP 相容客戶端無縫整合
為什麼需要 Filesystem MCP?
問題:手動檔案操作的低效率
在沒有 Filesystem MCP 之前,AI 助手處理檔案的方式:
- 用戶手動複製貼上 → AI 無法主動探索專案
- 有限的內容視野 → 只能看到用戶提供的片段
- 無法批量操作 → 每個檔案都需要手動處理
- 修改需要人工介入 → AI 只能建議,無法執行
解決方案:安全的自主檔案操作
Filesystem MCP 讓 AI 能夠:
- ✅ 主動讀取相關檔案,理解完整上下文
- ✅ 批量處理多個檔案(重構、格式化、遷移)
- ✅ 直接寫入修改,減少人工複製貼上
- ✅ 探索專案結構,自動發現相關檔案
同時保持安全性:只能存取你明確授權的目錄。
安裝與設定
方法一:使用官方 CLI(推薦)
# 安裝到專案,允許存取當前目錄
claude mcp add \
--scope project \
filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
"$(pwd)"
# 安裝到全域,允許存取多個目錄
claude mcp add \
--scope global \
filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
/Users/username/projects \
/Users/username/documents
方法二:手動配置
編輯 .mcp.json(專案)或 ~/.claude/.mcp.json(全域):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
方法三:Docker 沙箱模式
使用 Docker 提供更嚴格的隔離:
docker run -v /path/to/project:/projects:ro \
@modelcontextprotocol/server-filesystem
提示:
roflag 使目錄變為唯讀,AI 只能讀取不能修改。
Roots vs. 命令行參數
傳統方式:命令行參數
{
"command": "npx",
"args": [
"@modelcontextprotocol/server-filesystem",
"/allowed/dir1",
"/allowed/dir2"
]
}
限制:修改權限需要重啟服務器。
現代方式:Roots 協定(推薦)
Roots 是 MCP 的標準化機制,讓客戶端動態暴露檔案系統邊界給服務器。
優點:
- ✅ 運行時更新權限(無需重啟)
- ✅ 通過
roots/list_changed通知自動同步 - ✅ 更靈活的整合體驗
使用方式:
Claude Desktop 等現代客戶端自動支援 Roots,只需配置基本服務器:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
客戶端會根據當前工作目錄自動設定 Roots。
實際使用範例
範例一:專案重構
你:「把所有 .js 檔案中的 var 改成 const」
Filesystem MCP 自動執行:
1. search_files("**/*.js") → 找到所有 JS 檔案
2. 對每個檔案執行 read_file()
3. 分析並生成修改建議
4. 使用 edit_file() 批量替換 var → const
5. 回報修改結果
結果:5 分鐘完成 50 個檔案的重構
範例二:專案結構分析
你:「分析這個專案的架構,畫出模組依賴圖」
Filesystem MCP 自動執行:
1. list_directory("/") → 獲取根目錄結構
2. search_files("**/*.ts") → 找到所有 TypeScript 檔案
3. read_file() 讀取每個檔案的 import 語句
4. 分析依賴關係
5. 生成 Mermaid 圖表
結果:自動生成完整的專案架構圖
範例三:檔案批量處理
你:「把 src/components 下的所有 TypeScript 檔案加上 copyright header」
Filesystem MCP 自動執行:
1. list_directory("src/components")
2. search_files("src/components/**/*.ts")
3. 對每個檔案執行 read_file()
4. 在檔案開頭插入 copyright header
5. 使用 write_file() 寫回
結果:30 個檔案自動加上 header
可用工具詳解
1. read_file(path: string) 📖
讀取檔案內容。
2. write_file(path: string, content: string) ✍️
寫入或覆蓋檔案。
⚠️ 注意:會覆蓋現有檔案,請謹慎使用。
3. edit_file(path: string, edits: Edit[]) ✂️
行級編輯,支援搜尋與替換。
4. list_directory(path: string) 📂
列出目錄內容。
5. create_directory(path: string) 🆕
建立新目錄(支援巢狀建立)。
6. move_file(source: string, destination: string) 🔀
移動或重新命名檔案。
7. search_files(pattern: string, path?: string) 🔍
使用 glob 模式搜尋檔案。
支援的 glob 模式:
*.ts- 當前目錄下的所有 TS 檔案**/*.ts- 所有子目錄下的 TS 檔案src/**/*.{ts,tsx}- src 下的 TS 和 TSX 檔案
8. get_file_info(path: string) ℹ️
取得檔案元資料。
安全性最佳實踐
✅ 推薦做法
- 最小權限原則
- 敏感資料保護
- 使用唯讀模式
- 定期審查權限
❌ 避免做法
- 授權根目錄
/- 永遠不要這樣做 - 授權系統目錄
/etc,/usr,/System- 危險 - 授權 home 目錄
~- 範圍太大 - 硬編碼絕對路徑 - 使用相對路徑或環境變數
與其他 MCP 服務器協同
Filesystem MCP 可與其他 MCP 服務器完美協同:
1. Filesystem + Memory MCP
2. Filesystem + Context7 MCP
3. Filesystem + Sequential Thinking MCP
結論
Filesystem MCP 是 AI 助手操作檔案系統的安全橋樑。它在提供強大檔案操作能力的同時,透過嚴格的權限控制確保系統安全。
適合你嗎?
| 使用場景 | 推薦度 |
|---|---|
| 批量檔案重構 | ⭐⭐⭐⭐⭐ |
| 專案結構分析 | ⭐⭐⭐⭐⭐ |
| 自動化檔案處理 | ⭐⭐⭐⭐⭐ |
| 多專案管理 | ⭐⭐⭐⭐ |
| 敏感資料處理 | ⭐⭐ (需謹慎設定權限) |
立即開始
- 安裝:
claude mcp add --scope project filesystem -- npx -y @modelcontextprotocol/server-filesystem "$(pwd)" - 授權專案目錄
- 開始享受 AI 驅動的檔案操作