尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

云服务器上的 Hermes Agent 如何通过 MCP 安全操纵本地文件:ngrok 内网穿透配置实战

云服务器上的 Hermes Agent 如何通过 MCP 安全操纵本地文件:ngrok 内网穿透配置实战 1. 云服务器上的 Hermes Agent 为什么读不到你本地文件Hermes Agent 跑在云服务器上能帮你查资料、写代码、跑命令但它有个天然短板它的文件系统视野只覆盖云服务器那台机器。你本地 E 盘里的项目、桌面上的草稿、某个目录下的配置文件它一概看不见。想让云端的 Agent 直接接管本地目录、帮你改代码、新建文件、批量整理靠默认能力是做不到的。MCPModel Context Protocol就是补这块短板的东西。你可以把它理解成一个标准化的 USB 接口Agent 是主机MCP Server 是插上去的外设外设负责真正去碰文件、数据库、API。文件操作这类外设必须装在你本地电脑上因为它要访问的是本地磁盘。于是问题变成——云服务器上的 Hermes 怎么找到你本地跑着的 MCP Server两条路一条是虚拟局域网方案把两台机器拉进同一个私有网络另一条是内网穿透把本地某个端口映射成一个公网可访问的地址。这篇走第二条用 ngrok 把本地 MCP Server 暴露出去让云端的 Hermes 通过一个 https 域名连进来。整条链路是Hermes云服务器→ ngrok 公网域名 → 本地 MCP Server → 本地文件目录。适合谁看手里有云服务器、已经在上面跑 Hermes Agent、想让它读写本地文件但不想折腾复杂网络配置的人。下面从 TaoToken 的 Key 准备开始一路给到可复制的 ngrok 配置、MCP 启动命令、Hermes 的 config.yml 片段以及连通性验证和文件读写测试。2. 前置准备TaoToken 统一 Key 与本地环境在打通链路之前先把两头的燃料备齐。云端的 Hermes 需要能调用模型本地需要能跑 Node 环境和 MCP Server。模型接入这块我用 TaoToken 的统一 Key 来管。它的好处是一个 Key 走通多个模型Hermes 的 config.yml 里不用为每个模型单独配一套凭证换模型只改模型名不改鉴权。先去控制台把 Key 建出来注册/登录后进控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole在 API Keys 页面创建一个新 Key复制保存https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys接口地址统一用https://taotoken.net/api本地环境需要两样东西。第一是 Node.js因为 filesystem 这个 MCP Server 是 npm 包靠 npx 拉起。装完在 cmd 里验证node -v npm -v两个命令都能打印版本号就说明环境 OK。第二是 ngrok 客户端去官网下载对应系统的压缩包解压得到一个可执行文件。Windows 下就是 ngrok.exe建议放到一个固定目录后面配置隧道要用。注意ngrok 的免费域名每次重启可能会变如果你希望地址稳定要么用付费的固定域名要么每次变更后同步更新 Hermes 的 config.yml。这一点后面排障章节还会提到。3. 可复制配置ngrok 隧道 MCP Server 启动这一步是整个链路的核心分两小步先把本地 MCP Server 跑起来再用 ngrok 把它映射出去。3.1 启动 filesystem MCP Server打开 cmd执行下面这行命令。它做三件事用 supergateway 把 stdio 模式的 MCP Server 转成 HTTP 模式监听本地 80 端口路径固定为 /mcp并且把可操作目录限定在 E:\hermes\demo。npx -y supergateway --port 80 --outputTransport streamableHttp --streamableHttpPath /mcp --stdio npx -y modelcontextprotocol/server-filesystem \E:\hermes\demo\参数逐个说明方便你按自己情况改参数作用建议值--port本地监听端口80被占用就换 8080--outputTransport输出传输方式streamableHttp别用 sse--streamableHttpPathHTTP 路径/mcp和后面 URL 对应--stdio实际拉起的 MCP Serverfilesystem路径按需改这里有个我踩过的坑一开始我用的是 sse 模式配 /sse 路径结果内网穿透过来之后一直连不上。原因是 sse 是流式长连接ngrok 这类隧道对长连接有缓存和超时行为握手容易断。换成 streamableHttp 之后一次就通了。所以路径和传输方式这两项建议直接照抄上面的配置。命令执行后窗口里会打印类似 Listening on port 80 和 MCP 初始化完成的日志保持这个窗口不要关它就是本地服务端。3.2 配置 ngrok 隧道另开一个 cmd 窗口先做一次鉴权ngrok 官网注册后会给你 authtokenngrok config add-authtoken 你的authtoken然后启动隧道把本地 80 端口暴露出去ngrok http 80执行成功后窗口里会显示一个 Forwarding 行形如Forwarding https://xxxx-xx-xx.ngrok-free.dev - http://localhost:80这个 https 域名就是云端 Hermes 要访问的入口。把它记下来后面拼上 /mcp 就是完整的 MCP 地址https://xxxx-xx-xx.ngrok-free.dev/mcp。提示ngrok 免费版首次访问会有一个浏览器确认页但 MCP 客户端走的是程序化请求通常不受影响。如果遇到 403检查一下是不是域名拼错或隧道没起来。4. 修改 Hermes 配置并验证连通本地链路通了现在回到云服务器让 Hermes 知道这个 MCP Server 的存在。4.1 编辑 config.yml找到 Hermes 的 config.yml加入 mcp_servers 段。如果文件里已经有这个段就在下面追加mcp_servers: local_files: url: https://xxxx-xx-xx.ngrok-free.dev/mcplocal_files 是你给这个 MCP Server 起的名字随便取后面 hermes mcp list 里显示的就是它。url 填 ngrok 给你的域名加 /mcp注意是 https别写成 http。保存后重启 Hermes让配置生效。4.2 验证 MCP 连接状态重启完执行hermes mcp list如果配置正确、隧道通畅输出里会列出 local_files状态显示为已连接connected 或类似字样。这一步是分水岭能看到已连接说明云端已经成功握到本地服务端如果显示失败或超时先别急着测文件操作去第 5 节排障。4.3 文件读写实测连接成功后直接通过你接入的消息平台我用的是微信给 Hermes 下指令。测试动作建议按这个顺序来由易到难第一让它列出目录内容列出 E:\hermes\demo 下的所有文件。能返回文件列表说明读权限通了。第二让它新建文件在 E:\hermes\demo 下新建 text.txt写入 hello mcp。执行完去本地目录看一眼文件真的出现了、内容也对说明写权限通了。第三让它改文件把 text.txt 里的 hello mcp 改成 hello hermes。这一步验证的是修改能力。三步都过整条链路就算彻底打通了。我实测下来从下指令到本地文件变化延迟基本在秒级日常写代码、整理目录完全够用。5. 本篇常见错误排查链路涉及云端、隧道、本地三层任何一层出问题都会表现为连不上。按下面顺序排查能快速定位。现象一hermes mcp list 显示连接失败或超时。先确认本地那个跑 supergateway 的 cmd 窗口还开着关掉窗口服务就没了。再确认 ngrok 窗口还在跑免费版隧道断了域名会失效。最后检查 config.yml 里的 url 是不是当前 ngrok 给的域名——免费域名重启会变这是最高频的坑。现象二隧道通了但 MCP 握手失败。大概率是传输模式不对。确认启动命令里是 --outputTransport streamableHttp 且路径是 /mcpconfig.yml 里的 url 也以 /mcp 结尾。sse 模式在隧道场景下不稳定别用。现象三能连上但读写报权限错误。检查 supergateway 命令最后那个路径参数它限定了 MCP Server 能碰的目录范围。你让它操作 E:\hermes\demo 之外的文件会被拒绝。想放开就改这个路径但别直接给整个盘符范围越大风险越高。现象四本地 80 端口被占用服务起不来。把 --port 改成 8080同时 ngrok 命令改成 ngrok http 8080config.yml 里的 url 不用动因为 ngrok 映射的是端口对外还是那个 https 域名。现象五模型调用报鉴权错误。这跟 MCP 无关是 Hermes 的模型接入配置问题。检查 config.yml 里的 API Key 和 base_urlKey 用 TaoToken 控制台建的那个base_url 填 https://taotoken.net/api。如果模型名写错也会报错对照文档确认一下。6. 把 Key 和接入文档收好链路才算闭环整条链路跑通之后你会发现真正需要长期维护的其实就两样东西一个是 ngrok 的域名会变一个是模型接入的 Key 和地址基本不变。前者每次变更同步到 config.yml 即可后者建议固定下来别到处散落。模型接入这块统一走 TaoToken 的 Key 能省掉很多重复配置。需要新建或轮换 Key 的时候去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys接入参数、模型名对照、base_url 写法这些细节文档里写得更全遇到报错先翻这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc如果你后面想让 Hermes 长期跑编码任务、接 Agent 工作流可以考虑 Coding Plan额度模型更划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan想先在网页里验证某个模型能不能正常对话、Key 有没有生效用模型对话页最快https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat最后补一句实操经验MCP Server 的目录权限别图省事开太大限定到具体项目目录就行ngrok 免费域名变了之后除了改 config.yml记得重启 Hermes 再 hermes mcp list 确认一次别直接下文件指令不然会以为是 MCP 坏了其实只是地址过期。
返回列表