ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

一套方案打通外网 Cursor 与内网 Shell、MySQL MCP 服务

一套方案打通外网 Cursor 与内网 Shell、MySQL MCP 服务 很多后端、运维、AI 开发都碰到过这个难题业务服务器、数据库锁在内网不能暴露公网 IP外出想用 Cursor 远程查服务器、查订单库根本做不到。传统工具要么配置复杂要么有爆破泄露风险Cursor 只能操作本地文件排问题还要反复登跳板机效率很低。MCP 协议正好解决这类问题配合 ZeroNews 加密隧道无需暴露内网服务外网 Cursor 就可安全调用内网 Shell、MySQL。本期完整实操带你把内网 AI 远程运维整套方案落地。MCP 是什么MCP全称Model Context Protocol模型上下文协议它是一套开放标准规定大模型所在的软件比如 Cursor怎样和外面的【工具程序】说话——包括能用哪些工具、怎么传参数、怎么拿回结果。可以把它想成 AI 界的【USB 协议】以前每个工具都要单独写一套对接方式换一个 AI 软件或换一个工具就要重来。有了 MCP大家都按同一套规矩接一边是 AI 应用一边是工具服务插上就能用。它解决什么问题没有 MCP 时聊天里的 AI 多半只能看你已经打开、贴进对话里的内容根据训练知识【猜】答案有了 MCP你可以把这些能力做成一个个工具交给 AI。你在对话里说【帮我看看共享目录里有啥】【查一下这张工单】AI 就会按协议去调用对应工具再把真实结果拿回来继续回答——而不是编造。MCP 怎么用MCP 包含两个模块 MCP Client客户端 MCP Server服务端MCP Client客户端也就是跑大模型的宿主软件比如 Cursor、Claude Desktop负责在对话里决定【要不要用工具、用哪一个】。MCP Server服务端真正干活读文件、查库、调 API并把【我能提供哪些工具】登记出来、执行调用你 ↔ 对话 ↔ CursorMCP Client ↔ 按 MCP 协议 ↔ MCP Server工具 ↔ 文件 / 数据库 / 内网 API一个 MCP Server 可以声明一类或多类能力例如Tools工具可执行的动作如【列出目录】【搜索文档】【创建工单】Resources资源可读取的上下文如某份配置、某篇知识库文档Prompts提示模板一些预置的提问/工作流模板视具体 Server 而定你在 Cursor 的 MCP 面板里看到某个 Server【已连接】通常就表示Client 已经问过 Server【你有哪些工具】之后对话里才可能真正点名去用它们。我们通常在内网测试服务器上部署 MCP Server在开发/运维过程中在企业内网通过 Cursor / codex 等工具连接 MCP Server进行服务器运维系统日志查询与数据库查询处理在企业内网使用一切正常但是当我们离开公网网络覆盖范围时由于网络不可达导致 MCP Server 无法连接要解决内网 MCP Server 连接访问问题我们一般可以通过内网穿透或VPN的方式解决VPN的方式VPN 的方式安全性高但是使用复杂需要企业自己部署 VPN server每个用户需要安装 VPN 客户端有较高的使用及运维成本内网穿透的方式内网穿透的方式使用简单它给内网 MCP Server 提供一个可访问的公网 HTTPS 地址用户不需要安装任何客户端即可连接 内网 MCP Server但是需要找提供安全策略的内网穿透平台下面以 cursor 为列 演示怎么通过 ZeroNews 连接内网服务器上的 MCP Server, 进行数据/shell 命令的运维。先安装 ZeroNews Client在运行 MCP Server 的 Linux 服务器上安装 ZeroNews 客户端登陆 ZeroNews 控制台在快速开始页面中选择 Linux, 复制 Linux 的在线安装命令curl -SLk https://download.zeronews.cc/linux/zeronews-install.sh | sudo sh -s install v3bY3nT7Yaja装完后终端里应有 zeronews 命令。在以系统服务方式后天启动 ZeroNews 客户端zeronews service start在用户控制台中确认客户端是否已经在线。接下来我们安装 shell / mysql 的 MCP Server 能力包分别进行测试安装 Shell MCP Server并测试我们在 Ubuntu 服务器上安装 MCP Server 之前 先安装 nodejs再装各类 Server 能力包。安装 Node.js / npx并用npx -y mcp-proxyNode 版把 stdio MCP 转成 HTTPSSE。# 更新索引并安装必要工具 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg # 添加 NodeSource 仓库Node.js 20.x curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - # 安装 Node.js会带上 npmnpx 一般随 npm 一起可用 sudo apt-get install -y nodejs # 验证 node -v # 应类似 v20.x.x npm -v npx -v npx -y mcp-proxy --help安装 Shell MCP Server 的能力包并以 http 方式启动mkusaka/mcp-shell-server 可用于在 mcp server 所在的服务器上执行各种shell命令如 ps、df、curl 可替代 ssh 方式执行命令# 安装 Shell 能力包 npm install -g mkusaka/mcp-shell-server # shell 能力包的 http 服务端口我们用 8001 启动 npx -y mcp-proxy --host 127.0.0.1 --port 8001 -- \ npx -y mkusaka/mcp-shell-server在 ZeroNews 控制台上添加 Shell MCP Server 隧道先 MCP Server 添加一个固定域名在 ZeroNews 控制台 →自定义域名→添加域名。输入子域前缀如 mcp22shell检测可用后提交。添加 MCP Server 的 HTTPS 隧道在 ZeroNews 控制台 →隧道管理→添加隧道。核心参数协议HTTPS内网 IP127.0.0.1内网端口8001绑定设备安装MCP server 的客户端公网域名选择前面添加好的域名 mcp22shell带宽配置2M隧道添加完成后 就可以通过域名地址 https://mcp22shell.hn.takin.cc/sse 连接 MCP Server 进行shell 命令查询。在 Cursor 里用配置 MCP Server 的隧道域名地址即可在 Cursor 的Settings → Tools MCP中 配置 MCP Server 的 HTTPS 隧道地址然后查看 mcp22shell 状态应为已连接 / 绿灯表示 MCP Server 连接正常{ mcpServers: { mcp22shell: { url: https://mcp22shell.hn.takin.cc/sse } } }在 Cursor 中通过 MCP Server 查询服务器在 Agent 对话框中说要在mcp22shell上执行避免 AI 只在本地瞎编查看磁盘/内存利用率可以这样问用 mcp22shell在服务器上执行 df -h 和 free -h用中文总结磁盘和内存是否紧张查看进程 / 端口可以这么问用 shell MCP 查一下 8001 端口是谁在监听以及 node 相关进程有哪些Shell 权限很大提示里尽量写清命令避免【帮我清理一下服务器】这类过宽请求破坏性操作删文件、重启服务、改配置先自己确认再允许执行安装 Mysql MCP Server 的能力包并以 http 方式启动benborla29/mcp-server-mysql 能力包可用于在 mcp server 所在的服务器上执行各种 MySQL 查询# 安装 MySQL 能力包 npm install -g benborla29/mcp-server-mysql # 配置 mysql 数据库连接的环境变量 export MYSQL_HOST127.0.0.1 export MYSQL_PORT3306 export MYSQL_USERreadonly_user export MYSQL_PASS你的密码 export MYSQL_DByour_database # 在 8002 端口上启动 MySQL 能力包当前 shell 里已 export 的变量会传给子进程 npx -y mcp-proxy --host 127.0.0.1 --port 8002 -- \ npx -y benborla29/mcp-server-mysql在 ZeroNews 控制台上添加 MySQL MCP Server 隧道先 MCP Server 添加一个固定域名在 ZeroNews 控制台 →自定义域名→添加域名。输入子域前缀如 mysql22检测可用后提交。添加 MySQL MCP Server 的 HTTPS 隧道在 ZeroNews 控制台 →隧道管理→添加隧道。核心参数协议HTTPS内网 IP127.0.0.1内网端口8002绑定设备安装MCP server 的客户端公网域名选择前面添加好的域名 mysql22带宽配置2M隧道添加完成后 就可以通过域名地址 https://mysql22.hn.takin.cc/sse 连接 MCP Server 进行 MySQL 命令查询。在 Cursor 里用配置 MCP Server 的隧道域名地址即可在 Cursor 的Settings → Tools MCP中 配置 MCP Server 的 HTTPS 隧道地址{ mcpServers: { mcp22shell: { url: https://mcp22shell.hn.takin.cc/sse }, mysql22: { url: https://mysql22.hn.takin.cc/sse } } }在 Cursor 中通过 MCP Server 进行数据库查询在 Agent 对话框中说要在mysql22上执行数据库查询查看表数据可以这样问用 mysql22 MCP 列出 testdb 有哪些表并查 orders 最近几条MCP Server 连接的安全增强特性MCP Server 通过 HTTPS 隧道映射到公网后意味着所有人都能扫描进行连接 无意中扩大了服务器的安全风险 在这里我们可以给 MCP Server 添加IP访问白名单/路由白名单/BasicAuth来限制用户的访问范围Basic 认证配置调用 MCP Server 域名时需要先做账号认证认证通过后方可连接将 用户账号转换成 base64 编码添加到 cursor 的 mcp 的配置中IP 白名单: 配置只允许的IP地址可以连接到 MCP ServerMySQL 隧道务必对应只读账号不需要写库就不要开写权限小结MCP 放在内网Cursor 在外面通过 ZeroNews 连进来用。内网环境里用 Cursor 调 Shell、查 MySQL、看日志都很顺手一离开公司网络这些服务就连不上了。通过 ZeroNews 将 MCP Server 映成 HTTPS 地址Cursor 填域名即可继续调用。公网只开放 MCP 入口数据库端口和整台机器都不必暴露。远程排障、小组共用运维机、再配合内网大模型都可以按同一套方式落地,简单又安全。
返回列表