浏览 AI 知识库

文件系统 MCP 怎样限定目录后读取和搜索文件

文件系统 MCP 应只开放完成当前任务需要的目录。先建立白名单并用只读搜索验证,没必要为了找一份合同让工具看见整个磁盘。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备动手前,把材料和不能改的部分定下来
  2. 02执行先用三个无敏感文件证明列举、读取和越界拒绝
  3. 03检查为什么“白名单正确,仍能通过链接读到外部”还不能交付
  4. 04完成目录白名单与只读检索结果通过哪些检查才算完成
从手头这一份材料开始

只想搜索一份合同,为什么工具却能浏览整个 C 盘

为了让 AI 搜一份合同,用户把整个 C 盘暴露给文件系统 MCP。工具随后能看见浏览器配置、下载目录和其他客户文件,权限远超任务。

  • 最小目录白名单明确
  • 越界与写入反例已测试
  • 搜索结果能回到原文件
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料任务只需在 `D:/demo/contracts/redacted` 搜索“终止条款”;目录含三份脱敏 PDF 文本。
不能越过的边界白名单只含任务目录;默认只读;符号链接和路径穿越需要测试;敏感原件不放入目录。
要交付的结果目录白名单与只读检索结果
实际操作

文件系统 MCP 怎么用,从“建立白名单”开始做

建立白名单

使用精确绝对路径,确认符号链接、网络盘和子目录是否会扩大范围。

使用只读样本

准备已知文件名和内容,测试列目录、读取和关键词搜索的结果是否完整。

验证越界拒绝

尝试访问白名单外的非敏感路径,应被拒绝;检查工具参数是否能绕过限制。

检查日志与内容

日志只记录必要元数据,不泄露完整敏感正文;读取结果保留源路径。

按任务增加权限

只有明确需要创建或修改文件时,再增加精确目录和动作,写覆盖与删除确认。

白名单实测

先用三个无敏感文件证明列举、读取和越界拒绝

测试输入预期结果证据
列目录专用 test-data/,含 a.txt、b.csv、README只返回三个文件工具参数和返回列表
读文件读取 README内容与已知样本一致源路径、摘要和日志
越界请求白名单外的非敏感 dummy 目录返回拒绝,不泄露内容错误类型和配置回读
写操作不开放写权限时尝试创建测试文件被拒绝且原目录不变文件清单前后对比

测试目录和文件内容应为专用、无敏感样本;不要用真实用户目录做越界实验。

最终输出

完成后的目录白名单与只读检索结果

权限表只授权 list/search/read 三个工具和一个目录。测试能找到三处条款并返回文件名与页码;访问父目录和写文件均被拒绝,日志不记录正文秘密。

常见失败

为什么“白名单正确,仍能通过链接读到外部”还不能交付

白名单正确,仍能通过链接读到外部

原因
目录内存在指向外部的符号链接或挂载
怎么改
加入真实路径解析与越界测试,禁用或限制链接跟随
验收方式

目录白名单与只读检索结果通过哪些检查才算完成

进一步核对

常用场景:参考资料与核对入口