main
cc-tweaked-remote-desktop-mcp
这是一个独立运行的 HTTP MCP 服务,用来连接 cc-tweaked-remote-desktop 的远端 WebSocket 会话,并把远程终端、文件系统、eval_lua 等能力暴露给 AI 客户端。
功能说明
- 独立运行,不依赖 VS Code 插件进程常驻
- 直接连接已经存在的远端桌面 WebSocket 会话
- 复刻插件使用的 rawterm WebSocket 协议
- 通过 MCP 工具暴露远程终端、文件、Lua 执行等能力
默认监听地址:
http://127.0.0.1:60012
MCP 端点同时支持:
http://127.0.0.1:60012/http://127.0.0.1:60012/mcp
健康检查地址:
http://127.0.0.1:60012/health
下载方式
如果本机已经安装 Git,直接克隆:
git clone https://git.liulikeji.cn/xingluo/cc-tweaked-remote-desktop-mcp.git
cd cc-tweaked-remote-desktop-mcp
如果不想使用 Git,也可以直接在代码托管页面下载压缩包,解压后进入项目目录。
启动方式
先安装依赖:
npm install
启动 MCP 服务:
npm start
如果启动成功,终端会输出类似内容:
CC remote desktop MCP server listening at http://127.0.0.1:60012
可以再访问健康检查接口确认服务正常:
http://127.0.0.1:60012/health
AI 客户端配置
这个项目是一个 remote 类型的 HTTP MCP 服务。只要你的 AI 客户端支持 MCP,并允许通过 URL 注册远端 MCP,就可以直接连接。
opencode 示例:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cc-rd": {
"type": "remote",
"url": "http://127.0.0.1:60012/"
}
}
}
如果你的客户端区分根端点和 MCP 端点,也可以填写:
http://127.0.0.1:60012/mcp
通用配置原则:
- MCP 类型选择
remote - MCP 地址填写
http://127.0.0.1:60012/或http://127.0.0.1:60012/mcp - 先启动本服务,再在 AI 客户端里刷新或重连 MCP
基本使用流程
- 启动本 MCP 服务
- 在 AI 客户端中配置并连接
cc-rdMCP - 先调用
connect_remote_ws,连接一个已存在的远端 WebSocket 会话 - 再调用其他工具,例如查看状态、读取终端、读写文件、执行 Lua
- 如需和界面交互,可以调用按键、鼠标、粘贴工具向远端注入输入事件
远端 WebSocket 地址示例:
wss://cc-rd.liulikeji.cn/<id>ws://127.0.0.1:4000/<id>
主要工具
connect_remote_wsdisconnect_remote_wsget_remote_statuslist_remote_windowsget_terminal_textsend_key_eventsend_mouse_clicksend_paste_eventread_remote_filewrite_remote_filelist_remote_directorystat_remote_pathcreate_remote_directorydelete_remote_pathmove_remote_pathcopy_remote_pathreplace_remote_texteval_luaclose_remote_window
使用说明
eval_lua只要求远端 WebSocket 已连接,并且远端支持自定义reqtype 26,不要求文件系统能力开启- 使用
eval_lua时,优先用return直接返回结果,不要默认用print(...)再配合get_terminal_text读屏 - 如需运行系统程序或指定 Lua 文件,可以在
eval_lua里使用shell.run("路径/系统程序名", ...) - 但更推荐使用
local id = shell.openTab("路径/系统程序名", ...)在新窗口运行;需要切换时调用shell.switchTab(id) - 可以用
multishell.getFocus()获取当前窗口 id;如果需要,openTab后也可以return id - 可以用
shell.programs()获取当前可运行的软件列表,其中也包含根目录下可直接运行的文件 - 当你使用
openTab打开窗口只是为了获取输出信息时,要留意新窗口里的Press any key to continue;这通常代表程序已经运行完毕,此时应视情况使用按键工具输入按键以关闭该窗口 send_key_event会发送key,然后立刻发送key_up;如果目标程序还需要字符输入,可额外提供charText,这样会紧接着补一个charsend_mouse_click会发送mouse_click,然后立刻发送mouse_upsend_paste_event会发送一个paste事件,适合把整段文本直接交给远端程序- 文件相关工具依赖远端文件系统能力;如果远端
supportsFilesystem: false,这些工具会不可用 read_remote_file支持startLine和endLine参数,只返回对应行区间;endLine: -1表示从起始行一直读取到文件末尾read_remote_file的按行读取只支持utf8编码;如果使用base64,则返回整个文件内容replace_remote_text依赖远端支持自定义reqtype 24- 这个 MCP 进程内部当前只维护一个活动中的远端 WebSocket 会话
Languages
JavaScript
100%