JetKVM MCP 服务器
一个模型上下文协议(MCP)服务器,用于暴露完整的(功能/接口/数据等,具体根据上下文确定) jetkvm_client 可以翻译为“JetKVM 客户端” API,允许像Claude这样的AI助手远程控制JetKVM设备。
特点/功能
- 键盘控制向远程系统发送文本和键组合
- 截图捕捉从WebRTC视频流中捕获截图
- 鼠标控制移动光标,点击并拖动(即将推出)
- 系统管理重启、关机及电源管理(即将推出)
- 硬件配置EDID和显示设置(即将推出)
先决条件
- Rust 1.70 或更高版本
- 在您网络上可访问的JetKVM设备
- GStreamer库(用于视频功能)
在 NixOS 上/使用 Nix flakes:
nix develop在其他系统上,请安装:
- GStreamer 和开发头文件
- OpenSSL 和 pkg-config
安装
来自源(或“来源”)
git clone https://github.com/nilp0inter/jetkvm_mcp_server.git
cd jetkvm_mcp_server
cargo build --release二进制文件将位于 target/release/jetkvm_mcp_server.
配置
服务器需要两个环境变量:
JETKVM_HOST主机名或带端口的IP地址(例如。,192.168.1.100:80)JETKVM_PASSWORD您的JetKVM设备的密码
用法
运行服务器
服务器通过stdio传输进行通信,这是MCP服务器的标准:
export JETKVM_HOST="192.168.1.100:80"
export JETKVM_PASSWORD="your_password"
./target/release/jetkvm_mcp_server与Claude Desktop一起使用
将服务器添加到您的Claude桌面配置文件中:
macOS(中文常称为“苹果电脑操作系统”或简称“苹果系统”): ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"jetkvm": {
"command": "/path/to/jetkvm_mcp_server",
"env": {
"JETKVM_HOST": "192.168.1.100:80",
"JETKVM_PASSWORD": "your_password"
}
}
}
}与Cursor IDE一起使用
在Cursor的MCP设置中进行类似配置。
可用工具
发送文本
通过JetKVM设备向远程系统发送文本。
参数:
text(字符串):要发送的文本
在Claude中的示例用法:
Please use the jetkvm server to send "Hello World" to my remote computer截图
通过WebRTC视频流从远程系统的显示界面捕获截图。
参数(两者均为必需):
max_width(整数, 所需的;要求的): 最大宽度(以像素为单位)。请使用保守值(例如,800-1024)以避免超出上下文窗口的限制。max_height(整数, 所需的;要求的): 最大高度(以像素为单位)。使用保守值(例如,600-768)以避免超出上下文窗口的容量。
在Claude中的示例用法:
Please capture a screenshot from my remote computer using jetkvm with max width 800 and max height 600返回值: 一个可直接在MCP客户端中显示的base64编码的PNG图像。
缩放行为:
- 图像总是会被缩放以适应指定的最大宽度(max_width)和最大高度(max_height)
- 保持宽高比(无变形)
- 如果原始图像小于指定的尺寸,则保持原始大小不变
- 使用Lanczos3滤波器进行高质量下采样
重要提示: 始终使用保守的分辨率值(推荐:800x600 或 1024x768),以防止大图像占用过多上下文窗口空间。
注: 该截图是从活动的WebRTC视频流中捕获的。请确保在请求截图之前已建立视频连接(通常连接后约需500毫秒)。
发展
项目结构
jetkvm_mcp_server/
├── Cargo.toml # Dependencies and project metadata
├── src/
│ ├── main.rs # Server entry point
│ ├── lib.rs # Library exports
│ └── server.rs # MCP server implementation with tools
└── README.md添加新工具
要添加一个新工具,请在(某个地方)添加一个方法到 JetKvmServer 在……中的实施 src/server.rs:
#[tool(description = "Description of what the tool does")]
async fn tool_name(&self, params: Parameters) -> Result {
// Tool implementation using jetkvm_client
}测试
手动测试服务器:
# Set environment variables
export JETKVM_HOST="192.168.1.100:80"
export JETKVM_PASSWORD="your_password"
# Run the server
cargo run服务器将连接到您的JetKVM设备,并等待通过stdin/stdout接收MCP请求。
建筑学
这台服务器使用:
- rmcp v0.8.1(注:这里的“rmcp”可能是一个特定软件或项目的名称,根据上下文无法确定具体含义,因此直接保留原样翻译。)官方Rust语言实现的模型上下文协议
- jetkvm客户端 v1.0.0用于JetKVM WebRTC通信的Rust客户端库
- “tokio”翻译成中文可以是“东京”(如果是指日本的城市名Tokyo)或者根据上下文可能指代其他特定含义,但最直接的翻译就是“东京”。在没有特定上下文的情况下,“tokio”通常被翻译为“东京”。用于处理并发操作的异步运行时
服务器与JetKVM设备保持持久的WebRTC连接,并将其功能作为MCP工具暴露出来,以便AI助手调用。
故障排除
连接问题
如果服务器无法连接:
- 确认您的JetKVM设备已开机且可访问
- 检查主机/端口组合是否正确
- 验证密码是否正确
- 确保您的防火墙允许WebRTC连接
构建问题
如果您遇到与GStreamer相关的构建错误:
- 确保已安装GStreamer开发包
- 在NixOS上,使用
nix develop进入开发环境 - 检查一下
PKG_CONFIG_PATH包含 GStreamer
贡献
欢迎投稿!拓展领域包括:
- 额外的键盘控制(特殊键、宏)
- 鼠标移动和点击操作
- 截图捕获功能
- 系统管理工具(重启、关机)
- 硬件配置工具
- 网络管理
- USB设备管理
许可证
MIT 许可证 - 详见 LICENSE 文件
致谢
- 建立在……之上 jetkvm_client(可译为“jetkvm 客户端”) 由nilp0inter(注:这可能是一个用户名或特定标识,根据上下文无法确定具体含义,故直译)
- 用途 rmcp - 官方Rust MCP SDK
- 受模型上下文协议规范的启发
相关项目
- jetkvm_client 可以翻译为“jetkvm 客户端” - 底层的Rust客户端库
- 模型上下文协议 - 协议规范
