AI 计算机控制服务器

VNC MCP Server 是一个高级模型上下文协议服务器,通过VNC协议使AI代理能够查看、推理和控制计算机,将标准VNC连接转换为AI代理的高级“视觉-动作”接口。

  • by volkan-m
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 volkan-m/vnc-mcp-server

使用说明

VNC MCP服务器

一种先进的模型上下文协议(MCP)服务器,使AI代理能够通过VNC(RFB)协议查看、推理和控制计算机。该服务器将标准VNC连接转换为AI代理的高级“视觉动作”接口。

📊 系统架构

graph TD
    subgraph "AI Environment"
        A[AI Agent / Claude Desktop] -->|MCP Protocol| B[VNC MCP Server]
    end

    subgraph "Bridge Layer"
        B -->|Image Processing| C[Sharp / Tesseract.js]
        B -->|RFB Protocol| D[VNC Connection]
    end

    subgraph "Target System"
        D -->|Input Simulation| E[Windows / macOS / Linux]
        E -->|Framebuffer| D
    end

    style B fill:#f00,stroke:#333,stroke-width:4px

🌟 主要特点

👁️ 高级视觉

  • 区域截图:精确捕捉特定区域的屏幕截图以保存代币。
  • OCR(光学字符识别):使用Tesseract.js从屏幕的任何部分提取文本。
  • 视觉搜索:使用模板匹配在屏幕上查找特定的图标、按钮或图像。
  • 像素分析:获取任何像素的精确Hex/RGB颜色以进行状态验证。
  • 变化检测:等待特定区域更新后再继续。

🕹️ 类人控制

  • 精确输入:单击, 双击,以及流畅的鼠标移动。
  • 拖放:模拟坐标之间的复杂拖动操作。
  • 滚动:定向鼠标滚轮支持(上/下/左/右)。
  • 精通键盘:键入字符串并执行复杂的组合键(例如。, Ctrl+C, Cmd+Space).

⚡ 混合控制(VNC+SSH外壳)

  • 后台执行:在服务器上运行任何shell命令(bash/cmd/powershell)。
  • 🔗 通过SSH远程执行:通过集成的SSH客户端直接在VNC主机上运行命令。
  • 🛡️ 安全层:强大的过滤系统,具有特定平台的allowlists和denylists。
  • 与跨平台支持:适用于Windows、Linux和macOS。
  • 无缝集成:使用终端安装软件,然后使用VNC控制应用程序。

🧠 智力与健康

  • 操作系统检测和平台感知:基于屏幕分辨率模式的智能操作系统检测(Windows/MOSC/Linux)。
  • 连接健康状况:通过延迟测量和心跳状态进行实时连接监控。
  • 剪贴板同步:完全双向剪贴板支持。
  • 自动连接:配置服务器以通过环境变量立即连接。
  • 高级测序:在一次调用中执行多个操作,以实现更快的自动化。

🚀 入门指南

先决条件

  • Node.js v18+
  • 目标系统上正在运行的VNC服务器。
  • (可选)在目标系统上启用SSH服务以执行远程命令。

快速开始

  1. 克隆和安装:

    git clone https://github.com/volkan-m/vnc-mcp-server.git
    cd vnc-mcp-server
    npm install
    npm run build
    
  2. 测试环境(Docker与Chrome和SSH): 运行启用了Google Chrome、VNC和SSH的完整Linux桌面:

    docker run -d \
      -p 5901:5900 \
      -p 2222:22 \
      -v /dev/shm:/dev/shm \
      --name mcp-vnc-chrome \
      -e VNC_PASSWORD=vncpass \
      dorowu/ubuntu-desktop-lxde-vnc:latest
    

    连接到localhost:5901的VNC和localhost:2222的SSH(内部端口22)。

  3. MCP客户端配置:

谷歌反重力/克劳德桌面

将此添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "vnc": {
      "command": "node",
      "args": ["/absolute/path/to/vnc-mcp-server/dist/index.js"],
      "env": {
        "VNC_HOST": "localhost",
        "VNC_PORT": "5901",
        "VNC_PASSWORD": "vncpass"
      }
    }
  }
}

🛡️ 安全配置(可选)

您可以限制AI可以执行哪些系统命令:

变量 描述 默认值被拒绝
LINUX_DENIED_COMMANDS 被阻止的Linux命令 `rm -rf,rm -f,shred,mkfs,:(){ :
WIN_DENIED_COMMANDS 被阻止的Windows命令 del,format,rd,sfc,attrib
MAC_DENIED_COMMANDS 被阻止的macOS命令 rm -rf,rm -f
[OS]_ALLOWED_COMMANDS 如果设置, 仅 这些是允许的 (默认为空)

🔗 通过SSH远程执行

服务器现在支持通过SSH在目标机器上直接执行命令。通过连接时 vnc_connect,您可以提供可选 ssh 对象:

{
  "host": "192.168.1.50",
  "ssh": {
    "user": "root",
    "password": "your-password",
    "port": 22
  }
}

如果SSH已连接, vnc_system_command 自动将所有命令路由到目标机器,而不是本地服务器。

📊 增强的状态监控

屏幕信息

vnc_get_screen_info 返回有关远程会话的详细信息:

  • 决心:当前显示尺寸
  • 操作系统提示:智能操作系统检测(基于分辨率模式的Windows/MOSC/Linux)
  • SSH状态:SSH连接是否处于活动状态

连接健康状况

vnc_get_connection_health 提供全面的连接指标:

  • VNC状态:连接/断开状态
  • 延迟:屏幕刷新操作的实时延迟测量
  • 决心:当前显示尺寸
  • SSH状态:SSH连接状态

🎯 高级视觉功能

带坐标叠加的屏幕截图

使用 overlay 参数在 vnc_screenshot 添加带有标记坐标(A1、B2等)的网格以便于导航:

{
  "format": "jpeg",
  "quality": 85,
  "overlay": true
}

这有助于AI代理更准确地理解和传达屏幕位置。

支持多种语言的OCR

这 vnc_ocr_region 该工具通过Tesseract.js支持多种语言。指定语言代码:

{
  "x": 0,
  "y": 0,
  "width": 1920,
  "height": 1080,
  "lang": "eng+deu+fra"
}

支持的语言:eng(英语)、deu(德语)、fra(法语)、spa(西班牙语)等等。

批处理操作 vnc_execute_sequence

在一次调用中执行多个输入操作,以实现更快的自动化:

{
  "actions": [
    {"type": "move", "x": 100, "y": 100},
    {"type": "click", "x": 100, "y": 100},
    {"type": "wait", "ms": 500},
    {"type": "type", "text": "Hello World"},
    {"type": "key", "key": "Enter"}
  ]
}

这种方法减少了RPC开销,并提高了复杂自动化序列的响应能力。

🧰 API参考(工具)

工具 类别 描述
vnc_connect 设置 连接到VNC(可选:包括 ssh 配置)。
vnc_disconnect 安装程序 断开与VNC服务器的连接。
vnc_get_screen_info 状态 返回分辨率、操作系统提示(Windows/MOSC/Linux)和SSH状态。
vnc_get_connection_health 状态 提供心跳状态、延迟测量、分辨率和SSH连接状态。
vnc_screenshot 视觉 使用可选的坐标叠加捕获全屏或区域的PNG/JPEG。
vnc_ocr_region Vision 使用OCR从特定区域提取文本(支持多种语言)。
vnc_find_image 视觉 在屏幕上查找具有可配置公差的模板图像。
vnc_wait_for_change 视觉 阻止,直到屏幕区域在超时内更新。
vnc_get_pixel_color Vision 返回特定像素的Hex/RGB颜色值。
vnc_mouse_move 输入 将鼠标移动到坐标。
vnc_mouse_click 输入 执行鼠标单击(左/中/右按钮)。
vnc_mouse_double_click 输入 执行快速双击。
vnc_mouse_drag 输入 使用按钮控件从点A拖动到点B。
vnc_mouse_scroll 输入 方向盘滚动(上/下/左/右)。
vnc_key_tap 输入 用修饰符轻击按键(例如。, C-v, M-Tab, S-Enter).
vnc_type_string 输入 键入字符序列。
vnc_execute_sequence Input 在一次性能调用中执行多个输入操作。
vnc_system_command 系统 执行shell命令(本地或通过SSH远程)。
vnc_launch_gui_app 系统 在远程桌面上启动GUI应用程序。
vnc_set_clipboard 系统 设置远程系统剪贴板文本。
vnc_get_clipboard 系统 检索最后已知的远程剪贴板内容。

🛡 许可证

MIT许可证。看 许可证 了解详情。