返回 MCP 目录
public公开dns本地运行

mcpvil

MCPvil是一个基于Smithay项目smallvil分支的最小化Wayland合成器,集成了MCP服务器,允许AI代理和其他MCP客户端通过stdio与合成器交互,提供应用启动、屏幕截图、鼠标键盘模拟等功能。

article

README

🚀 MCPvil

MCPvil 是 Smithay 项目中 smallvil 的一个分支,并集成了 MCP (Model Context Protocol) 服务器。它是一个最小化的 Wayland 合成器,通过 MCP 公开其功能,允许 AI 代理和其他 MCP 客户端通过标准输入输出与合成器进行交互。

✨ 主要特性

MCPvil 借助 MCP 协议,以最小化的方式实现了 Wayland 合成器的功能,为 AI 代理和 MCP 客户端提供了与合成器交互的能力,支持多种操作,如应用程序的启动与关闭、屏幕截图、鼠标和键盘操作等。

📦 安装指南

系统依赖(Debian/Ubuntu)

sudo apt-get install build-essential pkg-config cmake \
  libwayland-dev wayland-protocols libinput-dev libudev-dev \
  libseat-dev libxkbcommon-dev libegl-dev libgles2-mesa-dev \
  libgbm-dev libdrm-dev libxcb1-dev libx11-xcb-dev \
  libdbus-1-dev libsystemd-dev libpixman-1-dev

通过 Cargo 安装

cargo install --git https://github.com/derekjchow/mcpvil

从源代码构建

git clone https://github.com/derekjchow/mcpvil.git
cd mcpvil
cargo build

💻 使用示例

基础用法

MCPvil 通过 MCP 协议(以换行符分隔的 JSON-RPC)在标准输入输出上进行通信,可与任何兼容 MCP 的客户端一起使用。

# 直接运行(MCP 服务器在标准输入输出上,合成器日志在标准错误输出上)
mcpvil

# 开启调试日志
RUST_LOG=debug mcpvil

# GUI 模式(打开一个窗口进行可视化检查)
mcpvil --gui

与 MCP 客户端的设置

Claude Code

claude mcp add mcpvil -- mcpvil

Gemini CLI

将以下内容添加到 ~/.gemini/settings.json 文件中:

{
  "mcpServers": {
    "mcpvil": {
      "command": "mcpvil"
    }
  }
}

📚 详细文档

MCP 工具

| 工具 | 描述 | |------|-------------| | launch_app | 在合成器内启动一个应用程序 | | close_app | 通过进程 ID 关闭一个应用程序 | | save_screenshot_to_file | 将屏幕截图保存为 PNG 文件 | | capture_screenshot | 以 base64 编码的 PNG 格式捕获屏幕截图 | | mouse_move | 将鼠标指针移动到指定坐标 | | mouse_click | 在指定坐标处点击鼠标按钮 | | key_press | 通过 evdev 键码模拟按键操作 | | scroll | 在指定坐标处向指定方向滚动 | | open_window | 打开一个 GUI 窗口进行可视化检查 |

🔧 技术细节

依赖项

  • Smithay — Wayland 合成器库
  • rmcp — Rust MCP 服务器库
  • image — 屏幕截图编码库
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端