一个给 PC 版《Sky: Children of the Light / 光遇》用的本地 MCP 小工具。它把本机窗口截图、OCR 读屏、键盘输入和聊天输入包装成 MCP/JSON-RPC tool,方便支持 MCP 或 HTTP tool 的 AI 客户端在局域网内做陪聊和本地实验。
- 识别 PC 版光遇窗口
- 截取游戏窗口并做 OCR
- 返回截图或 OCR 文本
- 发送键盘按键,例如
w、space、f、q、enter - 通过剪贴板向聊天框粘贴中文/英文消息
它不读游戏内存,不修改客户端,不破解协议,也不提供刷资源、代肝或自动跑图功能。请只把它当成本地可访问性/陪聊实验使用。
需要 Windows 和 Python 3.10 或更新版本。安装 Python 时建议勾选 “Add python.exe to PATH”。
如果你之前没用过 Git,直接下载 ZIP 最简单:
- 打开 https://github.com/Aevella/sky-pc-mcp-companion
- 点绿色
Code - 点
Download ZIP - 解压到桌面或任意英文路径文件夹
- 进入解压后的
sky-pc-mcp-companion文件夹 - 在文件夹空白处右键,选择“在终端中打开”或“Open in Terminal”
- 运行:
python -m pip install -r requirements.txt如果提示 python 不是命令,说明 Python 没装好或没加 PATH。重新安装 Python,并勾选 “Add python.exe to PATH”。
git clone https://github.com/Aevella/sky-pc-mcp-companion.git
cd sky-pc-mcp-companion
python -m pip install -r requirements.txt如果提示:
git 不是内部或外部命令 / 无法将 "git" 识别为 cmdlet
说明电脑没有安装 Git。可以改用上面的 ZIP 方式,或者安装 Git for Windows 后重新打开终端。
第一次启用 PaddleOCR 时可能会下载模型,等待完成即可。
双击:
start-http.bat窗口会显示类似:
URL: http://0.0.0.0:9800
Token: 一串随机 token
手机或其他局域网客户端连接时,不要填 0.0.0.0,也不是填 GitHub 的地址。这里要填的是运行 start-http.bat 那台电脑自己的局域网 IP:
http://192.168.1.23:9800
鉴权头:
Authorization: Bearer 上面显示的Token
如果你的客户端把请求头拆成两格来填:
Header name: Authorization
Header value: Bearer 上面显示的Token
注意:
Bearer后面有一个英文空格。- 不要加引号,不要换行,不要把
Token:这个标签一起复制进去。 start-http.bat每次启动时如果没有设置SKY_MCP_TOKEN,都会生成一串新的 token。重启过窗口就要复制当前窗口里最新的那一串。
在运行 MCP 的那台 Windows 电脑上打开命令行,输入:
ipconfig找当前 Wi-Fi 或以太网下面的 IPv4 地址,通常长得像:
192.168.x.x
10.x.x.x
172.16.x.x
例如查到 IPv4 地址 是 192.168.1.23,客户端里就填:
http://192.168.1.23:9800
手机和电脑必须连在同一个 Wi-Fi / 同一个局域网里。
如果客户端提示类似:
HTTP 401 {"error": "missing or invalid bearer token"}
这说明手机已经连到这台电脑的 MCP 了,网络地址和端口大概率是通的;失败点在鉴权头。
按顺序检查:
- 电脑上的
start-http.bat窗口还开着,并且没有重启过。 - 客户端里的 URL 是电脑局域网 IP,例如
http://192.168.1.23:9800,不是0.0.0.0。 - 自定义请求头名字是
Authorization。 - 自定义请求头内容是
Bearer 当前窗口显示的Token。 - 如果刚刚关闭又重新打开过
start-http.bat,复制新的 token。
也可以先在手机浏览器打开:
http://电脑局域网IP:9800/health
如果能看到 {"status":"ok"...},说明网络通;此时连接 MCP 仍然 401,就是 token 或请求头没有填对。
如果光遇、Steam、启动器或游戏平台是“以管理员身份运行”的,这个 MCP 也要用管理员权限启动。否则 Windows 可能允许截图,但不允许普通权限的 Python 给管理员权限窗口发送按键。
管理员启动方式:
- 右键
start-http.bat - 选择“以管理员身份运行”
- 保持弹出的命令行窗口不要关闭
如果右键 .bat 没有管理员选项,可以先用管理员权限打开命令提示符:
cd /d C:\path\to\sky-pc-mcp-companion
start-http.bat如果 read_screen / screenshot 正常,但 press_key 完全不动,优先试管理员模式。
如果你的 MCP 客户端支持 stdio,可以使用:
start-stdio.bat或直接配置:
{
"command": "python",
"args": ["C:\\path\\to\\sky-pc-mcp-companion\\sky-mcp-server.py"]
}检查依赖、OCR、输入后端和窗口识别。
{
"name": "status",
"arguments": {}
}如果 window 是 null,说明没有找到游戏窗口。可以把游戏切到窗口化/无边框窗口化,或用真实窗口标题启动:
python sky-mcp-server.py --http --host 0.0.0.0 --port 9800 --token 你的token --window-title "窗口标题的一部分"截图并 OCR 当前游戏窗口。
{
"name": "read_screen",
"arguments": {}
}返回当前游戏窗口截图。
{
"name": "screenshot",
"arguments": {}
}发送按键。移动测试建议先用长一点的按压时间。
{
"name": "press_key",
"arguments": {
"key": "w",
"duration_ms": 800,
"backend": "pydirectinput"
}
}如果 pydirectinput 不动,可以试:
{
"name": "press_key",
"arguments": {
"key": "w",
"duration_ms": 800,
"backend": "pyautogui"
}
}打开聊天框、粘贴消息并发送。
{
"name": "send_chat",
"arguments": {
"message": "你好,我是本地 AI 陪聊测试",
"backend": "pydirectinput"
}
}如果聊天框已经手动打开,可以只粘贴文本:
{
"name": "type_text",
"arguments": {
"message": "测试中文输入",
"send": true,
"backend": "pydirectinput"
}
}如果 AI 客户端能把光遇窗口拉到前台,但发不出字,说明窗口识别和聚焦已经成功了,问题通常在“打开聊天框 / 剪贴板粘贴 / 模拟 Enter”这条输入链。
先分开测:
- 让客户端调用
open_chat。如果只聚焦窗口但聊天框没打开,分别试backend: pydirectinput和backend: pyautogui,并确认光遇窗口不是管理员权限而 MCP 普通权限。 - 手动在游戏里打开聊天输入框,再让客户端调用
type_text。如果这时能输入,说明问题在自动打开聊天框,不在粘贴。 - 如果手动打开聊天框后
type_text也不能输入,优先检查管理员权限和输入后端。 - 如果光遇、Steam、启动器或游戏平台是管理员权限运行,
start-http.bat也要右键“以管理员身份运行”。 - 如果模型只调用了
focus_game,它只会聚焦窗口,不会输入文字。要让它调用send_chat,或者在聊天框已打开时调用type_text。
推荐给 AI 客户端的测试顺序:
{"name":"open_chat","arguments":{"backend":"pydirectinput"}}聊天框打开后:
{"name":"type_text","arguments":{"message":"hello","send":true,"backend":"pydirectinput"}}如果不行,再把两个请求里的 backend 改成 pyautogui 试一次。
如果能截图、能 OCR,但是角色不动,说明 MCP 已经连上了,问题通常在 Windows 输入层。
按顺序试:
- 手动点一下光遇窗口内部,再测
press_key。 - 把光遇切到窗口化或无边框窗口化。
- 右键“以管理员身份运行”
start-http.bat,尤其是光遇或 Steam 本身用管理员权限启动时。 - 分别试
backend: pydirectinput和backend: pyautogui。 - 如果截图正常但两个后端都不能动,说明这台电脑上的光遇拦截了模拟输入,需要更底层的虚拟键盘/虚拟手柄方案。
- 不要把端口暴露到公网。
- 不要把 token 发给不信任的人。
- 截图和 OCR 可能包含聊天内容,不要公开上传调试日志。
- 不建议做自动刷资源、自动跑图、代肝、骚扰等用途。
- 如果游戏或平台规则不允许自动化,请停止使用。