Back to MCP directory
publicPublicdnsLocal runtime

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client