MCP Test Utils

io.github.JeenyJAI由 GitHub 帳號 JeenyJAI 發布v3.27.23更新於 Oct 27, 2026

Desktop UI automation for AI agents: verified clicks, UI Automation, OCR, scenario runs, recording

概覽

AI 產生的概覽

Windows 桌面 UI 自動化伺服器,讓 AI 助理看見螢幕、點擊輸入、讀取 UI Automation 樹,並重播已儲存的測試情境。

可以做什麼
  • 擷取整個桌面或指定視窗,並用 OCR 讀取螢幕文字
  • 列出、聚焦、啟動和關閉視窗,檢視 UI Automation 元素樹、焦點與文件文字
  • 點擊、移動、拖曳、捲動,輸入 Unicode 文字並按鍵或快速鍵,可選擇鎖定輸入
  • 等待視窗或元素,批次執行最多 20 個呼叫,錄製草稿情境並重播情境、套件或資料列並產生通過/失敗報告
  • 檢查無障礙缺陷,讀取受測程序的内存、控制代碼與 CPU 數據
  • 在允許目錄內依文字或正規表示式搜尋、依萬用字元尋找檔案,並可選擇記錄工作階段日誌
適用情境
適合在 Windows 上進行桌面自動化 QA 與回歸測試:驅動應用程式走完流程、逐步截圖、在建置後或 CI 中重播已儲存的情境、把手動操作錄成測試草稿,以及進行無障礙與資源洩漏檢查。
執行需求
僅支援 Windows x64,目前沒有 macOS 或 Linux 版本。只需下載單一 exe,由 MCP 用戶端透過 stdio 啟動,不需執行環境或安裝程式。選用環境變數可開啟功能:MCP_LOG_DIR 啟用日誌工具,MCP_SEARCH_DIRS 啟用檔案搜尋,MCP_LAUNCH_APPS 啟用 launch_app,另有 MCP_NOTIFY、MCP_INPUT_LOCK 和 MCP_INPUT_LOCK_STALL_MS。情境超過 50 步需要授權金鑰。
安裝前請注意
它會操控真實的滑鼠和鍵盤,呼叫期間會暫停你的輸入,按 Esc 可恢復。截圖會擷取整個螢幕,敏感資訊可能因此暴露給助理。它可以關閉視窗並啟動 MCP_LAUNCH_APPS 中列出的程式。錄製會讀取輸入的文字,但從不讀取密碼欄位。啟用後會將日誌和錄製草稿寫入磁碟。更新檢查只在你點擊時才連網。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

MCP Test Utils

[version: 3.27.23] [tools: 31]

MCP server for automated desktop UI testing. A single binary — no runtime, no dependencies, no installer.

Windows x64 only. There are no macOS or Linux builds yet. If you need one, write to [email protected]: requests decide what comes next.

Gives AI agents eyes and hands: screenshots, window management, mouse, keyboard, UI Automation, OCR, file search. Replays saved scenarios as regression runs — after every build, without an agent. Records what you do into a draft scenario, checks accessibility, watches the resources of the application under test.

Why

AI agents can trigger actions in applications but can't see the screen. This server bridges that gap:

Agent triggers action → takes screenshot → sees the result →switches window → clicks a button → verifies → writes report

Fully autonomous, no user involvement required.

Demo

[MCP Test Utils 3.26 — a saved scenario replays 232 steps in 66 s]
3.26 — Scenario run
Claude replays a saved test: 232 steps, one call, 66 s
[MCP Test Utils — installation, setup and the basic tools]
Installation and setup
Setting up the server and the basic tools

Setup

  1. Download mcp-test-utils.exe from Releases (the .sig file next to it is for the built-in updater — you do not need it).
  2. Add it to your MCP client:

Claude Desktop: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "test-utils": {      "command": "D:\\path\\to\\mcp-test-utils.exe"    }  }}

Claude Code:

claude mcp add test-utils -- "D:\path\to\mcp-test-utils.exe"

For other clients, see their documentation.

  1. Restart the client.
  2. In chat, try: "Take a screenshot" — the agent will return an image of your desktop.

Optional settings (logging, file search, starting programs) go into env — see Environment variables:

json
{  "mcpServers": {    "test-utils": {      "command": "D:\\path\\to\\mcp-test-utils.exe",      "env": {        "MCP_LOG_DIR": "D:\\path\\to\\logs",        "MCP_SEARCH_DIRS": "D:\\Projects\\app1;D:\\Projects\\app2",        "MCP_LAUNCH_APPS": "C:\\Program Files\\MyApp\\myapp.exe"      }    }  }}

Tools (31)

Four of them appear only when configured: search_in_files and find_files with MCP_SEARCH_DIRS, enable_logging and disable_logging with MCP_LOG_DIR — by default the server lists 27 tools.

Vision

ToolDescription
take_screenshotScreenshot of the entire desktop; quality presets from full to minimal (fewer tokens)
take_window_screenshotScreenshot of a specific window
read_screen_textOCR the entire screen (Windows OCR)
read_region_textOCR a screen region with precise word coordinates

Window management

ToolDescription
list_windowsList windows with id, title, app, process id, position, size, state
focus_windowBring a window to the front and restore it if minimized; optionally set its position and size
launch_appStart a program from the allowlist of the server config (MCP_LAUNCH_APPS) and wait for its window
close_windowClose a window as its X button would and wait until it is gone; reports a "Save changes?" prompt

Input

ToolDescription
mouse_clickClick an element by id or at coordinates (left / right / middle, double); can wait for the expected effect and retry
mouse_moveMove the cursor to a point or to a UI element
mouse_dragDrag between elements or points at a human pace (HTML5 drag-and-drop works)
mouse_scrollScroll the mouse wheel over an element and wait until the scrolling stops
keyboard_typeType text (full Unicode — Latin, Cyrillic, CJK, emoji) and check that the field shows what was typed
keyboard_pressPress a key (Enter, Tab, F1–F12, arrows, etc.), optionally several times
keyboard_shortcutPress a key combination (Ctrl+S, Alt+F4, Ctrl+Shift+P, etc.)

Structured UI access

ToolDescription
list_ui_elementsUI Automation tree — buttons, fields, menus with ids, values, states and exact coordinates; filters by name, value, class
get_focused_elementWhich element has keyboard focus now, and in which window
read_textFull text of a document or field through UI Automation (up to 100 000 characters per call), no OCR
ui_actionAct on an element without mouse or keyboard: invoke, toggle, expand, select an option, set a value, scroll into view
check_accessibilityAccessibility defects: unnamed controls, controls the Tab key cannot reach, duplicate ids, zero-size controls

Process

ToolDescription
process_infoMemory, handles, GDI objects, threads and CPU of the app under test — call it repeatedly to spot leaks

Waiting, batching and scenarios

ToolDescription
wait_forWait for a window, an element or its state instead of sleeping
batchRun up to 20 tool calls in one request, with find and assert steps
run_scenarioReplay a saved scenario, a suite or data rows and get a pass/fail report (see Regression runs)
record_scenarioRecord what you do in one window into a draft scenario (see Recording)

File search

ToolDescription
search_in_filesSearch text or regex in files within allowed directories (like VS Code Find in Files)
find_filesFind files and directories by name pattern (glob), like "Go to File"

Agent guide

ToolDescription
get_usage_guideUsage guide for agents: core rules + sections on request
prepare_feedbackPrepare a suggestions file for the author (personal data masked; you review it and send it by email — nothing is sent automatically)

Session logging

ToolDescription
enable_loggingStart recording tool calls to JSONL + screenshots (opt-in)
disable_loggingStop recording, get session stats

Regression runs without an agent

An agent finds a path through your application once and saves it as a scenario — a JSON file. After that the scenario replays without an agent: fast, the same way every time, no tokens spent.

mcp-test-utils --check order-form.json     # validate the file, touch nothingmcp-test-utils --run order-form.json       # run: report in the console and in order-form.report.json
  • Exit codes: 0 — passed, 1 — a step failed, 2 — did not run. Ready for a CI job after each build.
  • On a failure you get a screenshot, the element tree and a hint: either the scenario is stale or the application has changed.
  • An agent runs a scenario with run_scenario(path) and learns the format from get_usage_guide(section: "scenarios").
  • Suites and data rows: --suite runs several scenario files in order with one summary; --data rows.csv runs a scenario once per row (columns become variables); --junit report.xml adds JUnit XML for CI.
    mcp-test-utils --suite regress.suite.json --junit regress.xml
  • Without a license key a scenario runs up to 50 steps (see License key).

Recording

Do the steps yourself and get a draft scenario instead of describing them to an agent:

mcp-test-utils --record order-form.json --app myapp

Only that window and its dialogs are recorded, with a notice on screen; Ctrl+Alt+Shift+R (or Enter in the console) stops the recording. Password fields are never read; text typed into a terminal is recorded only with --keys-text. An agent can start the same recording with record_scenario.

Environment variables

VariableDescriptionDefault
MCP_LOG_DIRPath for log sessions. Without it, logging tools are hidden—
MCP_LOG_MAX_MBSession size limit (warning when exceeded)500
MCP_LOG_RETAIN_DAYSAuto-delete sessions older than N days. 0 to disable30
MCP_SEARCH_DIRSAllowed directories for search_in_files and find_files (separated by ;). Without it, both are hidden—
MCP_LAUNCH_APPSPrograms (.exe files or folders, separated by ;) that launch_app may start. Shells, script hosts and interpreters are refused even when listed. Without it, launch_app starts nothing—
MCP_NOTIFYoff hides the tray icon and the live call log window—
MCP_INPUT_LOCKoff disables the keyboard and mouse lock while the server sends input—
MCP_INPUT_LOCK_STALL_MSServer silence (ms) after which the lock releases your input60000

Tray icon, updates and input lock

  • A tray icon shows a live log of tool calls, one tab per session, errors in red; MCP_NOTIFY=off hides it.
  • Updates: tray menu → Check for updates…. Only a release signed by the author is installed; afterwards restart your MCP client. The server goes online only when you click.
  • Input lock: while the server types or clicks, your keyboard and mouse buttons are paused (the pointer still moves). Press Esc to stop the action and get your input back. MCP_INPUT_LOCK=off turns the lock off.

Feedback

If an agent hits a gap in the tools, it offers to prepare a short suggestions file (prepare_feedback). The file goes to Documents\mcp-test-utils feedback\, with personal data masked and no screenshots; review it and email it to [email protected]. Nothing is sent automatically.

Use cases

  • Automated QA — the agent navigates the app, clicks through flows, takes screenshots at each step, writes a test report
  • Regression runs — replay saved scenarios after each build, from a script or a CI job, without an agent
  • Recorded tests — walk through a path yourself once, get a draft scenario, let the agent turn it into a test
  • Desktop automation — fill forms, copy data between windows, run workflows
  • Accessibility audit — check_accessibility finds unnamed controls, controls the Tab key cannot reach, duplicate ids
  • Resource leaks — process_info shows handles and GDI objects growing across repeated calls
  • Visual checks — the agent compares screenshots between builds
  • Data extraction — read document text through UI Automation, or OCR text from applications that don't expose it
  • Code search — find patterns across multiple projects without leaving the agent session

Security

  • Responds only to requests from the MCP client; opens no network ports
  • Writes files only when you ask: logs, scenario reports and JUnit files, recorded drafts, sealed scenarios, the feedback file, the license file — plus small settings files in %LOCALAPPDATA%\mcp-test-utils\ and an update you install
  • Sends no data externally; goes online only when you click Check for updates (and Download and install) in the tray window — an agent's tool call never does, and only a file signed by the author is installed
  • Holds your keyboard and mouse buttons only during a call, batch or scenario run that sends input — Esc releases them at once
  • Starts only the programs you list in MCP_LAUNCH_APPS (never shells or interpreters); a forced close_window terminates only a program it started
  • Records only on an explicit command, with a notice on screen the whole time; password fields are never read
  • Screenshots capture the entire screen — make sure no sensitive information is visible
  • File search is sandboxed — only directories in MCP_SEARCH_DIRS are accessible

How it works

MCP Test Utils is an MCP server over stdin/stdout: your MCP client starts the exe and calls its tools. It uses native Windows APIs (UI Automation, Win32 input, Windows OCR) — no PowerShell, no helper tools, no network access except the update check you start. Tested with Claude Desktop and Claude Code.

License key

All tools are free. A license key only lifts the 50-step limit of scenario runs.

For now, keys are issued through early access: the first 30 users get a free one-year key in exchange for short feedback after the first month — write to [email protected] with your email and the machine code of your computer. A key is bound to that computer. Your agent sees the code in the second line of get_usage_guide, or print it yourself:

mcp-test-utils --machine-id

Register the key once on that computer:

mcp-test-utils --set-license <email> <key>

Reinstalling Windows or replacing the motherboard alone keeps the key valid; a new computer needs a new key — just write again.

A sealed scenario runs anywhere without the limit — that file only, exactly as sealed. On the licensed computer mcp-test-utils --seal order-form.json writes a seal into the file; a CI agent or a colleague without a key then runs it in full. Any change to its steps (or to the files it includes) breaks the seal — seal it again on the licensed computer.

Support us

If you find it useful — jeenyjai.github.io

License

Copyright 2026 JeenyJAI. All rights reserved.


🚀 Created with Claude

來源:README.md,提交 10459aa

工具

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

版本歷史

4
  1. v3.27.23最新Oct 19, 2026
  2. v3.26.43Oct 16, 2026
  3. v3.25.1Sep 23, 2026
  4. v3.10.1Sep 16, 2026

評分

已滿足適用檢查項的 40%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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

    請在儲存庫或註冊中心條目中宣告授權條款。