{
  "markdown": "# MCP Test Utils\n\n## 100% AI Code · Human Reviewed\n\n[![version: 3.10.1](https://img.shields.io/badge/version-3.10.1-blue.svg)](https://github.com/JeenyJAI/mcp-test-utils/releases) [![tools: 19](https://img.shields.io/badge/tools-19-green.svg)](#tools-19) [![AI generated: 100%](https://img.shields.io/badge/AI%20generated-100%25-purple.svg)](https://github.com/JeenyJAI/mcp-test-utils)\n\nMCP server for automated desktop UI testing. A single binary — no runtime, no dependencies, no installation.\n\n> **Windows x64 only.** macOS and Linux support is planned.\n\nGives AI agents eyes and hands: screenshots, window management, mouse, keyboard, UI Automation, OCR, file search.\n\n## Why\n\nAI agents can trigger actions in applications but can't see the screen. This server bridges that gap:\n\n```\nAgent triggers action → takes screenshot → sees the result →\nswitches window → clicks a button → verifies → writes report\n```\n\nFully autonomous, no user involvement required.\n\n## Demo\n\n> 10 tasks. One take. [Watch on YouTube →](https://www.youtube.com/watch?v=kiICWA5zQTk)\n\n[![MCP Test Utils — Full Demo](https://img.youtube.com/vi/kiICWA5zQTk/maxresdefault.jpg)](https://www.youtube.com/watch?v=kiICWA5zQTk)\n\n## MCP Test Utils vs Anthropic Computer Use\n\nClaude Cowork now includes built-in [Computer Use](https://claude.com/blog/dispatch-and-computer-use) — Claude takes screenshots and clicks through interfaces visually. It works with zero setup. MCP Test Utils takes a different approach: instead of guessing where to click from a screenshot, it reads the actual UI structure through Windows APIs.\n\n| | MCP Test Utils | Computer Use |\n|---|---|---|\n| **Click precision** | Exact — UI Automation API | Visual estimate from screenshot |\n| **Speed & token cost** | Fast, low cost — text responses | Slower, costly — image on every step |\n| **UI structure** | Full tree: roles, states, coordinates | Not available |\n| **OCR** | Word-level coordinates, multi-language | Not available (model vision only) |\n| **Window management** | API-based, window-relative coords | Visual navigation |\n| **File search** | Ripgrep engine built-in | Not available |\n| **Session logging** | JSONL + screenshots | Not available |\n| **Visual analysis** | ✅ Same Claude model, full-res 1:1 | ✅ Same Claude model |\n| **Setup** | Download binary, add to config | Built-in, one toggle |\n| **Mobile / Dispatch** | — | ✅ Tasks from phone |\n| **Cross-platform** | Windows (macOS/Linux planned) | macOS + Windows |\n\nMCP Test Utils is faster, more precise, and cheaper per action. Computer Use is easier to start and works across platforms. They complement each other.\n\n## Platforms\n\n| Platform | Status |\n|---|---|\n| Windows x64 | ✅ Full support |\n| macOS arm64 | ⏳ Planned |\n| Linux x64 | ⏳ Planned |\n\n## Tools (19)\n\n### Vision\n\n| Tool | Description |\n|---|---|\n| `take_screenshot` | Screenshot of the entire desktop with configurable quality |\n| `take_window_screenshot` | Screenshot of a specific window (screen or window capture mode) |\n| `read_screen_text` | OCR the entire screen (Windows.Media.Ocr) |\n| `read_region_text` | OCR a screen region with precise word coordinates |\n\n### Window Management\n\n| Tool | Description |\n|---|---|\n| `list_windows` | List windows with id, title, app, position, size, minimized, focused |\n| `focus_window` | Bring a window to front, restore if minimized |\n\n### Input\n\n| Tool | Description |\n|---|---|\n| `mouse_click` | Click (left / right / middle) at screen or window-relative coordinates |\n| `mouse_move` | Move cursor to a point |\n| `mouse_drag` | Drag from point A to point B |\n| `mouse_scroll` | Scroll the mouse wheel |\n| `keyboard_type` | Type text (full Unicode — Latin, Cyrillic, CJK, emoji) |\n| `keyboard_press` | Press a key (Enter, Tab, F1–F12, arrows, etc.) |\n| `keyboard_shortcut` | Key combinations (Ctrl+S, Alt+F4, Ctrl+Shift+P, etc.) |\n\n### Structured UI Access\n\n| Tool | Description |\n|---|---|\n| `list_ui_elements` | UI Automation tree — buttons, fields, menus with exact coordinates |\n\n### File Search\n\n| Tool | Description |\n|---|---|\n| `search_in_files` | Search text or regex in files within allowed directories (like VS Code Find in Files) |\n| `find_files` | Find files and directories by name pattern (glob), like \"Go to File\" |\n\n### Agent Guide\n\n| Tool | Description |\n|---|---|\n| `get_usage_guide` | Compact workflow guide for LLM agents — precision clicking, coordinate metadata, quality tips |\n\n### Session Logging\n\n| Tool | Description |\n|---|---|\n| `enable_logging` | Start recording tool calls to JSONL + screenshots (opt-in) |\n| `disable_logging` | Stop recording, get session stats |\n\n## Installation\n\n1. Download the binary from [Releases](https://github.com/JeenyJAI/mcp-test-utils/releases).\n2. Add it to your MCP client config. Example below is for Claude Desktop — for other clients, refer to their documentation.\n\n**Claude Desktop:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"test-utils\": {\n      \"command\": \"D:\\\\path\\\\to\\\\mcp-test-utils.exe\"\n    }\n  }\n}\n```\n\n3. Restart Claude Desktop.\n4. In chat, try: _\"Take a screenshot\"_ — the agent will return an image of your desktop.\n\n### With Logging and File Search (optional)\n\n```json\n{\n  \"mcpServers\": {\n    \"test-utils\": {\n      \"command\": \"D:\\\\path\\\\to\\\\mcp-test-utils.exe\",\n      \"env\": {\n        \"MCP_LOG_DIR\": \"D:\\\\path\\\\to\\\\logs\",\n        \"MCP_LOG_MAX_MB\": \"500\",\n        \"MCP_LOG_RETAIN_DAYS\": \"30\",\n        \"MCP_SEARCH_DIRS\": \"D:\\\\Projects\\\\app1;D:\\\\Projects\\\\app2\"\n      }\n    }\n  }\n}\n```\n\n## Quality Presets\n\nScreenshots support configurable quality to balance detail and token cost:\n\n| Preset | Scale | Format | Use Case |\n|---|---|---|---|\n| `full` | 100% | JPEG q90 | Maximum detail |\n| `standard` | 50% | JPEG q70 | Balanced (default) |\n| `compact` | 50% | PNG | When PNG is needed |\n| `minimal` | 25% | Grayscale | Lowest token cost |\n| `custom` | 10–100% | JPEG / PNG / Grayscale | Full control |\n\n## Environment Variables\n\n| Variable | Description | Default |\n|---|---|---|\n| `MCP_LOG_DIR` | Path for log sessions. Without it, logging tools are hidden | — |\n| `MCP_LOG_MAX_MB` | Session size limit (warning on exceed) | `500` |\n| `MCP_LOG_RETAIN_DAYS` | Auto-delete sessions older than N days. `0` to disable | `30` |\n| `MCP_SEARCH_DIRS` | Allowed directories for `search_in_files` (`;` on Windows, `:` on macOS/Linux). Without it, the tool is hidden | — |\n\n## How It Works\n\nMCP Test Utils is a JSON-RPC 2.0 server communicating over stdin/stdout. Any MCP-compatible client launches the binary, sends tool calls, and receives structured responses (text, base64 images). Tested with Claude Desktop.\n\nThe server uses native Windows APIs directly — Win32 GDI for screenshots, `SendInput` for mouse and keyboard, UI Automation COM API for element inspection, WinRT `Windows.Media.Ocr` for text recognition. File search uses the ripgrep engine (`grep-regex`, `grep-searcher`, `ignore`) — cross-platform, no external dependencies. No PowerShell, no external tools, no network access.\n\n## Use Cases\n\n- **Automated QA** — agent navigates the app, clicks through flows, takes screenshots at each step, writes a test report\n- **Desktop automation** — fill forms, copy data between windows, run workflows\n- **Accessibility audit** — scan UI Automation tree for missing labels or roles\n- **Visual regression** — screenshot comparison across releases\n- **Data extraction** — OCR text from applications that don't expose APIs\n- **Code search** — find patterns across multiple projects without leaving the agent session\n\n## Security\n\n- Responds only to requests from the MCP client\n- Opens no network ports\n- Writes nothing to disk (except opt-in logging)\n- Sends no data externally\n- **Screenshots capture the entire screen** — make sure no sensitive information is visible\n- **File search is sandboxed** — only directories in `MCP_SEARCH_DIRS` are accessible\n\n## Support us\n\nFree and unrestricted. If you find it useful — [jeenyjai.github.io](https://jeenyjai.github.io/)\n\n## License\n\nCopyright 2026 JeenyJAI. All rights reserved.\n\n<!-- mcp-name: io.github.JeenyJAI/mcp-test-utils -->\n\n---\n\n🚀 Created with [Claude](https://claude.ai)\n",
  "bytes": 8164,
  "sha": "8cb6b97739d7b80bc4c9c9925f5c647b4ebbfd8bbc201c0313c071b295e9aa07",
  "repo_slug": "jeenyjai/mcp-test-utils",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jeenyjai_mcp_test_utils_e227ae99/readme"
}