kwin-mcp

io.github.VibeProgramm由 GitHub 帳號 VibeProgramm 發布v0.9.0更新於 Oct 24, 2026

KDE Plasma 6 Wayland GUI automation for AI agents: 30 tools (EIS input, screenshots, AT-SPI2).

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

此 MCP 伺服器讓 AI 助理在 KDE Plasma 6 Wayland 上啟動、觀察並操作 Linux 圖形介面應用程式,可在隔離的虛擬工作階段或真實 KWin 工作階段中進行。

可以做什麼
啟動、連線與停止 KWin 工作階段(虛擬或即時),在工作階段中啟動應用程式、列出並聚焦視窗,讀取應用程式日誌、查看 Wayland 協定資訊並呼叫工作階段內的 D-Bus 方法。擷取螢幕截圖,可在動作後依指定延遲連續擷取多張畫面,並檢查或搜尋 AT-SPI2 無障礙樹、等待元素出現。注入滑鼠操作:點擊、移動、捲動、拖曳以及按下與放開按鍵。注入鍵盤操作:輸入文字、輸入 Unicode 文字、按下組合鍵以及按住與放開按鍵。注入觸控手勢:輕觸、滑動、捏合與多指滑動。啟用剪貼簿支援後可讀取與設定剪貼簿文字。
適用情境
適用於 KDE/Qt/GTK 應用程式的端對端圖形介面測試(包括 CI 中的無頭執行),讓代理透過無障礙樹與截圖操作桌面應用程式,以及在真實或容器內的 KWin 桌面上進行即時協作。
執行需求
Linux 上的 KDE Plasma 6 Wayland 環境、Python 3.12 或更新版本、支援虛擬工作階段的 kwin_wayland,以及 libei、spectacle、at-spi2-core、PyGObject 與 D-Bus 繫結。選用:wl-clipboard 用於剪貼簿工具與 Unicode 輸入備援,wtype 用於 Unicode 輸入,wayland-utils 用於列出協定。透過 uv 或 pip 從 git 安裝;不需要帳號或 API 金鑰。
安裝前請注意
即時模式會連線真實桌面並向其注入輸入,代理可能直接操作你目前看到的畫面;虛擬工作階段預設隔離。剪貼簿工具預設關閉,啟用後可讀取或覆寫剪貼簿內容。輸入注入不會跳出使用者確認對話框。dbus_call 可呼叫工作階段內任意 D-Bus 方法,launch_app 可執行任意命令。PyPI 上的同名套件對應另一個上游專案,應從此分支的 git 來源安裝。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 kwin-mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

kwin-mcp

Model Context Protocol server for Linux desktop GUI automation on KDE Plasma 6 Wayland

Actively maintained fork of isac322/kwin-mcp. This fork ships the fixes users were waiting for: MCP Python SDK 2.x support, text input in virtual sessions (host keymap isolation), reliable window focus, bounded startup waits, silent input-drop fix, honest error contracts — see the changelog and releases. Install: uv tool install git+https://github.com/VibeProgramm/kwin-mcp

[Python 3.12+] [License: MIT] [CI]

A Model Context Protocol (MCP) server that enables AI agents (Claude Code, Cursor, and other MCP clients) to launch, interact with, and observe any Wayland application in a fully isolated virtual KWin session -- without affecting the user's desktop. It also supports live desktop automation by connecting to an existing KWin session (real desktop or container) for collaborative workflows. With 30 MCP tools covering mouse, keyboard, touch, clipboard, accessibility tree inspection, screenshot capture, and window management, kwin-mcp provides everything needed for end-to-end GUI testing and desktop automation on Linux.

Table of Contents

Why kwin-mcp?

  • Isolated sessions -- Each session runs in its own dbus-run-session + kwin_wayland --virtual sandbox. Your host desktop is never affected.
  • Live session support -- Connect to a real KDE Plasma desktop or a KWin instance inside a container (e.g. systemd-nspawn) for collaborative "share my screen" workflows.
  • No screenshots required for interaction -- The AT-SPI2 accessibility tree gives the AI agent structured widget data (roles, names, coordinates, states, available actions), so it can interact with UI elements without relying solely on vision.
  • Zero authorization prompts -- Uses KWin's private EIS (Emulated Input Server) D-Bus interface directly, bypassing the XDG RemoteDesktop portal. No user confirmation dialogs.
  • Works with any Wayland app -- Anything that runs on KDE Plasma 6 Wayland works: Qt, GTK, Electron, and more. Input is injected via the standard libei protocol.
  • Full input coverage -- Mouse, keyboard, multi-touch, and clipboard -- all injected through the isolated session for complete desktop automation.

Use Cases

Automated GUI Testing

Run end-to-end GUI tests for KDE/Qt/GTK applications in headless isolated sessions. kwin-mcp launches each app in its own virtual KWin compositor, interacts via mouse, keyboard, and touch input, then verifies results through screenshots and the accessibility tree -- all without a physical display.

AI-Driven Desktop Automation

Let AI agents like Claude Code autonomously operate desktop applications. The agent reads the accessibility tree to understand the UI, performs actions through 30 MCP tools, and observes the results via screenshots -- creating a complete feedback loop for any Wayland application.

Live Desktop Collaboration

Connect to your real desktop session and let Claude observe and interact with what you see. Use session_connect or pass --default-live-session to make live mode the default. Also supports attaching to KWin running inside containers (e.g. systemd-nspawn) for isolated agent desktops.

Headless GUI Testing in CI/CD

Integrate Linux desktop GUI testing into CI/CD pipelines. kwin-mcp's virtual sessions require no X11 or physical display server, making it suitable for headless environments like GitHub Actions or GitLab CI runners on Linux.

Kiosk and Embedded Device Automation

Automate kiosk interfaces and embedded Linux desktops running KDE Plasma or a bare KWin Wayland compositor. Use session_start for isolated virtual testing of kiosk UIs, or session_connect to attach directly to a live kiosk or embedded device session for real-time automation and diagnostics.

Quick Start

Requires KDE Plasma 6 on Wayland. See System Requirements for details.

1. Install

bash
# Using uv (recommended)uv tool install git+https://github.com/VibeProgramm/kwin-mcp
# Or from a source checkoutgit clone https://github.com/VibeProgramm/kwin-mcp.gitcd kwin-mcpuv tool install .

2. Configure Claude Code

Add to your project's .mcp.json:

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

3. Use it

Ask Claude Code to launch and interact with any GUI application:

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

Claude Code will autonomously start an isolated session, launch the app, read the accessibility tree to find buttons, click them, and take a screenshot to verify the result.

Configuration

Recommended: install as a plugin

The fastest way to wire kwin-mcp into your editor is to install one of the bundled plugins. Each plugin auto-registers the MCP server and ships the kwin-desktop-automation skill, which teaches the agent which tool to call when (session-mode selection, the observe → act → verify loop, US-QWERTY vs Unicode typing, AT-SPI2 coordinate translation, and other platform pitfalls).

Claude Code — install the plugin from the marketplace:

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

OpenCode — add the npm plugin to your opencode.json:

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

For the full integration guide (manual fallback, customising the skill, troubleshooting), see docs/ai-agent-integration.md.

Claude Code

Add to your project's .mcp.json:

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

Or if installed globally:

json
{  "mcpServers": {    "kwin-mcp": {      "command": "kwin-mcp"    }  }}

Claude Desktop

Add to your claude_desktop_config.json:

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

Running Directly

bash
# As an installed scriptkwin-mcp
# As a Python modulepython -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-sessionkwin-mcp-cli --default-live-session

Available Tools

Session Management (3 tools)

ToolParametersDescription
session_startapp_command? str, screen_width? int (0 = auto-detect), screen_height? int (0 = auto-detect), enable_clipboard? bool (false), keep_screenshots? bool (false), isolate_home? bool (false), keep_home? bool (false), env? dictStart an isolated KWin Wayland session, optionally launching an app. A screen size of 0 auto-detects the bounding box of the logical desktop (all enabled outputs / connected monitors). Set enable_clipboard=true to enable clipboard tools (requires wl-clipboard). Set keep_screenshots=true to preserve screenshot files after session_stop. Set isolate_home=true to create a temporary HOME with isolated XDG directories (config, data, cache, state), preventing apps from reading/writing host user settings. Set keep_home=true to preserve the isolated home directory after session_stop. Pass extra environment variables via env.
session_connectdbus_address? str, wayland_display? str, keep_screenshots? bool (false)Connect to an existing KWin session (real desktop or container). Defaults to $DBUS_SESSION_BUS_ADDRESS and $WAYLAND_DISPLAY. Clipboard is always enabled. session_stop only disconnects without killing KWin or pre-existing apps.
session_stop(none)Stop the session and clean up. For virtual sessions: terminates KWin and all apps. For live sessions: disconnects without killing KWin or pre-existing apps.

Observation (3 tools)

ToolParametersDescription
screenshotinclude_cursor? bool (false)Capture a screenshot of the virtual display (saved as PNG, returns file path)
accessibility_treeapp_name? str, max_depth? int (15), role? strGet the AT-SPI2 widget tree with roles, names, states, and screen coordinates (translated from window-local coordinates via compositor-side window geometry). Use role to filter to specific element types (e.g. "button", "check box"). Non-matching elements are hidden but their children are still traversed.
find_ui_elementsquery str, app_name? str, states? list[str]Search for UI elements by name, role, or description (case-insensitive). Returns screen coordinates suitable for mouse_click and friends. Optionally filter by AT-SPI2 states (e.g. ["focused"], ["active", "visible"]). query can be empty when filtering by states only.

Mouse Input (6 tools)

ToolParametersDescription
mouse_clickx int, y int, button? str ("left"), double? bool, triple? bool, modifiers? list[str], hold_ms? int (0), screenshot_after_ms? list[int]Click at coordinates. Supports left/right/middle, single/double/triple click, modifier keys (e.g. ["ctrl", "shift"]), and long-press via hold_ms.
mouse_movex int, y int, screenshot_after_ms? list[int]Move the cursor (hover) to coordinates without clicking
mouse_scrollx int, y int, delta int, horizontal? bool, discrete? bool, steps? int (1)Scroll at coordinates. delta positive = down/right, negative = up/left. Use discrete=true for wheel ticks, steps to split into smooth increments.
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]Drag from one point to another with smooth interpolation. Supports custom waypoints for complex drag paths.
mouse_button_downx int, y int, button? str ("left")Press a mouse button at coordinates without releasing. Use with mouse_button_up for manual drag control.
mouse_button_upx int, y int, button? str ("left")Release a previously pressed mouse button at coordinates

Keyboard Input (5 tools)

ToolParametersDescription
keyboard_typetext str, screenshot_after_ms? list[int]Type a string of text character by character (US QWERTY layout)
keyboard_type_unicodetext str, screenshot_after_ms? list[int]Type arbitrary Unicode text (Korean, CJK, etc.) via wtype or clipboard fallback (wl-copy + Ctrl+V). Requires wtype or wl-clipboard installed.
keyboard_keykey str, screenshot_after_ms? list[int]Press a key or key combination (e.g., Return, ctrl+c, alt+F4, shift+Tab)
keyboard_key_downkey strPress and hold a key without releasing. Useful for holding modifiers across multiple actions (e.g., hold Ctrl while clicking items).
keyboard_key_upkey strRelease a previously held key

Touch Input (4 tools)

ToolParametersDescription
touch_tapx int, y int, hold_ms? int (0), screenshot_after_ms? list[int]Tap at coordinates. Use hold_ms for long-press gestures.
touch_swipefrom_x int, from_y int, to_x int, to_y int, duration_ms? int (300), screenshot_after_ms? list[int]Swipe from one point to another with configurable duration
touch_pinchcenter_x int, center_y int, start_distance int, end_distance int, duration_ms? int (500), screenshot_after_ms? list[int]Two-finger pinch gesture. end_distance < start_distance = pinch in, end_distance > start_distance = pinch out.
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]Multi-finger swipe gesture (2-5 fingers) for system gestures like workspace switching

Clipboard (2 tools)

ToolParametersDescription
clipboard_get(none)Read the current clipboard text content. Requires enable_clipboard=true in session_start and wl-clipboard installed.
clipboard_settext strSet the clipboard text content. Same requirements as clipboard_get.

Window Management (3 tools)

ToolParametersDescription
launch_appcommand str, env? dictLaunch an application inside the running session. Returns PID and log path.
list_windows(none)List all accessible application windows with per-window titles and active/focused state markers via AT-SPI2
focus_windowapp_name strFocus a window by application name (case-insensitive match)

UI Polling (1 tool)

ToolParametersDescription
wait_for_elementquery str, app_name? str, timeout_ms? int (5000), poll_interval_ms? int (200), expected_states? list[str]Poll the accessibility tree until an element matching the query and/or states appears or timeout expires. Use expected_states to wait for state changes (e.g. ["active"], ["checked"]). query can be empty when waiting for state changes only.

Advanced (3 tools)

ToolParametersDescription
dbus_callservice str, path str, interface str, method str, args? list[str]Call any D-Bus method in the isolated session. Useful for controlling KWin scripting, app-specific D-Bus APIs, and system services.
read_app_logpid int, last_n_lines? int (50)Read stdout/stderr output of a launched app by PID. Set last_n_lines=0 for all output.
wayland_infofilter_protocol? strList Wayland protocols available in the session. Useful for verifying protocol access (e.g., plasma_window_management).

Frame capture: Many action tools accept an optional screenshot_after_ms parameter (e.g., [0, 50, 100, 200, 500]) that captures screenshots at specified delays (in milliseconds) after the action completes. This is useful for observing transient UI states like hover effects, click animations, and menu transitions without extra MCP round-trips. Frame capture uses the fast KWin ScreenShot2 D-Bus interface (~30-70ms per frame).

How It Works

Claude Code / AI Agent  |  |  MCP (stdio)  vkwin-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

Triple Isolation (+ Optional Home Isolation)

kwin-mcp provides three layers of isolation from the host desktop:

  1. D-Bus isolation -- dbus-run-session creates a private session bus. The isolated session's services (KWin, AT-SPI2, portals) are invisible to the host.
  2. Display isolation -- kwin_wayland --virtual creates its own Wayland compositor with a virtual framebuffer. No windows appear on the host display.
  3. Input isolation -- Input events are injected through KWin's EIS interface into the isolated compositor only. The host desktop receives no input from kwin-mcp.
  4. Home directory isolation (optional) -- When isolate_home=true is set in session_start, a temporary HOME directory is created with isolated XDG directories (XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_CACHE_HOME, XDG_STATE_HOME). Apps in the session cannot read or modify host user settings (e.g. ~/.config/kdeglobals), improving test reproducibility and safety. XDG_RUNTIME_DIR is intentionally not isolated because the Wayland socket resides there.

Input Injection

Mouse, keyboard, and touch events are injected through KWin's private org.kde.KWin.EIS.RemoteDesktop D-Bus interface. This returns a libei file descriptor that allows low-level input emulation without requiring the XDG RemoteDesktop portal (which would show a user authorization dialog). The connection uses:

  • Absolute pointer positioning for precise coordinate-based interaction
  • evdev keycodes with full US QWERTY mapping for keyboard input
  • Smooth drag interpolation (10+ intermediate steps) for realistic drag operations
  • EIS touch emulation for multi-touch gestures (tap, swipe, pinch, multi-finger swipe)

Screenshot Capture

The screenshot tool captures via the KWin org.kde.KWin.ScreenShot2 D-Bus interface (~30-70ms per frame), with spectacle CLI as a fallback. For action tools with the screenshot_after_ms parameter, the same D-Bus interface is used for fast burst capture. Raw ARGB pixel data is read from a pipe and converted to PNG using Pillow.

Accessibility Tree

The AT-SPI2 accessibility bus within the isolated session is queried via PyGObject (gi.repository.Atspi). This provides a structured tree of all UI widgets with their roles (button, text field, menu item, etc.), names, states (focused, enabled, visible, etc.), screen coordinates, and available actions (click, toggle, etc.).

System Requirements

RequirementDetails
OSLinux with KDE Plasma 6 (Wayland session)
Python3.12 or later
KWinkwin_wayland with --virtual flag support (KDE Plasma 6.x)
libeiUsually bundled with KWin 6.x (EIS input emulation)
spectacleKDE screenshot tool (CLI mode)
AT-SPI2at-spi2-core for accessibility tree support
PyGObjectGObject introspection Python bindings
D-Busdbus-python bindings

Optional dependencies:

PackageRequired for
wl-clipboard (wl-copy, wl-paste)clipboard_get, clipboard_set, and keyboard_type_unicode clipboard fallback
wtypekeyboard_type_unicode (preferred over clipboard fallback)
wayland-utils (wayland-info)wayland_info tool

Installing System Dependencies

Arch Linux / Manjaro
bash
sudo pacman -S kwin spectacle at-spi2-core python-gobject dbus-python-common
# Optional: for clipboard and Unicode inputsudo pacman -S wl-clipboard wtype wayland-utils
Fedora (KDE Spin)
bash
sudo dnf install kwin-wayland spectacle at-spi2-core python3-gobject dbus-python
# Optional: for clipboard and Unicode inputsudo dnf install wl-clipboard wtype wayland-utils
openSUSE (KDE)
bash
sudo zypper install kwin6 spectacle at-spi2-core python3-gobject python3-dbus-python
# Optional: for clipboard and Unicode inputsudo zypper install wl-clipboard wtype wayland-utils
Kubuntu / KDE Neon
bash
sudo apt install kwin-wayland spectacle at-spi2-core python3-gi gir1.2-atspi-2.0 python3-dbus
# Optional: for clipboard and Unicode inputsudo apt install wl-clipboard wtype wayland-utils

Installation

Note: the kwin-mcp name on PyPI tracks the upstream project (isac322/kwin-mcp, v0.7.0, MCP SDK 1.x). This repository is the actively maintained fork (v0.9.0, MCP SDK 2.x); install it from git or from a source checkout. The uvx kwin-mcp config examples in the Configuration section resolve to the PyPI package.

Using uv (recommended)

bash
uv tool install git+https://github.com/VibeProgramm/kwin-mcp

Using pip

bash
pip install git+https://github.com/VibeProgramm/kwin-mcp

From source

bash
git clone https://github.com/VibeProgramm/kwin-mcp.gitcd kwin-mcpuv syncuv run kwin-mcp

Limitations

  • US QWERTY keyboard layout only -- keyboard_type supports US QWERTY only. For non-ASCII text (Korean, CJK, etc.), use keyboard_type_unicode, which requires wtype or wl-clipboard installed.
  • KDE Plasma 6+ required -- Older KDE versions or other Wayland compositors (GNOME, Sway) are not supported.
  • AT-SPI2 availability varies -- Some applications may not fully expose their widget tree via AT-SPI2.
  • Touch input is EIS-emulated -- Touch events are emulated through KWin's EIS interface, not from a real touchscreen device. Most applications handle emulated touch correctly, but some may behave differently from physical touch.
  • Clipboard requires opt-in -- Clipboard tools (clipboard_get, clipboard_set) are disabled by default because wl-copy can hang in isolated sessions. Enable with enable_clipboard=true in session_start, and ensure wl-clipboard is installed.
  • QMenu (native context menus) may not appear in AT-SPI2 -- Qt's AT-SPI2 bridge has incomplete support for popup menus on Wayland. Context menus may not be visible in accessibility_tree or find_ui_elements. Workaround: use screenshot to visually locate menu items and click by coordinates.
  • Screen edge triggers do not work with EIS input -- Auto-hide panels and layer-shell trigger strips rely on Wayland surface input routing, which may not respond to EIS-injected pointer events. Workaround: use dbus_call with KWin scripting or keyboard shortcuts instead.
  • AT-SPI2 coordinate translation is best-effort -- Wayland clients report window-local coordinates (they do not know their global screen position by design). kwin-mcp translates them to true screen coordinates using each window's compositor-side geometry (queried from KWin scripting, matched by caption). If a window cannot be matched, its coordinates fall back to window-local -- cross-reference with screenshot to disambiguate.

Troubleshooting & Debugging

Verbose libei/EIS diagnostics (KWIN_MCP_DEBUG_EI=1)

Set the environment variable KWIN_MCP_DEBUG_EI=1 to enable verbose diagnostics for the EIS input injection path (kwin-mcp's direct libei connection to KWin):

bash
KWIN_MCP_DEBUG_EI=1 uv run kwin-mcp

When enabled, the kwin_mcp.input logger is raised to DEBUG level with a stderr handler and logs EIS device lifecycle events (ADDED / REMOVED / RESUMED / PAUSED / SEAT_REMOVED), device stalls, and connection rebuilds. Use it when input injection silently does nothing or behaves erratically: the log shows whether KWin is pausing/removing its EIS devices around input bursts and whether kwin-mcp manages to rebuild the connection.

bash
KWIN_MCP_DEBUG_EI=1 uv run kwin-mcp 2>eis-debug.log

Other symptoms

  • No input backend available in session_start output — KWin did not expose its EIS RemoteDesktop interface; the session degrades to a screenshot/AT-SPI2-only session (no injection). Check the KWin version (Plasma 6 required) and the server log for the degradation reason.
  • keyboard_type_unicode fails in virtual sessions — kwin_wayland --virtual does not expose the virtual-keyboard protocol wtype needs; the clipboard fallback (requires wl-clipboard) is the primary path there.

Contributing

Contributions are welcome! See CONTRIBUTING.md for development setup, code style guidelines, and the pull request process.

bash
git clone https://github.com/VibeProgramm/kwin-mcp.gitcd kwin-mcpuv syncuv run ruff check src/uv run ruff format --check src/uv run ty check src/

License

MIT

來源:README.md,提交 7cef7af

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.9.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分