你让电脑上的 AI 助手看一眼「我手机服现在几个人、TPS 多少」,它把在线人数、TPS 和最后 100 行日志都贴了出来。做到这件事的,就是 Minexa 里那个默认关着的「MCP 服务」。
它和「联机」是两回事:玩家进服走 25565 / 19132 这些游戏端口和隧道;MCP 走的是只有 AI 客户端才关心的端口,用来查状态、发命令、改配置、读写文件。开了它,等于把半个管理后台交给一个能调用工具的模型,所以这一页除了怎么连,更要讲清哪些不能碰。
如果你只是想让朋友进来玩,完全不需要打开这一页的任何东西。MCP 服务面向的是「你在电脑上,手机放在一边」这种场景。
MCP 是给 AI 客户端用的工具接口,不是玩家联机入口,也不是网页后台。
默认 只监听 127.0.0.1:8931,只有这台手机上的程序能连。
一共 57 个工具,覆盖状态、启停、命令、日志、文件、备份等,删除类要额外确认。
令牌等同于服务器控制权:不要映射端口、不要用隧道转出去。
MCP 的访问令牌等同于服务器控制权:拿到令牌的人可以发控制台命令、删文件、删服务器。默认只听本机是安全设计,不是功能缺陷。不要为了「在外面也能连」把 8931 端口映射到公网,那等于把钥匙挂在门上。
MCP 是什么,不是什么#
MCP(Model Context Protocol)是一套「工具调用」约定:客户端把「有哪些工具、每个工具要什么参数」告诉模型,模型决定调哪个,服务端执行后返回结果。
它是:AI 客户端(Claude、ZCode 这类支持 MCP 的程序)访问这台手机的工具接口。
它不是:玩家联机入口、网页管理面板、也不是「开了就能从任何地方连」的远程桌面。
传输方式:Streamable HTTP,只有一个端点
POST /mcp,无状态。GET和DELETE直接返回 405,通知类请求返回 202——这些是协议决定的行为,不是故障。无状态也意味着每次请求都要自带令牌。
「无状态」这件事通俗讲就是:服务端不记得你,每个请求都要自己带上令牌,带对了就办、带错了就 401。好处是实现简单、不会因为连接超时把你踢出去;代价是每次都得带,客户端漏配一个请求头就全程连不上。
开启服务:端口、监听地址和令牌#
入口在「更多 → MCP 服务」。默认是关闭的,第一次需要你自己打开。打开时如果令牌还是空的,应用会自动生成一个。
| 项目 | 默认值 | 说明 |
|---|---|---|
| 启用开关 | 关 | 打开即启动服务;关闭即停止 |
| 监听地址 | 127.0.0.1 | 打开「允许局域网访问」后改为 0.0.0.0 |
| 端口 | 8931 | 允许范围 1024–65535 |
| 访问令牌 | 首次开启自动生成 | 16 字节随机数的 32 位 hex |
| 传输 | Streamable HTTP | 单端点 POST /mcp,无 TLS |
几个操作细节:
改端口、切换局域网访问、重新生成令牌,都会让服务自动重启生效,不需要手动关一次再开。
端点卡片显示
http://127.0.0.1:8931/mcp。没开局域网访问时,即使手机有局域网 IP,页面也强制显示127.0.0.1形式——否则你照着填进客户端必然连不上。令牌用等宽字体显示、可选中,右边有「复制」和「重新生成」。重新生成后旧令牌立即失效,所有客户端都要换配置。
顶部状态灯:运行中(绿)、未运行(灰)、启动失败并附带原因(红)。
端口为什么要限制在 1024–65535?因为小于 1024 的是系统保留端口,普通应用无权监听。填错了输入框会直接提示「端口需在 1024–65535 之间」,属于提前拦住,不是运行时才失败。
16 个随机字节,每个字节两位十六进制,正好 32 个字符。它让局域网里其他人即使猜到端口也调不动工具。但它只是口令,不是加密:MCP 走明文 HTTP,被嗅探到就是泄露。
让客户端连上:一段 JSON 加一个请求头#
页面的「客户端配置示例」给的是一段通用的 mcpServers JSON,介绍文案里提到的是 Claude、ZCode 这类客户端。它没有按客户端分别写步骤——页面只给 Claude、ZCode 两个示例,需要的东西就两样:端点 URL 和 Authorization 请求头。
在手机上开服务:打开启用开关,复制端点地址和令牌。
跨设备就开局域网访问:电脑和手机连同一个 Wi-Fi,打开「允许局域网访问」,端点变成
http://<手机局域网IP>:8931/mcp。把配置贴进客户端:把下面这段 JSON 加进去,URL 和令牌换成你自己的。
发一句话验证:让 AI「列出服务器状态」,能返回在线人数和 TPS 就说明通了。
不用时关掉:把启用开关关回去,比留在后台安全。
{
"mcpServers": {
"minexa": {
"type": "http",
"url": "http://192.168.1.23:8931/mcp",
"headers": {
"Authorization": "Bearer 把这里换成你的32位令牌"
}
}
}
}Bearer 后面有一个空格,漏掉空格就是 401。客户端通常还要发 Content-Type: application/json 和 Accept: application/json, text/event-stream;成熟的客户端会自己处理。
页面里还有一张「AI 技能(Skill)」卡片,可导出 SKILL.md;文件里已写入端点和令牌,只交给可信的客户端。
57 个工具能做什么#
工具加起来 57 个,按用途分组,不用背:
| 分组 | 数量 | 典型工具与用途 |
|---|---|---|
| 服务器管理 | 7 | get_server_status 查 TPS / 在线 / 内存,start_server / stop_server 启停,send_command 发命令,get_console_logs 读日志尾部 |
| 文件管理 | 9 | 列目录、读、写、删除、上传、解压(限定在服务器目录内)、把压缩包导入成新服务器 |
| 运行环境与依赖 | 13 | 装 / 卸 / 重装 Java、装依赖、修运行环境、切下载源与 APT 源、检查命令 |
| 插件与模组 | 7 | 列插件、从直链装插件、启停插件;搜索并安装 Modrinth 模组 |
| 世界快照 | 4 | 列快照、打快照、还原、删除(对应 备份页 的历史快照) |
| 核心与配置 | 5 | 查可用版本、装新实例、删实例;读写应用配置(改不了 MCP 自己的开关、端口、令牌) |
| 日志与诊断 | 6 | 应用日志、上次运行的完整服务端日志、设备信息、端口探测、HTTP 探测 |
| 测试辅助与任务 | 5 | 等服务器就绪、等日志命中正则、算文件哈希、查后台任务进度 |
| 任意 Shell | 1 | run_termux_command,在与终端相同的环境里执行 shell 命令 |
两条通用规则:长任务默认立即返回任务号,用 get_job 查进度;删除类工具必须带 confirm: true,否则只回提示、不动手。
注意最后两行里的「任意 Shell」:它不是「只读」工具。模型完全可能把你的话理解成一条要执行的 shell 命令,而这条命令会在和终端同样的环境里跑。这就是为什么下面一节的安全问题不能只看成「配错了连不上」这么简单。
安全:默认只听本机,别让它裸奔#
MCP 的安全模型很简单:只听 127.0.0.1 + 一个 Bearer 令牌。默认配置下,只有这台手机上的程序能连,局域网里其他设备连端口都握不上手。
打开「允许局域网访问」后,服务监听 0.0.0.0,同一 Wi-Fi 下任何设备都能尝试连接,只剩令牌这一道门。页面也会提示「局域网内任何设备都可访问,请保管好令牌」。此时要注意:
任何带 Origin 头的请求一律 403,并且不返回 CORS 头。这是防浏览器和 DNS rebinding 的:网页里的 JS 调不动它。所以「用浏览器打开端点看看」必然失败,那是设计如此。
不要做端口映射、不要用 frp 把 8931 转出去。要在外面管服,回家再说,或者用你自己能把控的通道。
怀疑令牌泄露就点「重新生成」,旧令牌立刻作废,然后更新客户端配置。
服务跑在应用进程里,应用被系统杀掉,MCP 也跟着断——这既是限制,也是一层保险。
delete_file 会递归删除、delete_server 会连世界一起删、run_termux_command 能在运行环境里执行任意 shell。模型可能理解错你的意思,也可能被日志里的内容带偏。重要操作前先手动备份,别把「让 AI 帮我清理一下」当日常操作。
典型用法:读日志、查状态、发命令#
最常用的三件事都不涉及写入:
远程看状态:问「服务器现在几个人、TPS 多少、内存用了多少」,对应
get_server_status,返回状态、在线玩家、TPS、内存、CPU 与运行时长。让它读日志找原因:
get_console_logs默认取 100 行、最多 2000 行;get_last_run_log拿的是上一次启动的完整日志,含堆栈。配合 小白看日志 里的关键词表,比在小屏上翻快得多。发一条管理命令:
send_command的参数不带开头的/,比如whitelist add Steve。它和终端是同一条通道,危险命令照样生效,别让它「自己发挥」。
再往上一层,可以让它做体检(查设备信息、探端口)、批量装插件、给新服打快照。这些都会改文件,做完自己核对结果,别只看 AI 的总结。
换网络、换手机、换令牌:配置怎么维护#
MCP 的配置只有两样会变的东西:URL 和令牌。三件常见事足够覆盖:
| 情况 | 会发生什么 | 你要做什么 |
|---|---|---|
| 手机换了 Wi-Fi,局域网 IP 变了 | 客户端里的 URL 失效,连不上 | 回「更多 → MCP 服务」复制新的端点地址,替换客户端里的 url |
| 怀疑令牌泄露 | 旧令牌立刻作废 | 点「重新生成」→ 复制新令牌 → 更新所有客户端配置 |
| 不再需要远程管理 | 服务仍在监听 | 把启用开关关掉,比留着安全 |
端点地址里写的是 IP,IP 一变就要跟着改。很多人把「昨天还能连、今天连不上」当成应用坏了,其实是路由器给手机分了新地址。想避免,可以在路由器上给手机固定一个局域网 IP(这是路由器侧的事,Minexa 不负责)。
多台电脑都要用时,每台都要拿到同一份 URL 和令牌;不建议把 SKILL.md 到处转发——它里面已经写进了端点和令牌,等于把钥匙一起发出去了。
连不上时,按错误码查#
常见问题是地址、令牌或请求方式不对:
| 现象 | 含义 | 怎么处理 |
|---|---|---|
| 401 | 没带令牌,或令牌不匹配 | 重新复制令牌,确认 Bearer 后面有空格 |
| 403 | 请求带了 Origin 头 | 别从浏览器网页调;换用正常的 MCP 客户端 |
| 405 | 用了 GET 或 DELETE | 只有 POST /mcp;这是协议限制 |
| 连接超时 / 拒绝 | 只听本机,或端口不对 | 跨设备要开「允许局域网访问」并连同一个 Wi-Fi;核对端点端口 |
| -32602 | 工具名不存在 | 拼写错了,或客户端缓存了旧工具列表 |
都排除了还不通,先确认服务状态灯是绿的,再看应用是不是被系统清掉了;保活设置见 后台保活与桌面小组件。
MCP 页顶部状态灯是绿色的「运行中」。
端点卡片显示的地址与实际填进客户端的一致(端口是 8931)。
客户端配置里
Bearer后面有一个空格,令牌是 32 个字符。让 AI 报一次状态,能拿到在线人数和 TPS。
用浏览器直接打开端点会失败(403/405 都算正常),说明 Origin 防护生效了。
下一步#
想先用诊断把环境问题排掉:运行诊断与崩溃报告
端口、语言、下载源这些应用级设置:设置与「更多」
遇到怪现象先看速查:APP 常见问题速查