让远程 SSH 会话也能用上 backend 主 server(23001)。daemon 常驻游戏本机 Session 1、只管主 server 启停;操作游戏的是主 server(game tool 在主 server)。远程 MCP 客户端挂 daemon 启停主 server、再连主 server 调 game tool。本地场景直接挂主 server(mcp.md),不需要 daemon。
Windows Session 隔离:SSH 登录落在 Session 0(服务会话),游戏窗口在 Session 1(交互式桌面);PsExec -i 1 也拿不到管理员权限;而输入注入(pyautogui / pydirectinput)必须管理员 + 交互式桌面会话。结论:SSH + PsExec 不可行,必须在 Session 1 里直接以管理员启动进程。
daemon 就是那个常驻 Session 1、握有管理员权限的管理者——它拉起的主 server 继承权限,才能操作游戏。
本地: MCP 客户端 ──► 主 server(:23001) ──► 操作游戏
远程 SSH: daemon(:23000,Session 1 常驻/管理员) ──启停──► 主 server(:23001) ──► 操作游戏
└─ MCP 客户端挂 daemon 管 server 启停;主 server 起来后,客户端再连它(:23001)调 game tool。
-
装 dev 依赖:
uv sync --group dev(装psutil)。 -
起 daemon:
.\tools\mcp\daemon\start_daemon.ps1(默认 23000)。 -
在你的 MCP 客户端注册 daemon(URL
http://127.0.0.1:23000/mcp——客户端与 daemon 同机:SSH 登录游戏本机后在本机跑 Claude Code,loopback 跨 Session 也能连到 Session 1 的 daemon)。Claude Code 示例:claude mcp add --transport http zzz_od_daemon http://127.0.0.1:23000/mcp
-
重启客户端,用 daemon 的 4 个 tool:
start_zzz_od_mcp_server/get_zzz_od_mcp_server_status/stop_zzz_od_mcp_server/restart_zzz_od_mcp_server。
.\tools\mcp\daemon\create_startup_shortcut.ps1 —— 在 Startup 文件夹建快捷方式,登录后自动起 daemon。卸载即删该 .lnk。
- 端口:daemon 23000、主 server 23001;用
get_zzz_od_mcp_server_status看 server 状态,或netstat -ano | findstr :2300。 - 主 server 起不来:看
start_zzz_od_mcp_server返回里指向的日志(.debug/zzz_od_mcp/main_server.log)。 - daemon 自身要常驻;它重启不影响已起的主 server(psutil 按 cmdline 重新发现)。
- entry.md — 服务入口
- architecture.md — backend 架构与资源约束