浏览 AI 知识库
文件系统 MCP 怎样限定目录后读取和搜索文件
文件系统 MCP 应只开放完成当前任务需要的目录。先建立白名单并用只读搜索验证,没必要为了找一份合同让工具看见整个磁盘。
按实际操作顺序推进
每完成一段就检查当前输出,确认结果符合预期后再继续。
只想搜索一份合同,为什么工具却能浏览整个 C 盘
为了让 AI 搜一份合同,用户把整个 C 盘暴露给文件系统 MCP。工具随后能看见浏览器配置、下载目录和其他客户文件,权限远超任务。
- 最小目录白名单明确
- 越界与写入反例已测试
- 搜索结果能回到原文件
动手前,把材料和不能改的部分定下来
| 需要确认 | 本例内容 |
|---|---|
| 现有材料 | 任务只需在 `D:/demo/contracts/redacted` 搜索“终止条款”;目录含三份脱敏 PDF 文本。 |
| 不能越过的边界 | 白名单只含任务目录;默认只读;符号链接和路径穿越需要测试;敏感原件不放入目录。 |
| 要交付的结果 | 目录白名单与只读检索结果 |
文件系统 MCP 怎么用,从“建立白名单”开始做
建立白名单
使用精确绝对路径,确认符号链接、网络盘和子目录是否会扩大范围。
使用只读样本
准备已知文件名和内容,测试列目录、读取和关键词搜索的结果是否完整。
验证越界拒绝
尝试访问白名单外的非敏感路径,应被拒绝;检查工具参数是否能绕过限制。
检查日志与内容
日志只记录必要元数据,不泄露完整敏感正文;读取结果保留源路径。
按任务增加权限
只有明确需要创建或修改文件时,再增加精确目录和动作,写覆盖与删除确认。
先用三个无敏感文件证明列举、读取和越界拒绝
| 测试 | 输入 | 预期结果 | 证据 |
|---|---|---|---|
| 列目录 | 专用 test-data/,含 a.txt、b.csv、README | 只返回三个文件 | 工具参数和返回列表 |
| 读文件 | 读取 README | 内容与已知样本一致 | 源路径、摘要和日志 |
| 越界 | 请求白名单外的非敏感 dummy 目录 | 返回拒绝,不泄露内容 | 错误类型和配置回读 |
| 写操作 | 不开放写权限时尝试创建测试文件 | 被拒绝且原目录不变 | 文件清单前后对比 |
测试目录和文件内容应为专用、无敏感样本;不要用真实用户目录做越界实验。
完成后的目录白名单与只读检索结果
权限表只授权 list/search/read 三个工具和一个目录。测试能找到三处条款并返回文件名与页码;访问父目录和写文件均被拒绝,日志不记录正文秘密。
为什么“白名单正确,仍能通过链接读到外部”还不能交付
白名单正确,仍能通过链接读到外部
- 原因
- 目录内存在指向外部的符号链接或挂载
- 怎么改
- 加入真实路径解析与越界测试,禁用或限制链接跟随
