Local MCP capabilities provider for Expo
AutoGenesis Windows is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
BDD automation runtime for Windows desktop applications through pywinauto.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user autogenesis-windows-mcp '--' uvx autogenesis-windows-mcp --config '<config>' --project-root '<project-root>'
# 2 — ask your agent for something these tools do
# app_launch, app_screenshot, app_close and 19 more
Put your own values in place of <config>, <project-root> before you run this.
AutoGenesis Windows costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts AutoGenesis Windows as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need uv (docs.astral.sh/uv): uvx comes with it. Put your own values in place of <config>, <project-root> before you run this. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user autogenesis-windows-mcp '--' uvx autogenesis-windows-mcp --config '<config>' --project-root '<project-root>'Reconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
22 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Launches the app.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| scenario | string | no | Test scenario name (for logging) |
| step | string | no | Current test step description (for logging) |
| step_raw | string | no | Raw original step text |
| need_snapshot | integer | no | — |
Takes a screenshot of the current app main window and saves it as a PNG file.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| path | string | no | File path to save the screenshot (default: screenshots/screenshot.png) |
| scenario | string | no | Test scenario name (for logging) |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
Closes the app instance that was previously launched.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
Clicks on a native button element in the app UI.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | The exact title/name of the control |
| control_type | string | yes | The type/role of control |
| automation_id | string | no | The exact automation_id of the control |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | The exact class name of the control |
| parent_name | string | no | The exact title/name of the parent control |
| parent_control_type | string | no | The type/role of the parent control |
| parent_automation_id | string | no | The exact automation_id of the parent control |
| main_window_type | string | no | Type of the main window. Default to "". Available options: - 'screenshot_cn': Use the CN screenshot window. |
| click_count | integer | no | Number of clicks to perform (1 for single click, 2 for double click) |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Right clicks on a native control element in the app UI.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | The exact title/name of thecontrol |
| control_type | string | yes | The type/role of control |
| automation_id | string | no | The exact automation_id of the control |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | The exact class_name of the control. |
| parent_name | string | no | The exact title/name of the parent control |
| parent_control_type | string | no | The type/role of the parent control |
| parent_automation_id | string | no | The exact automation_id of the parent control |
| main_window_type | string | no | Type of the main window. Default to "". |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Sends keystrokes to the active app window using pywinauto, with support for key combinations.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module or context. |
| key_sequence_raw | string | yes | The original human-readable keystroke sequence (e.g., 'Ctrl+Shift+.'). |
| key_sequence_formatted | string | yes | The sequence converted to pywinauto's type_keys format (e.g., '^+.' for Ctrl+Shift+.). |
| step_raw | string | no | The raw BDD step text from the feature file. |
| step | string | no | The current test step description. |
| scenario | string | no | Scenario name for logging/tracking. Defaults to ''. |
| need_snapshot | integer | no | — |
Enters text into an editable field in the app UI.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| title | string | yes | The exact title/name of the edit field |
| content | yes | The text to enter into the edit field | |
| control_type | string | yes | The type/role of control |
| automation_id | string | yes | The exact automation_id of the control |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | The exact class_name of the control. |
| parent_name | string | no | The exact title/name of the parent element containing the edit field |
| parent_control_type | string | no | The type/role of the parent control containing the edit field |
| parent_automation_id | string | no | The exact automation_id of the parent control containing the edit field |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Open/expand a folder/TreeItem
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | The exact title/name of the control |
| control_type | string | yes | The type/role of control to open |
| automation_id | string | no | The exact automation_id of the control |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | The exact class_name of the control. |
| parent_name | string | no | The exact title/name of the parent element containing the control |
| parent_control_type | string | no | The exact control_type of the parent element containing the control |
| parent_automation_id | string | no | The exact automation_id of the parent element containing the control |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Select an item for multi-selection or single selection operations. Use this for:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | — |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | Text/name of the item to select |
| control_type | string | yes | Control type (ListItem, MenuItem, TreeItem, etc.) |
| automation_id | string | no | The exact automation_id of the control to select |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Class name of the control |
| parent_name | string | no | Title of the parent control |
| parent_control_type | string | no | Control type of the parent control |
| parent_automation_id | string | no | Automation ID of the parent control |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Wait/sleep for a specified duration in seconds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| duration | number | yes | Number of seconds to wait |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | Whether to include UI snapshot (default 0 for wait) |
Verify/check if an element exists/appears
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | — |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | title of the control to search for. |
| control_type | string | yes | The type/role of control, MUST be extracted from the UI snapshot/element information, do NOT assume based on content type. |
| automation_id | string | no | Optional automation ID of the element |
| class_name | string | no | Optional class name of the element, extract from the class_name. |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| parent_name | string | no | The exact title/name of the parent element |
| parent_control_type | string | no | The type/role of the parent control |
| parent_automation_id | string | no | The exact automation_id of the parent control |
| main_window_type | string | no | Type of the main window. Default to "". Available options: - 'screenshot_cn': Use the CN screenshot window. |
| timeout | integer | no | Maximum time in seconds to wait for the element |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | — |
Verify/check if an element disappears or does not exist
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | — |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | title of the control to search for. |
| control_type | string | yes | The type/role of control, MUST be extracted from the UI snapshot/element information, do NOT assume based on content type. |
| automation_id | string | no | Optional automation ID of the element |
| class_name | string | no | Optional class name of the element, extract from the class_name. |
| parent_name | string | no | — |
| parent_control_type | string | no | — |
| parent_automation_id | string | no | — |
| timeout | integer | no | Maximum time in seconds to wait for the element |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | — |
Verifies if a checkbox is checked or unchecked.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | Name or title of the checkbox to verify |
| expected_state | string | yes | The expected state: "checked" or "unchecked" |
| control_type | string | yes | Control type, defaults to "CheckBox" |
| automation_id | string | no | Optional automation ID of the checkbox |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Optional class name of the element, extract from the class_name. |
| parent_name | string | no | The exact title/name of the parent element |
| parent_automation_id | string | no | Optional automation ID of the parent element |
| parent_control_type | string | no | Control type of the parent element |
| timeout | integer | no | Maximum time in seconds to wait for the checkbox |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | — |
Verifies that an control contains the expected value/content.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | Name or title of the element to search for |
| element_value | string | yes | value of the control, extract from the element value |
| control_type | string | yes | Optional control type for more specific search (Edit, Button, etc.) |
| expected_value | string | yes | The expected value to verify, only extract from the step content, do not extract from the element value |
| automation_id | string | no | Optional automation ID of the element |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Optional class name of the element, extract from the class_name. |
| parent_name | string | no | The exact title/name of the parent element |
| parent_control_type | string | no | Optional control type of the parent element |
| parent_automation_id | string | no | Optional automation ID of the parent element |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| scenario | string | no | Test scenario name |
| timeout | integer | no | Maximum time in seconds to wait for the element |
| need_snapshot | integer | no | — |
Verifies that controls appear in the specified order (vertically or horizontally).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| control_names | array | yes | List of control names in the expected order |
| control_type | string | yes | Optional control type for more specific search (TreeItem, Button, etc.) |
| automation_id | string | no | Optional automation ID of the element |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Optional class name of the element, extract from the class_name. |
| control_orders | array | no | Optional list of integers representing custom ordering indices for controls. When provided, these indices will be used to verify the order instead of positional comparison. The length should match con |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| scenario | string | no | Test scenario name |
| timeout | integer | no | Maximum time in seconds to wait for the elements |
| need_snapshot | integer | no | Whether to include UI snapshot in response |
Read and analyze a screenshot, verify if the visual content matches the task description.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Calling module/function identifier |
| screenshot_path | string | yes | Path to the screenshot image file |
| task_description | string | yes | Task to verify against the screenshot |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw step text |
| step | string | no | Current step description |
Clear cache and initialize code generation session before executing test case steps.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| feature_file | string | no | Full absolute path to the .feature file containing BDD scenarios. If not specified, do not provide a random value. |
| step_file | string | no | Full absolute path to the Python step definition file (.py). If not specified, do not provide a random value. |
Preview generated test code changes and confirm before applying
| Parameter | Type | Required | Notes |
|---|---|---|---|
| secret_bindings | no | — |
Atomically commit exactly the complete, current, approved preview.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| preview_id | string | no | — |
| digest | string | no | — |
| approved | boolean | no | — |
Performs a drag and drop operation from source element to target element or by distance
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| source_title | string | no | The name/title of the source element to drag from (required when from_type='element') |
| source_control_type | string | no | The type of control of source element (required when from_type='element') |
| from_type | string | no | Type of source location - 'element' or 'pixel' - 'element': Drag from a UI element (requires source_title and source_control_type) - 'pixel': Drag from specific pixel coordinates (requires from_x and |
| from_x | integer | no | X coordinate in pixels to drag from (required when from_type='pixel') |
| from_y | integer | no | Y coordinate in pixels to drag from (required when from_type='pixel') |
| drag_type | string | no | Type of drag operation - 'to_element' or 'by_offset' - 'to_element': Drag to a specific target element (requires target_title and target_control_type) - 'by_offset': Drag by specified pixel offsets fr |
| target_title | string | no | The name/title of the target element to drop onto (required when drag_type='to_element') |
| target_control_type | string | no | The type of control of target element (required when drag_type='to_element') |
| x_offset | integer | no | Horizontal offset in pixels from the source/target location. Positive values move right, negative values move left. Default is 0. For 'by_offset': offset from source location For 'to_element': offset |
| y_offset | integer | no | Vertical offset in pixels from the source/target location. Positive values move down, negative values move up. Default is 0. For 'by_offset': offset from source location For 'to_element': offset from |
| mouse_button | string | no | Mouse button to use for dragging - 'left' or 'right'. Default is 'left'. |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| timeout | integer | no | — |
| need_snapshot | integer | no | — |
Moves the mouse to hover over a specified UI element
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | The name/title of the element to hover over |
| control_type | string | yes | The type of control to hover over (Button, TreeItem, Text, etc.) |
| automation_id | string | no | Optional automation ID of the element |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Optional class name of the element |
| parent_name | string | no | The name/title of the parent element |
| parent_control_type | string | no | The type of the parent control |
| parent_automation_id | string | no | Optional automation ID of the parent element |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | — |
| timeout | integer | no | — |
Performs mouse scroll operation on a specified UI element
| Parameter | Type | Required | Notes |
|---|---|---|---|
| caller | string | yes | Identifier of the calling module/function |
| control_framework | string | yes | str Specifies which automation framework to use for locating and interacting with elements. Available options: - 'pywinauto': Use the pywinauto framework to locate and control native desktop UI elemen |
| name | string | yes | The name/title of the element |
| control_type | string | yes | The type of control (Button, TreeItem, Text, etc.) |
| automation_id | string | no | Optional automation ID of the element |
| control_idx | integer | no | Element index to select when multiple elements match (1-based). Default value 1. |
| class_name | string | no | Optional class name of the element |
| wheel_dist | integer | no | Distance to scroll. Positive values scroll up, negative values scroll down. Default value 1. |
| parent_name | string | no | The name/title of the parent element |
| parent_control_type | string | no | The type of control of the parent element |
| parent_automation_id | string | no | The exact automation_id of the parent control |
| scenario | string | no | Test scenario name |
| step_raw | string | no | Raw original step text |
| step | string | no | Current test step description |
| need_snapshot | integer | no | — |
| timeout | integer | no | — |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install AutoGenesis Windows or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (22 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| app_launch | no tags | |
| app_screenshot | no tags | |
| app_close | no tags | |
| element_click | no tags | |
| right_click | no tags | |
| send_keystrokes | no tags | |
| enter_text | no tags | |
| open_folder | no tags | |
| select_item | no tags | |
| app_wait | no tags | |
| before_gen_code | no tags | |
| preview_code_changes | no tags | |
| confirm_code_changes | no tags | |
| mouse_drag_drop | no tags | |
| mouse_hover | no tags | |
| mouse_scroll | no tags | |
| verify_element_exists | no tags | |
| verify_element_not_exist | no tags | |
| verify_checkbox_state | no tags | |
| verify_element_value | no tags | |
| verify_elements_order | no tags | |
| verify_visual_task | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.4.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish AutoGenesis Windows can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.