Oswright MCP server
io.github.Ask-812/oswright·v0.8.2·3 starsWindows desktop automation that re-reads only what changed: 7x fewer tokens per task.
3 stars71 downloads/wk
Reviews
Write oneNobody has reviewed Oswright yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Oswright tools (43)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
atlas_statsReport what the screen atlas has remembered and how often it helped.
click_elementFind on-screen text via the resolution cascade and click it.
click_textFind text on screen using OCR and click on it. Auto-retries until found or timeout. Returns action result and a screenshot of current screen state.
click_ui_elementClick a UI element using the accessibility tree (Windows only). More reliable than OCR — finds elements deterministically by their role and name.
close_windowClose a window by its title (substring match). Sends WM_CLOSE. This may discard unsaved work in the target application. Returns action result and a screenshot.
double_click_textFind text on screen using OCR and double-click on it. Returns action result and a screenshot of current screen state.
fill_fieldFind a text label on screen, click it, clear the field, and type a value. Useful for filling form fields by their label text. Returns action result and a screenshot of current screen state.
fill_formFill multiple form fields in one call. Each field is identified by its label text and filled with the given value. Reduces round-trips for forms. Returns action result and a screenshot of current screen state.
fill_ui_elementSet the value of a UI element (e.g., type text into a text box) using the accessibility tree (Windows only). More reliable than OCR-based fill.
find_elementFind on-screen text using the cheapest method that can answer.
find_image_on_screenFind all occurrences of a template image on screen. Coordinates are absolute screen coordinates, ready to pass to mouse_click.
find_text_on_screenFind all occurrences of text on screen using OCR. Returns a list of matches with coordinates and confidence. Coordinates are absolute screen coordinates, ready to pass straight to mouse_click.
focus_windowBring a window to the foreground by its title (substring match). Returns the focused window info and a screenshot.
get_active_windowGet information about the currently active/focused window. Returns the window title, position, size, and process name.
get_clipboardGet the current text content of the system clipboard. Returns the clipboard text or null if empty.
get_mouse_positionGet the current mouse cursor position.
get_ocr_infoGet information about the active OCR backend and available backends. Useful for debugging OCR issues.
get_screen_infoGet screen dimensions and monitor count.
get_ui_treeGet the accessibility tree of the focused window (or a specific window). Returns all interactive UI elements with their names, types, and positions. This is deterministic and instant — much more reliable than OCR for apps with proper accessibility support (most modern Windows apps).
hover_textFind text on screen using OCR and move the mouse over it (hover). Useful for triggering tooltips, hover menus, or inspecting elements. Returns action result and a screenshot of current screen state.
launch_appLaunch an application. Optionally wait for specific text to appear on screen (indicating the app has loaded). Returns a screenshot after launch.
list_windowsList all visible windows on the desktop. Optionally filter by title substring. Returns window titles, positions, sizes, and process names.
minimize_windowMinimize a window by its title (substring match). Returns action result and a screenshot.
mouse_clickClick the mouse at coordinates or current position. Returns action result and a screenshot of current screen state.
mouse_double_clickDouble-click at coordinates or current position. Returns action result and a screenshot of current screen state.
mouse_dragDrag from one point to another. Returns action result and a screenshot of current screen state.
mouse_moveMove the mouse cursor to screen coordinates.
mouse_scrollScroll the mouse wheel. Returns action result and a screenshot of current screen state.
observeReport what changed on screen since the last observation.
perception_statsReport how much perception work has been avoided. Covers incremental scanning, remembered screens, and predicted actions.
press_keyPress a key or key combination. Returns action result and a screenshot of current screen state.
read_model_textRead on-screen text from the incremental model.
read_screen_textRead ALL visible text on the screen using OCR. Returns every detected text element with its position, in absolute screen coordinates that are ready to click.
remember_screenRemember the current screen so future visits skip reading it.
right_click_textFind text on screen using OCR and right-click on it (context menu). Returns action result and a screenshot of current screen state.
screenshotTake a screenshot of the screen or a region. Returns the image as native MCP image content. Optionally saves to a file path.
screenshot_windowTake a screenshot of a specific window (by title). Useful for capturing just one application without the rest of the desktop. Returns the image as native MCP image content.
set_clipboardSet text to the system clipboard. Useful for pasting data into applications.
type_textType text using the keyboard (character by character). Returns action result and a screenshot of current screen state.
wait_for_changeWait for the screen to visually change. Takes a baseline screenshot, then polls until the screen looks different (or timeout). Useful after triggering an action to wait for the UI to update.
wait_for_textWait for specific text to appear on screen. Polls via OCR until found or timeout.
wait_for_text_goneWait for text to disappear from screen. Polls via OCR until gone or timeout. Useful for waiting for loading spinners, progress dialogs, etc. to finish.
wait_for_timeWait for a specified amount of time, then take a screenshot. Use sparingly — prefer wait_for_text or wait_for_text_gone instead. Capped at 30 seconds maximum.
Public scan report
scanner v0.1.10 · 2026-10-03 · same rubric, same numbers if you re-run it
- Code scan27 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 16 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Oswright compares
Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 90% of 1,299 Productivity servers
- Tools
- 43
- the typical Productivity server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 3
- more than 65% of 854 Productivity servers
- Downloads a week
- 71
- more than 48% of 427 Productivity servers with a package
What its tools let an agent do: 41 read · 2 change
Install Oswright in Claude Code, Cursor or VS Code
claude mcp add oswright -- uvx oswright
What the publisher says
From the Oswright repository's README, as published. We do not edit it. Read it on GitHub
OSWright
Desktop automation for AI agents, without paying for a screenshot every step.
mcp-name: io.github.Ask-812/oswright
An MCP server that lets an LLM drive real desktop applications — the desktop equivalent of Playwright MCP. It keeps a model of the screen between actions and re-reads only the parts that changed, so the same work costs an order of magnitude fewer tokens.
Eight fields read off an invoice and typed into an expense form, verified by the application itself. Same task, same result, 7.4× less context than returning a screenshot after every action. Every number on screen is measured during the run — regenerate the whole thing with python benchmarks/record_demo.py.
Why this exists
Most GUI agents re-perceive the entire screen on every step: screenshot, OCR, hand the model an image, repeat. Measured on a live desktop, the median observation changes 0.012% of the screen's pixels. Re-reading everything does far more work than the change warrants, and charges ~2,800 image tokens whether anything happened or not.
OSWright asks the compositor what changed, rescans only that, and answers element lookups from the cheapest source that can. The claims below are measured on this machine and reproducible from benchmarks/ — including the ones that did not come out in its favour.
Key Features
- Cross-platform. Windows (Win32 API), Linux (pynput/X11), macOS (pynput/Quartz).
- Accessibility tree. Find elements deterministically by role and name via Windows UI Automation — 100% accurate, instant, no model needed.
- Fast OCR. Windows OCR (built-in, instant) with EasyOCR fallback for Linux/macOS. Results are cached automatically.
- Lightweight on Windows. No PyTorch download — Windows uses the built-in OCR engine, so a full install is a few MB rather than a few GB.
- Image matching. Locates elements by template image via OpenCV.
- Window management. List, focus, minimize, close, and screenshot specific windows.
- Screenshot diffing. Detect when the screen changes with waitforchange.
- Clipboard access. Read and write system clipboard for data transfer.
- App launcher. Launch applications and wait for them to load.
- Auto-snapshot. Every action returns a screenshot so the agent always sees current state.
- 43 MCP tools. Screen, OCR, UIA, mouse, keyboard, windows, clipboard, and compound actions.
- Incremental perception. Rescans only the parts of the screen that changed, and can return what changed instead of a full screenshot — ~21× fewer tokens per step.
Requirements
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Oswright: common questions
- Is Oswright MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Oswright safety report
- How do I install Oswright?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Oswright need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Oswright maintained?
- The last commit was 48 days ago (2026-09-17). The latest release is v0.8.2.
- What can I use instead of Oswright?
- Servers from other publishers that do the same job: Easy Notion MCP server, MCP Server for Excel and Sheets MCP server.
- How does Oswright compare with other Productivity MCP servers?
- safety score 92/100 (higher than 90% of 1,299 Productivity servers); tools 43 (the typical Productivity server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Oswright
Same job from other publishers: the closest match first, then the best rated.
- Easy NotionMarkdown-first Notion MCP server. ~6-7x fewer response tokens vs official Notion MCP. 43 tools.not reviewedGrowingB
- MCP Server for ExcelExcel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.not reviewedEstablishedA
- Sheets MCPGoogle Sheets for agent workflows in Claude Code and Claude Desktop: APIs, files, schedules, undo.not reviewedEstablishedA
- devcoachProgressive in-context technical coaching in your AI agent — one local, free lesson per task.not reviewedGrowingA
- SparewiseWhy is my Windows drive full? Free space within limits you set. Never deletes permanently.not reviewedGrowingA