mcpField
K
kwin-mcp

kwin-mcp

本地服务
github.com/VibeProgramm开发工具27 周前更新

关于 kwin-mcp

kwin-mcp 是用于自动化 KDE Plasma 6 Wayland 桌面的 MCP 服务,适合 GUI 测试和 Agent 驱动的桌面工作流。它支持隔离虚拟会话,也可连接现有 KWin 会话,并能检查无障碍树和截屏。

主要功能

  1. 01隔离的虚拟 KWin 会话
  2. 02连接实时 KWin 会话
  3. 03鼠标、键盘、触控和剪贴板输入
  4. 04检查 AT-SPI2 无障碍树
  5. 05截屏与窗口管理

适用场景

  1. 01在无物理显示器环境运行端到端 GUI 测试
  2. 02使用 AI Agent 自动操作桌面应用
  3. 03通过实时桌面会话协作
  4. 04测试信息亭界面和嵌入式 Linux 桌面

MCP 相关

向 MCP 客户端提供 30 种工具,用于会话管理、GUI 输入、无障碍检查、截屏和窗口管理。可在隔离会话中启动应用,也可连接现有 KWin 会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

kwin-mcp

适用于 KDE Plasma 6 Wayland 的 Linux 桌面 GUI 自动化 MCP 服务

isac322/kwin-mcp 的积极维护分支。此分支提供了用户期待已久的修复:支持 MCP Python SDK 2.x、在虚拟会话中输入文本(隔离主机键盘映射)、可靠地聚焦窗口、限制启动等待时间、修复输入被静默丢弃的问题,并提供准确的错误契约——详情请参阅更新日志和发布页面。安装:uv tool install git+https://github.com/VibeProgramm/kwin-mcp

Python 3.12+ License: MIT CI

一个模型上下文协议(MCP)服务,让 AI Agent(Claude Code、Cursor 和其他 MCP 客户端)能够在完全隔离的虚拟 KWin 会话中启动、操作和观察任意 Wayland 应用,而不会影响用户的桌面。它还支持实时桌面自动化:连接到现有的 KWin 会话(真实桌面或容器),以实现协作工作流。kwin-mcp 提供 30 个 MCP 工具,涵盖鼠标、键盘、触控、剪贴板、无障碍树检查、屏幕截图和窗口管理,可满足在 Linux 上进行端到端 GUI 测试和桌面自动化所需的一切。

目录

为什么选择 kwin-mcp?

  • 隔离会话 —— 每个会话都在独立的 dbus-run-session + kwin_wayland --virtual 沙盒中运行,不会影响你的主机桌面。
  • 支持实时会话 —— 连接到真实的 KDE Plasma 桌面,或容器内的 KWin 实例(例如 systemd-nspawn),以支持协作式“共享我的屏幕”工作流。
  • 交互无需截图 —— AT-SPI2 无障碍树会向 AI Agent 提供结构化的控件数据(角色、名称、坐标、状态和可用操作),因此无需仅依赖视觉识别即可与 UI 元素交互。
  • 无需授权提示 —— 直接使用 KWin 的私有 EIS(模拟输入服务)D-Bus 接口,绕过 XDG RemoteDesktop 门户。不会出现用户确认对话框。
  • 适用于任何 Wayland 应用 —— 任何能在 KDE Plasma 6 Wayland 上运行的应用都适用:Qt、GTK、Electron 等。输入通过标准 libei 协议注入。
  • 全面支持输入 —— 鼠标、键盘、多点触控和剪贴板,全部通过隔离会话注入,实现完整的桌面自动化。

使用场景

自动化 GUI 测试

在无头隔离会话中,为 KDE/Qt/GTK 应用运行端到端 GUI 测试。kwin-mcp 会在各自独立的虚拟 KWin 合成器中启动应用,通过鼠标、键盘和触控输入执行操作,然后通过屏幕截图和无障碍树验证结果——整个过程无需物理显示器。

AI 驱动的桌面自动化

让 Claude Code 等 AI Agent 自主操作桌面应用。Agent 读取无障碍树以理解 UI,通过 30 个 MCP 工具执行操作,并通过屏幕截图观察结果,为任何 Wayland 应用构建完整的反馈循环。

实时桌面协作

连接到你的真实桌面会话,让 Claude 观察并操作你看到的内容。使用 session_connect,或传入 --default-live-session 将实时模式设为默认模式。也支持连接到容器(例如 systemd-nspawn)内运行的 KWin,以创建隔离的 Agent 桌面。

CI/CD 中的无头 GUI 测试

将 Linux 桌面 GUI 测试集成到 CI/CD 流水线中。kwin-mcp 的虚拟会话无需 X11 或物理显示服务器,因此适用于 GitHub Actions 或 Linux 上的 GitLab CI 运行器等无头环境。

信息亭和嵌入式设备自动化

自动化运行 KDE Plasma 或纯 KWin Wayland 合成器的设备信息亭界面和嵌入式 Linux 桌面。使用 session_start 对信息亭 UI 进行隔离的虚拟测试,或使用 session_connect 直接连接到实时信息亭或嵌入式设备会话,进行实时自动化和诊断。

快速开始

需要在 Wayland 上运行 KDE Plasma 6。详情请参阅系统要求。

1. 安装

# Using uv (recommended)
uv tool install git+https://github.com/VibeProgramm/kwin-mcp

# Or from a source checkout
git clone https://github.com/VibeProgramm/kwin-mcp.git
cd kwin-mcp
uv tool install .

2. 配置 Claude Code

将以下内容添加到项目的 .mcp.json:

{
  "mcpServers": {
    "kwin-mcp": {
      "command": "uvx",
      "args": ["kwin-mcp"]
    }
  }
}

3. 使用

让 Claude Code 启动并操作任意 GUI 应用:

Start a KWin session, launch kcalc, and press the buttons to calculate 2 + 3.

Claude Code 会自主启动隔离会话、启动应用、读取辅助功能树以查找按钮、点击按钮,并截取屏幕截图来验证结果。

配置

推荐:安装为插件

将 kwin-mcp 接入编辑器的最快方式是安装一个随附插件。每个插件都会自动注册 MCP 服务,并且附带 kwin-desktop-automation 技能,指导 Agent 在何时调用哪个工具(会话模式选择、观察 → 操作 → 验证循环、US-QWERTY 与 Unicode 输入、AT-SPI2 坐标转换,以及其他平台注意事项)。

Claude Code — 从市场安装插件:

/plugin marketplace add VibeProgramm/kwin-mcp
/plugin install kwin-mcp@kwin-mcp

OpenCode — 将 npm 插件添加到 opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@isac322/kwin-mcp-opencode"]
}

完整的集成指南(手动备用方案、自定义技能、故障排除)请参阅 docs/ai-agent-integration.md。

Claude Code

将以下内容添加到项目的 .mcp.json:

{
  "mcpServers": {
    "kwin-mcp": {
      "command": "uvx",
      "args": ["kwin-mcp"]
    }
  }
}

如果是全局安装:

{
  "mcpServers": {
    "kwin-mcp": {
      "command": "kwin-mcp"
    }
  }
}
Claude Desktop

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "kwin-mcp": {
      "command": "uvx",
      "args": ["kwin-mcp"]
    }
  }
}
直接运行
# As an installed script
kwin-mcp

# As a Python module
python -m kwin_mcp

# Interactive CLI (REPL for rapid testing)
kwin-mcp-cli

# Live session mode (default to real desktop instead of virtual)
kwin-mcp --default-live-session
kwin-mcp-cli --default-live-session

可用工具

会话管理(3 个工具)
工具参数描述
session_startapp_command? str,screen_width? int(0 = 自动检测),screen_height? int(0 = 自动检测),enable_clipboard? bool(false),keep_screenshots? bool(false),isolate_home? bool(false),keep_home? bool(false),env? dict启动隔离的 KWin Wayland 会话,可选择同时启动应用。屏幕尺寸设为 0 时,会自动检测逻辑桌面的边界框(所有已启用的输出设备/已连接的显示器)。设置 enable_clipboard=true 可启用剪贴板工具(需要 wl-clipboard)。设置 keep_screenshots=true 可在 session_stop 后保留屏幕截图文件。设置 isolate_home=true 可创建临时 HOME,并隔离 XDG 目录(配置、数据、缓存、状态),以防应用读取或写入主机用户设置。设置 keep_home=true 可在 session_stop 后保留隔离的主目录。通过 env 传入额外的环境变量。
session_connectdbus_address? str,wayland_display? str,keep_screenshots? bool(false)连接到现有 KWin 会话(真实桌面或容器)。默认使用 $DBUS_SESSION_BUS_ADDRESS 和 $WAYLAND_DISPLAY。剪贴板始终启用。session_stop 只会断开连接,不会终止 KWin 或预先运行的应用。
session_stop(无)停止会话并进行清理。对于虚拟会话:终止 KWin 和所有应用。对于实时会话:断开连接,不会终止 KWin 或预先运行的应用。
观察(3 个工具)
工具参数描述
screenshotinclude_cursor? bool (false)捕获虚拟显示屏的屏幕截图(保存为 PNG,并返回文件路径)
accessibility_treeapp_name? str, max_depth? int (15), role? str获取包含角色、名称、状态和屏幕坐标的 AT-SPI2 控件树(通过合成器端的窗口几何信息,将窗口局部坐标转换而来)。使用 role 筛选特定元素类型(例如 "button"、"check box")。不匹配的元素会被隐藏,但仍会遍历其子元素。
find_ui_elementsquery str, app_name? str, states? list[str]按名称、角色或描述搜索 UI 元素(不区分大小写)。返回适用于 mouse_click 等工具的屏幕坐标。也可以按 AT-SPI2 状态筛选(例如 ["focused"]、["active", "visible"])。仅按状态筛选时,query 可以为空。
鼠标输入(6 个工具)
工具参数描述
mouse_clickx int, y int, button? str ("left"), double? bool, triple? bool, modifiers? list[str], hold_ms? int (0), screenshot_after_ms? list[int]单击指定坐标。支持左键、右键和中键,单击、双击和三击,修饰键(例如 ["ctrl", "shift"]),以及通过 hold_ms 长按。
mouse_movex int, y int, screenshot_after_ms? list[int]将光标(悬停)移动到指定坐标,不执行单击
mouse_scrollx int, y int, delta int, horizontal? bool, discrete? bool, steps? int (1)在指定坐标滚动。delta 为正表示向下/向右,为负表示向上/向左。使用 discrete=true 进行滚轮分档滚动,使用 steps 将滚动拆分为平滑的增量。
mouse_dragfrom_x int, from_y int, to_x int, to_y int, button? str ("left"), modifiers? list[str], waypoints? list[[x,y,dwell_ms]], screenshot_after_ms? list[int]使用平滑插值从一个点拖动到另一个点。支持使用自定义 waypoints 设置复杂的拖动路径。
mouse_button_downx int, y int, button? str ("left")在指定坐标按下鼠标按钮但不松开。可与 mouse_button_up 配合手动控制拖动。
mouse_button_upx int, y int, button? str ("left")在指定坐标松开之前按下的鼠标按钮
键盘输入(5 个工具)
工具参数描述
keyboard_typetext str, screenshot_after_ms? list[int]使用美式 QWERTY 键盘布局逐字符输入文本字符串
keyboard_type_unicodetext str, screenshot_after_ms? list[int]通过 wtype 或剪贴板回退方式(wl-copy + Ctrl+V)输入任意 Unicode 文本(韩文、中日韩文字等)。需要安装 wtype 或 wl-clipboard。
keyboard_keykey str, screenshot_after_ms? list[int]按下按键或组合键(例如 Return、ctrl+c、alt+F4、shift+Tab)
keyboard_key_downkey str按住按键但不松开。适用于在多个操作期间按住修饰键(例如,单击项目时按住 Ctrl)。
keyboard_key_upkey str松开之前按住的按键
触摸输入(4 个工具)
工具参数描述
touch_tapx int,y int,hold_ms? int (0),screenshot_after_ms? list[int]点击指定坐标。使用 hold_ms 执行长按手势。
touch_swipefrom_x int,from_y int,to_x int,to_y int,duration_ms? int (300),screenshot_after_ms? list[int]以可配置的持续时间从一个点滑动到另一个点
touch_pinchcenter_x int,center_y int,start_distance int,end_distance int,duration_ms? int (500),screenshot_after_ms? list[int]双指捏合手势。end_distance < start_distance 表示向内捏合,end_distance > start_distance 表示向外捏合。
touch_multi_swipefrom_x int,from_y int,to_x int,to_y int,fingers? int (3),duration_ms? int (300),screenshot_after_ms? list[int]多指滑动手势(2-5 根手指),可用于切换工作区等系统手势
剪贴板(2 个工具)
工具参数描述
clipboard_get(none)读取当前剪贴板中的文本内容。需要在 session_start 中设置 enable_clipboard=true,并安装 wl-clipboard。
clipboard_settext str设置剪贴板文本内容。要求与 clipboard_get 相同。
窗口管理(3 个工具)
工具参数描述
launch_appcommand str,env? dict在运行中的会话内启动应用。返回 PID 和日志路径。
list_windows(none)列出所有可访问的应用窗口,并通过 AT-SPI2 显示每个窗口的标题及活动/焦点状态标记
focus_windowapp_name str根据应用名称聚焦窗口(不区分大小写)
UI 轮询(1 个工具)
工具参数描述
wait_for_elementquery str,app_name? str,timeout_ms? int (5000),poll_interval_ms? int (200),expected_states? list[str]轮询辅助功能树,直到出现与查询和/或状态匹配的元素,或超时。使用 expected_states 等待状态变化(例如 ["active"]、["checked"])。仅等待状态变化时,query 可以为空。
高级功能(3 个工具)
工具参数描述
dbus_callservice str,path str,interface str,method str,args? list[str]在隔离会话中调用任意 D-Bus 方法。适用于控制 KWin 脚本、特定应用的 D-Bus API 和系统服务。
read_app_logpid int,last_n_lines? int (50)按 PID 读取已启动应用的标准输出/标准错误。将 last_n_lines=0 设为读取全部输出。
wayland_infofilter_protocol? str列出会话中可用的 Wayland 协议。可用于验证协议访问权限(例如 plasma_window_management)。

帧捕获: 许多操作工具都接受可选的 screenshot_after_ms 参数(例如 [0, 50, 100, 200, 500]),用于在操作完成后的指定延迟(毫秒)捕获屏幕截图。这有助于观察悬停效果、点击动画和菜单过渡等短暂的 UI 状态,而无需额外的 MCP 往返调用。帧捕获使用快速的 KWin ScreenShot2 D-Bus 接口(每帧约 30-70 毫秒)。

工作原理

Claude Code / AI Agent
  |
  |  MCP (stdio)
  v
kwin-mcp server  (30 tools)       kwin-mcp-cli (interactive REPL)
  |                                  |
  +--- both delegate to AutomationEngine (core.py) ---+
  |
  |-- session_start (virtual) ---> dbus-run-session
  |                                 |-- at-spi-bus-launcher
  |                                 +-- kwin_wayland --virtual
  |                                       +-- [your app]
  |
  |-- session_connect (live) ----> existing KWin (real desktop / container)
  |
  |-- screenshot ---------------> KWin ScreenShot2 D-Bus (spectacle fallback)
  |
  |-- accessibility_tree -------> AT-SPI2 (via PyGObject)
  |-- find_ui_elements ---------> AT-SPI2 (via PyGObject)
  |-- wait_for_element ----------> AT-SPI2 (polling)
  |
  |-- mouse_* ------------------> KWin EIS D-Bus --> libei
  |-- keyboard_* ---------------> KWin EIS D-Bus --> libei
  |-- touch_* ------------------> KWin EIS D-Bus --> libei
  |    +-- screenshot_after_ms -> KWin ScreenShot2 D-Bus (fast frame capture)
  |
  |-- keyboard_type_unicode ----> wtype / wl-copy + Ctrl+V
  |-- clipboard_* --------------> wl-copy / wl-paste (wl-clipboard)
  |
  |-- launch_app / list_windows / focus_window
  |                                |-- subprocess spawn
  |                                +-- AT-SPI2 (via PyGObject)
  |
  |-- dbus_call -----------------> dbus-send (generic D-Bus)
  |-- read_app_log --------------> log file read
  +-- wayland_info --------------> wayland-info
三重隔离(+ 可选的主目录隔离)

kwin-mcp 提供了与宿主桌面的三层隔离:

  1. D-Bus 隔离——dbus-run-session 会创建一个私有会话总线。隔离会话的服务(KWin、AT-SPI2、portal)对宿主不可见。
  2. 显示隔离——kwin_wayland --virtual 会使用虚拟帧缓冲区创建独立的 Wayland 合成器。宿主显示器上不会出现任何窗口。
  3. 输入隔离——输入事件仅通过 KWin 的 EIS 接口注入隔离的合成器。宿主桌面不会收到来自 kwin-mcp 的输入。
  4. 主目录隔离(可选)——在 session_start 中设置 isolate_home=true 时,会创建一个临时 HOME 目录,并使用隔离的 XDG 目录(XDG_CONFIG_HOME、XDG_DATA_HOME、XDG_CACHE_HOME、XDG_STATE_HOME)。会话中的应用无法读取或修改宿主用户设置(例如 ~/.config/kdeglobals),从而提高测试的可复现性和安全性。XDG_RUNTIME_DIR 不会被隔离,因为 Wayland 套接字位于此目录中。
输入注入

鼠标、键盘和触摸事件通过 KWin 的私有 org.kde.KWin.EIS.RemoteDesktop D-Bus 接口注入。此接口会返回一个 libei 文件描述符,从而无需使用 XDG RemoteDesktop portal(否则会显示用户授权对话框)即可进行低级别输入模拟。连接使用:

  • 绝对指针定位,实现精准的坐标交互
  • 用于键盘输入的 evdev 键码,支持完整的 US QWERTY 映射
  • 平滑拖动插值(10 个以上中间步骤),实现逼真的拖动操作
  • 用于多点触控手势(轻触、滑动、捏合、多指滑动)的 EIS 触摸模拟
屏幕截图

screenshot 工具通过 KWin 的 org.kde.KWin.ScreenShot2 D-Bus 接口捕获屏幕(每帧约 30–70 ms),并以 spectacle CLI 作为回退方案。对于带有 screenshot_after_ms 参数的操作工具,会使用相同的 D-Bus 接口快速连续捕获。原始 ARGB 像素数据会从管道读取,并使用 Pillow 转换为 PNG。

无障碍树

通过 PyGObject(gi.repository.Atspi)查询隔离会话中的 AT-SPI2 无障碍总线。此总线会提供所有 UI 组件的结构化树,包含其角色(按钮、文本框、菜单项等)、名称、状态(已聚焦、已启用、可见等)、屏幕坐标和可用操作(点击、切换等)。

系统要求

要求详情
操作系统使用 KDE Plasma 6 的 Linux(Wayland 会话)
Python3.12 或更高版本
KWin支持 --virtual 标志的 kwin_wayland(KDE Plasma 6.x)
libei通常与 KWin 6.x 捆绑(EIS 输入模拟)
spectacleKDE 屏幕截图工具(CLI 模式)
AT-SPI2用于支持无障碍树的 at-spi2-core
PyGObjectGObject 内省 Python 绑定
D-Busdbus-python 绑定

可选依赖项:

软件包用途
wl-clipboard(wl-copy、wl-paste)clipboard_get、clipboard_set,以及 keyboard_type_unicode 的剪贴板回退方案
wtypekeyboard_type_unicode(优先于剪贴板回退方案)
wayland-utils(wayland-info)wayland_info 工具
安装系统依赖项
Arch Linux / Manjaro
sudo pacman -S kwin spectacle at-spi2-core python-gobject dbus-python-common

# Optional: for clipboard and Unicode input
sudo pacman -S wl-clipboard wtype wayland-utils
Fedora (KDE Spin)
sudo dnf install kwin-wayland spectacle at-spi2-core python3-gobject dbus-python

# Optional: for clipboard and Unicode input
sudo dnf install wl-clipboard wtype wayland-utils
openSUSE (KDE)
sudo zypper install kwin6 spectacle at-spi2-core python3-gobject python3-dbus-python

# Optional: for clipboard and Unicode input
sudo zypper install wl-clipboard wtype wayland-utils
Kubuntu / KDE Neon
sudo apt install kwin-wayland spectacle at-spi2-core python3-gi gir1.2-atspi-2.0 python3-dbus

# Optional: for clipboard and Unicode input
sudo apt install wl-clipboard wtype wayland-utils
## 安装

注意:PyPI 上的 kwin-mcp 名称对应上游项目(isac322/kwin-mcp,v0.7.0,MCP SDK 1.x)。本仓库是积极维护的分支(v0.9.0,MCP SDK 2.x);请从 git 或源代码检出安装。配置部分中的 uvx kwin-mcp 配置示例指向 PyPI 包。

使用 uv(推荐)
uv tool install git+https://github.com/VibeProgramm/kwin-mcp
使用 pip
pip install git+https://github.com/VibeProgramm/kwin-mcp
从源代码安装
git clone https://github.com/VibeProgramm/kwin-mcp.git
cd kwin-mcp
uv sync
uv run kwin-mcp

限制

  • 仅支持美式 QWERTY 键盘布局——keyboard_type 仅支持美式 QWERTY。对于非 ASCII 文本(韩文、CJK 等),请使用 keyboard_type_unicode,该功能需要安装 wtype 或 wl-clipboard。
  • 需要 KDE Plasma 6 或更高版本——不支持较旧的 KDE 版本或其他 Wayland 合成器(GNOME、Sway)。
  • AT-SPI2 的可用性因应用而异——某些应用可能无法通过 AT-SPI2 完整公开其控件树。
  • 触摸输入由 EIS 模拟——触摸事件通过 KWin 的 EIS 接口模拟,并非来自真实触摸屏设备。大多数应用都能正确处理模拟触摸,但某些应用的行为可能与实际触摸不同。
  • 剪贴板需要主动启用——剪贴板工具(clipboard_get、clipboard_set)默认禁用,因为 wl-copy 在隔离会话中可能会挂起。请在 session_start 中设置 enable_clipboard=true 启用,并确保已安装 wl-clipboard。
  • QMenu(原生上下文菜单)可能不会显示在 AT-SPI2 中——Qt 的 AT-SPI2 桥接对 Wayland 上的弹出菜单支持不完整。上下文菜单可能无法显示在 accessibility_tree 或 find_ui_elements 中。解决方法:使用 screenshot 目视定位菜单项,然后按坐标点击。
  • 屏幕边缘触发器无法与 EIS 输入配合使用——自动隐藏面板和 layer-shell 触发条依赖 Wayland 表面输入路由,而该路由可能无法响应 EIS 注入的指针事件。解决方法:改用 dbus_call 配合 KWin 脚本,或使用键盘快捷键。
  • AT-SPI2 坐标转换仅尽力而为——Wayland 客户端报告的是窗口局部坐标(按设计,它们不知道窗口在屏幕上的全局位置)。kwin-mcp 使用每个窗口在合成器端的几何信息(通过 KWin 脚本查询,并按标题匹配)将其转换为真实屏幕坐标。如果无法匹配窗口,坐标将回退为窗口局部坐标——请对照 screenshot 进行确认。

故障排除与调试

详细的 libei/EIS 诊断(KWIN_MCP_DEBUG_EI=1)

设置环境变量 KWIN_MCP_DEBUG_EI=1,即可为 EIS 输入注入路径启用详细诊断(kwin-mcp 直接连接到 KWin 的 libei):

KWIN_MCP_DEBUG_EI=1 uv run kwin-mcp

启用后,kwin_mcp.input 日志记录器会提升至 DEBUG 级别,并配置 stderr 处理器,记录 EIS 设备生命周期事件 (ADDED / REMOVED / RESUMED / PAUSED / SEAT_REMOVED)、设备停滞和连接重建情况。当输入注入无声无息地不起作用或行为异常时,可使用此功能:日志会显示 KWin 是否在输入操作期间暂停或移除其 EIS 设备,以及 kwin-mcp 是否成功重建连接。

KWIN_MCP_DEBUG_EI=1 uv run kwin-mcp 2>eis-debug.log
其他症状
  • session_start 输出中显示 No input backend available——KWin 未公开其 EIS RemoteDesktop 接口;会话会降级为仅支持截图和 AT-SPI2 的会话(无法注入输入)。请检查 KWin 版本(需要 Plasma 6)以及服务日志中的降级原因。
  • keyboard_type_unicode 在虚拟会话中失败——kwin_wayland --virtual 不会公开 wtype 所需的虚拟键盘协议;剪贴板回退方案(需要 wl-clipboard)是此类环境中的主要路径。

贡献

欢迎贡献!有关开发环境设置、代码风格指南和拉取请求流程,请参阅 CONTRIBUTING.md。

git clone https://github.com/VibeProgramm/kwin-mcp.git
cd kwin-mcp
uv sync
uv run ruff check src/
uv run ruff format --check src/
uv run ty check src/

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。