Tencent Cloud CVM VNC browser control via agent-browser with MCP server support
Project description
cvm-vnc
通过 agent-browser 对 Web VNC 页面进行程序化控制的 Python 工具,支持屏幕截图、文本输入和页面状态检测,并提供 MCP (Model Context Protocol) Server 供 AI Agent 集成。
功能特性
- VNC 页面控制 — 打开并操作 Web VNC 界面
- 屏幕截图 — 将 VNC Canvas 捕获为 PNG 图片
- 智能文本输入 — 自动识别输入方式(远程命令对话框 / noVNC 键盘 / Canvas 直接输入等)
- MCP Server — 以 stdio 模式运行,供 AI Agent 调用
- 登录检测 — 自动识别 VNC 页面跳转至登录页的场景
- 终端网格估算 — 根据 Canvas 尺寸启发式推算终端行列数
安装
从源码安装(开发模式)
git clone <repo-url>
cd cvm-vnc
pip install -e .
-e(editable)模式会将当前源码目录链接为已安装包,修改代码后无需重新安装即可生效。
从 PyPI 安装
pip install cvm-vnc
可选依赖
# dotenv 支持(从 .env 文件加载环境变量)
pip install -e '.[dotenv]'
前置依赖
需要系统中安装 agent-browser(Node.js CLI 工具):
npm install -g agent-browser
使用方式
CLI 命令
# 打开 VNC 页面
cvm-vnc open <url> [--wait-ms MS] [--session NAME] [--headed]
# 截取 VNC 屏幕
cvm-vnc capture [output] [--session NAME] [--headed]
# 发送文本输入
cvm-vnc type <text> [--enter] [--session NAME] [--headed]
# 批量顺序输入(避免 AI 思考间隙导致登录超时)
cvm-vnc type-sequence --steps-json '<JSON>' [--mode MODE] [--session NAME]
# 关闭浏览器会话
cvm-vnc close [--session NAME]
# 启动 MCP Server
cvm-vnc mcp [--session-default NAME] [--mode-default MODE] [--headed]
也可通过独立入口直接启动 MCP Server:
cvm-vnc-mcp
MCP Server Tools
MCP Server 对外暴露以下工具:
| 工具 | 说明 |
|---|---|
vnc_open(url, wait_ms, session) |
打开 VNC 页面 |
vnc_status(session) |
检查页面状态(Canvas 元数据、登录检测等) |
vnc_capture(output_path, session) |
截取 Canvas 为 PNG |
vnc_type(text, press_enter, session, mode) |
发送文本输入 |
vnc_type_sequence(steps, session, mode) |
批量顺序输入(适合系统登录等需要连续输入的场景) |
vnc_close(session) |
关闭浏览器会话,释放资源 |
示例
# 打开 VNC 并等待页面加载
cvm-vnc open https://vnc.example.com --wait-ms 3000
# 截图保存到文件
cvm-vnc capture /tmp/screen.png
# 执行命令
cvm-vnc type "ls -la" --enter
# 一次性完成系统登录(用户名 + 密码)
cvm-vnc type-sequence --steps-json '[{"text":"root","press_enter":true,"wait_ms":500},{"text":"password","press_enter":true}]'
# 关闭浏览器会话
cvm-vnc close
项目结构
src/cvm_vnc/
├── __init__.py # 版本信息
├── __main__.py # CLI 入口
└── vnc_browser.py # 核心实现(浏览器控制、MCP Server、JS 注入脚本)
MCP Server 配置
安装完成后,可将 cvm-vnc 作为 MCP Server 接入 AI 客户端。
Claude Code
claude mcp add cvm-vnc -- cvm-vnc-mcp
添加后可通过以下命令验证:
claude mcp list
Codebuddy
codebuddy mcp add cvm-vnc -- cvm-vnc-mcp
或手动编辑 ~/.codebuddy/settings.json:
{
"mcpServers": {
"cvm-vnc": {
"command": "cvm-vnc-mcp"
}
}
}
提示:如果
cvm-vnc-mcp不在 PATH 中,需使用完整路径,例如/path/to/venv/bin/cvm-vnc-mcp。
配置
| 环境变量 | 说明 | 默认值 |
|---|---|---|
AGENT_BROWSER_BIN |
agent-browser 可执行文件路径 | 自动查找 |
LOCK_TIMEOUT |
会话锁超时时间(秒) | 120 |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cvm_vnc-0.1.9.tar.gz.
File metadata
- Download URL: cvm_vnc-0.1.9.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d869815ef207e45cd7d374dd6d94679c592d97b79ffba176913412a72d37a2b7
|
|
| MD5 |
0638972b041e59d38f36c84740503e87
|
|
| BLAKE2b-256 |
c967cd42383e7a805bbd6eb599b883962025b526ef39b94cf1dee8f60488a028
|
File details
Details for the file cvm_vnc-0.1.9-py3-none-any.whl.
File metadata
- Download URL: cvm_vnc-0.1.9-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48c1407af66cdd687361ea95c6fd3ae0d41b9544ec2931c38e4826c102cc1604
|
|
| MD5 |
7427a61e196afe578c7045c05a9933d0
|
|
| BLAKE2b-256 |
880339c26dfbae660e40f543581e20b0f34bd33e66628dbaddbb18c3e635cd1e
|