夜雨聆风学习资料网

ARTICLE · 1270923

NAS 上装 MCP 服务器,让你的AI助手自己读文件

NAS 上装 MCP 服务器,让你的AI助手自己读文件

NAS 部署 · MCP · AI 工具

AI 助手只能聊天,读不了你 NAS 里的文件。在 NAS 上用 Docker 部署一个文件系统 MCP 服务器,AI 助手就能自己去读。

AI 助手只能聊天,读不了你 NAS 里的文件。

在 NAS 上用 Docker 跑一个文件系统 MCP 服务器,AI 助手就能自己去读。

有些 AI 助手本来就能读 NAS 文件,不需要装 MCP。

Hermes 运行在你的 NAS 上,能直接读取 /opt/data 下的文件,不用额外搭服务器。

Cursor 在你电脑上打开本地文件夹,AI 助手也能直接读,不需要 MCP。

只有当 AI 助手读不了你 NAS 里的文件,才需要装 MCP 服务器。

你在对话框里说「帮我总结一下上个月的账单」,它只能回答「请上传文件」。

你说「找找去年旅游的照片」,它也没辙。

因为 AI 默认只能读对话框里贴进去的内容,读不了你自己的设备。

MCP(Model Context Protocol,模型上下文协议)解决的就是这件事。

它把 AI 助手和本地数据之间装了个中介,AI 可以通过这个中介去读你 NAS 里的文件夹,而不需要你一个个上传。

先说清楚:MCP 本身不是一个软件,而是一套协议。要让它跑起来,你需要两样东西:

  1. 一个 MCP 服务器,负责把 NAS 文件系统暴露出来;
  2. 一个 MCP 客户端,负责把 AI 助手和服务器连起来。常见的客户端有 Claude Desktop、Cursor 等。

这篇只讲第一件事:在 NAS 上用 Docker 把文件系统 MCP 服务器跑起来,并把你指定的文件夹交给它。

一、MCP 协议 2026 更新:NAS 上部署先看这个

2026 年 7 月 28 日,MCP 发布了 MCP 2026-07-28 规范,替代 2025-11-25,是目前最新的一版。

主要变化是从有状态双向协议变成了无状态的请求/响应协议。之前的 MCP 客户端连上来要先握手,服务端给一个会话 ID,后续请求都得带着这个 ID,限制在某一台服务器实例上。

新版每个请求都是独立的,可以像普通 HTTP 服务一样部署,serverless、边缘计算都能用。

如果你之前部署过旧版 MCP 服务器,建议确认客户端和服务器都支持 2026-07-28 规范,否则可能连不上。

装完之后,你的 AI 助手可以:

  • 读 NAS 里的 Markdown 笔记,直接摘要;
  • 扫描照片文件夹,按日期整理;
  • 对比两个版本的合同,标出差异;
  • 读日志文件,找报错。

前提是:这些文件都在你给 MCP 服务器开放的文件夹里。没开放的文件夹,AI 碰不着。

二、Docker Compose 部署文件系统 MCP

官方的文件系统 MCP 服务器(filesystem-server)是 Node 写的,默认只走 stdio(标准输入输出)——本地进程间通信,连不到别的机器。要远程读 NAS,得把 stdio 转成 SSE/HTTP,开一个端口给客户端。

mekayelanik/filesystem-mcp 这个现成镜像已经把文件系统服务器和 mcp-proxy(stdio 转 SSE 的桥)放在一起,一个容器直接出 SSE 端口。

在 NAS 上新建一个文件夹,比如 /opt/data/mcp-filesystem,保存下面的 docker-compose.yml:

services:
  filesystem-mcp:
    image: mekayelanik/filesystem-mcp:stable
    container_name: filesystem-mcp
    restart: unless-stopped
    ports:
      - "8015:8015"
    environment:
      - PUID=1000
      - PGID=100
      - TZ=Asia/Shanghai
      - PROTOCOL=SSE
      - API_KEY=换成你自己的一串强口令
    volumes:
      - /volume1/documents:/projects/documents:ro
      - /volume1/notes:/projects/notes:ro

四处要对上:

  • PUID/PGID
     要填 NAS 上那个文件夹的真实属主 ID。UGREEN 一般就是 1000/100,id 查一下你 home 目录确认。
  • volumes
     左边是 NAS 真实路径,右边是容器内 /projects 下的路径,把 /volume1/documents 换成你要开放的文件夹。
  • :ro
     是只读挂载,AI 只能读不能改。想让它写文件就去掉 :ro,但建议先只读。
  • API_KEY
     加一层 Bearer 鉴权,远程端口不会谁都能连;不用就删掉这行。

在终端执行这条命令:

docker compose up -d

没有网页界面,客户端通过 SSE 端口连进来。确认跑起来了:

curl -i http://localhost:8015/sse

返回 200、text/event-stream 就算正常。

三、AI 助手连接 NAS 文件系统

服务器跑通后,在客户端里连到它的 SSE 端口。分两种客户端。

支持 SSE/HTTP 的客户端(Cursor、新版 Claude Desktop、VS Code):直接填 NAS 的 SSE 地址。Cursor 的 .vscode/mcp.json:

{
  "mcpServers": {
    "nas-filesystem": {
      "type": "sse",
      "url": "http://NAS的IP:8015/sse",
      "headers": { "Authorization": "Bearer 你的API_KEY" }
    }
  }
}

只认 stdio 的老客户端(老版 Claude Desktop):本地用 mcp-remote 做 stdio 到 SSE 的桥,配置里写:

{
  "mcpServers": {
    "nas-filesystem": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://NAS的IP:8015/sse", "--header", "Authorization: Bearer 你的API_KEY"]
    }
  }
}

NAS的IP 换成第二节那台机器的局域网地址(比如 192.168.1.7)。关键区别:你连的是 NAS 上这个 SSE 地址,不是自己电脑上的文件夹——文件本体一直在 NAS,客户端只是借它去读。第二节没用 API_KEY 的,把 headers 那一行去掉。各客户端认 SSE 的字段名略有差异(type 或 transport),照你那个客户端的文档写。

简化版理解:

角色
在哪里跑
作用
文件系统服务器 + mcp-proxy
NAS 上的 Docker 容器
把 NAS 文件夹用 SSE 端口暴露出来
MCP 客户端
你电脑上的 Cursor / Claude Desktop
连到 NAS 的 SSE 地址
AI 模型
云端或本地
读文件、总结、回答问题

四、NAS 部署 MCP 的边界与风险

装之前先说清楚:

1. 数据不出门,但权限要收紧

MCP 服务器只把你指定的文件夹交给 AI,没开放的文件夹碰不着。但建议不要挂载整个 NAS 根目录,只挂载你愿意让 AI 读的那个子文件夹。

2. 只读优先

默认用 :ro 只读挂载。如果 AI 能写文件,一旦提示词写错,可能会删改你的数据。先只读,确认没问题再考虑读写。

3. 客户端才是门槛

MCP 服务器跑在 NAS 上,但你平时用的 AI 助手(比如手机上的微信 AI、网页版对话)未必支持 MCP。

能接 MCP 的,目前主要是桌面端的 AI 客户端。买了 NAS 装完服务器,手机 AI 不一定立刻就能读 NAS 文件,这是现实限制。

4. 不是所有文件都能读

PDF、Word、Excel 这类二进制文件,AI 能不能读,取决于客户端和模型本身的解析能力。

MCP 服务器只负责把文件「交出去」,不负责把内容「读懂」。

五、NAS 装 MCP 值不值得装

适合:

  • NAS 常年开着,愿意花十分钟配置
  • 有大量本地文档、笔记、日志需要 AI 总结
  • 已经在用支持 MCP 的桌面 AI 客户端(Claude Desktop、Cursor 等)

不适合:

  • 只用手机 AI,不打算装桌面客户端
  • 希望 AI 自动读整个 NAS,不用挑文件夹
  • 不想碰 Docker 和命令行

一段 compose 代码、一个容器,跑通就是一个本地文件网关。至于 AI 助手最后能不能读你的文件,看你用的客户端支不支持 MCP。

如果你照这篇把 NAS 文件交给 AI 了,点个赞,转给那个天天抱怨 AI 读不了本地文件的朋友。

#NAS部署 #MCP #AI工具 #Docker #文件系统

相关学习资料