MCP Server for Computer Use in Windows
This report summarizes scanner evidence for CursorTouch/Windows-MCP, a Python project with 8,642 GitHub stars. SynthScan examined 41,607 lines of code across 155 source files, recording 1150 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 37.1 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 741 finding(s).
Are imports declared and package/API names verified? 99 finding(s).
Are wrappers, guards, and repeated structures necessary? 981 finding(s).
Which changes need focused human review? 1150 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1150 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CONTRIBUTING.md | 224 | def test_click_tool_validates_coordinates(): | CODE |
| LOW | tests/test_watchdog_backoff.py | 51 | def test_immediate_degradation_escalates(self, watchdog, monkeypatch): | CODE |
| LOW | tests/test_watchdog_backoff.py | 79 | def test_exception_path_still_backs_off(self, watchdog, monkeypatch): | CODE |
| LOW | tests/test_watchdog_backoff.py | 94 | def test_a_run_that_lasted_resets_the_backoff(self, watchdog, monkeypatch): | CODE |
| LOW | tests/test_watchdog_backoff.py | 111 | def test_stopping_does_not_wait(self, watchdog, monkeypatch): | CODE |
| LOW | tests/test_watchdog_backoff.py | 121 | def test_every_cycle_gets_a_fresh_client_and_clean_counters(self, watchdog, monkeypatch): | CODE |
| LOW⚡ | tests/test_registry.py | 14 | def test_single_quote_escaping(self): | CODE |
| LOW⚡ | tests/test_registry.py | 17 | def test_double_quotes_not_escaped(self): | CODE |
| LOW⚡ | tests/test_registry.py | 20 | def test_dollar_sign_not_expanded(self): | CODE |
| LOW | tests/test_registry.py | 45 | def test_command_uses_ps_quote(self): | CODE |
| LOW | tests/test_registry.py | 78 | def test_creates_key_if_missing(self): | CODE |
| LOW | tests/test_registry.py | 104 | def test_delete_value_failure(self): | CODE |
| LOW⚡ | tests/test_watchdog_toggle.py | 23 | def test_disabling_and_unrecognised_values_stay_off(self, monkeypatch, value): | CODE |
| LOW⚡ | tests/test_watchdog_toggle.py | 32 | def test_enabling_values_turn_it_on(self, monkeypatch, value): | CODE |
| LOW⚡ | tests/test_watchdog_toggle.py | 36 | def test_manifest_boolean_maps_through(self, monkeypatch): | CODE |
| LOW⚡ | tests/test_cli_legacy_flags.py | 17 | def test_legacy_serve_flags_at_group_level_get_migration_hint(args, suggestion): | CODE |
| LOW⚡ | tests/test_cli_legacy_flags.py | 26 | def test_serve_options_still_work_on_serve_subcommand_help(): | CODE |
| LOW⚡ | tests/test_cli_legacy_flags.py | 33 | def test_install_options_are_not_blocked_by_legacy_filter(monkeypatch, tmp_path): | CODE |
| LOW | tests/test_cli_legacy_flags.py | 52 | def test_group_help_still_renders(): | CODE |
| LOW | tests/test_cli_legacy_flags.py | 59 | def test_bare_group_still_reports_missing_command(): | CODE |
| LOW⚡ | tests/test_filesystem_views.py | 58 | def test_to_string_with_extension(self): | CODE |
| LOW⚡ | tests/test_filesystem_views.py | 63 | def test_to_string_without_extension(self): | CODE |
| LOW⚡ | tests/test_filesystem_views.py | 67 | def test_to_string_with_contents(self): | CODE |
| LOW⚡ | tests/test_filesystem_views.py | 72 | def test_to_string_without_contents(self): | CODE |
| LOW⚡ | tests/test_filesystem_views.py | 76 | def test_to_string_with_link_target(self): | CODE |
| LOW | tests/test_filesystem_views.py | 105 | def test_relative_path_override(self): | CODE |
| LOW | tests/test_tree_views.py | 19 | def test_get_center_zero_size(self): | CODE |
| LOW | tests/test_tree_views.py | 25 | def test_get_center_negative_coords(self): | CODE |
| LOW | tests/test_tree_views.py | 37 | def test_convert_xywh_to_xyxy(self, sample_bounding_box): | CODE |
| LOW | tests/test_tree_views.py | 41 | def test_from_bounding_rectangle(self): | CODE |
| LOW⚡ | tests/test_tree_views.py | 64 | def test_interactive_elements_to_string_empty(self): | CODE |
| LOW⚡ | tests/test_tree_views.py | 68 | def test_truncated_appends_note_to_interactive_elements( | CODE |
| LOW⚡ | tests/test_tree_views.py | 78 | def test_truncated_appends_note_to_scrollable_elements( | CODE |
| LOW⚡ | tests/test_tree_views.py | 85 | def test_not_truncated_omits_note(self, sample_tree_element_node: TreeElementNode) -> None: | CODE |
| LOW⚡ | tests/test_tree_views.py | 90 | def test_truncated_with_no_elements_still_shows_note(self) -> None: | CODE |
| LOW⚡ | tests/test_tree_views.py | 95 | def test_truncated_appends_note_to_semantic_tree(self) -> None: | CODE |
| LOW⚡ | tests/test_tree_views.py | 104 | def test_semantic_tree_not_truncated_omits_note(self) -> None: | CODE |
| LOW⚡ | tests/test_tree_views.py | 110 | def test_interactive_elements_to_string_with_elements( | CODE |
| LOW | tests/test_tree_views.py | 123 | def test_interactive_elements_preserve_order( | CODE |
| LOW | tests/test_tree_views.py | 143 | def test_scrollable_elements_to_string_empty(self): | CODE |
| LOW | tests/test_tree_views.py | 147 | def test_scrollable_elements_to_string_with_elements( | CODE |
| LOW | tests/test_tree_views.py | 164 | def test_scrollable_elements_are_independent_from_interactive_count( | CODE |
| LOW | tests/conftest.py | 42 | def sample_scroll_element_node(sample_bounding_box, sample_center): | CODE |
| LOW | tests/test_control_input.py | 21 | def test_type_stops_before_next_character_after_preemption(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 37 | def test_drag_releases_its_mouse_button_after_preemption(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 60 | def test_ai_hold_is_released_if_press_raises_after_injection(): | CODE |
| LOW | tests/test_control_input.py | 74 | def test_ai_hold_defers_up_only_when_physical_down_reached_app(): | CODE |
| LOW | tests/test_control_input.py | 83 | def test_fail_open_blocks_new_press_and_clears_before_notification(): | CODE |
| LOW | tests/test_control_input.py | 100 | def test_fail_open_wakes_existing_watchdog_to_release_ai_hold(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 123 | def test_fail_open_releases_before_slow_health_probe(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 158 | def test_takeover_after_checkpoint_blocks_new_ai_down(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 177 | def test_takeover_between_checkpoint_and_press_injects_no_down(monkeypatch, action): | CODE |
| LOW | tests/test_control_input.py | 208 | def test_new_lease_reenables_ledger_after_cancelled_mouse_candidate(): | CODE |
| LOW | tests/test_control_input.py | 227 | def test_release_waits_for_inflight_press_then_clears_hold(): | CODE |
| LOW | tests/test_control_input.py | 253 | def test_release_all_attempts_other_holds_after_one_failure(): | CODE |
| LOW | tests/test_control_input.py | 268 | def test_recovery_requires_ledger_clear_health_and_interactive_desktop(monkeypatch): | CODE |
| LOW | tests/test_control_input.py | 296 | def test_preemption_reports_executed_steps(): | CODE |
| LOW | tests/test_iserror_compliance.py | 38 | def test_shell_tool_error_is_error_true(monkeypatch, mcp): | CODE |
| LOW | tests/test_iserror_compliance.py | 55 | def test_clipboard_tool_error_is_error_true(monkeypatch, mcp): | CODE |
| LOW | tests/test_iserror_compliance.py | 72 | def test_registry_tool_error_is_error_true(monkeypatch, mcp): | CODE |
| 522 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/windows_mcp/tree/service.py | 1077 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 262 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 838 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 533 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 402 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 409 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 628 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 642 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 651 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 662 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 694 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 708 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 714 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 720 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 726 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 735 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 749 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 687 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 588 | except Exception: | CODE |
| HIGH | src/windows_mcp/tree/service.py | 602 | except Exception: | CODE |
| HIGH | src/windows_mcp/tools/control_notifications.py | 64 | except asyncio.CancelledError: | CODE |
| HIGH | src/windows_mcp/tools/control_notifications.py | 197 | except Exception: | CODE |
| HIGH | src/windows_mcp/tools/scrape.py | 70 | except Exception: | CODE |
| HIGH | src/windows_mcp/vdm/core.py | 387 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/service.py | 826 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/service.py | 1081 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/service.py | 841 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/control.py | 400 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/control.py | 184 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/control_ledger.py | 51 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/flash_overlay.py | 576 | except Exception: | CODE |
| HIGH | src/windows_mcp/desktop/flash_overlay.py | 581 | except Exception: | CODE |
| HIGH | src/windows_mcp/filesystem/service.py | 305 | except PermissionError: | CODE |
| HIGH | src/windows_mcp/powershell/service.py | 58 | except OSError: | CODE |
| HIGH | src/windows_mcp/powershell/utils.py | 148 | except subprocess.TimeoutExpired: | CODE |
| HIGH | src/windows_mcp/watchdog/service.py | 281 | except Exception: | CODE |
| HIGH | src/windows_mcp/watchdog/service.py | 293 | except Exception: | CODE |
| HIGH | src/windows_mcp/watchdog/service.py | 306 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/controls.py | 1169 | except comtypes.COMError: | CODE |
| HIGH | src/windows_mcp/uia/controls.py | 6117 | except comtypes.COMError: | CODE |
| HIGH | src/windows_mcp/uia/patterns.py | 419 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/patterns.py | 434 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/events.py | 42 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 664 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 674 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 703 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 726 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 1760 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 65 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 680 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/core.py | 1779 | except Exception: | CODE |
| HIGH | src/windows_mcp/uia/comtypes_cache.py | 78 | except OSError: | CODE |
| HIGH | src/windows_mcp/uia/comtypes_cache.py | 106 | except OSError: | CODE |
| HIGH | src/windows_mcp/infrastructure/eventloop.py | 79 | except OSError: | CODE |
| HIGH | src/windows_mcp/infrastructure/analytics.py | 192 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_screenshot_capture.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 97 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 99 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 252 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 254 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 326 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 328 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 407 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_screenshot_capture.py | 409 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_screenshot_capture.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_screenshot_capture.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 77 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/tree/ia2.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/tree/ia2.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/tree/ia2.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/tree/ia2.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 414 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/ia2.py | 416 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/views.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/tree/views.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 349 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/flash_overlay.py | 351 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/desktop/flash_overlay.py | 482 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/desktop/flash_overlay.py | 484 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/desktop/screenshot.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/windows_mcp/desktop/screenshot.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 274 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 276 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 322 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/desktop/screenshot.py | 324 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 275 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows_mcp/infrastructure/oauth.py | 277 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/__main__.py | 241 | except Exception: | CODE |
| LOW | src/windows_mcp/__main__.py | 287 | except Exception: | CODE |
| LOW | src/windows_mcp/__main__.py | 831 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 588 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 594 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 602 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 708 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 714 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 720 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 726 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/tree/service.py | 735 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 67 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 158 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/service.py | 262 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 286 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/service.py | 290 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 383 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 402 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 409 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 533 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 569 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 628 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 642 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 651 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 662 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 687 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 694 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 749 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 838 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 874 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/service.py | 904 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/service.py | 1003 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/service.py | 1058 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/service.py | 1077 | except Exception: | CODE |
| LOW | src/windows_mcp/tree/cache_utils.py | 150 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/cache_utils.py | 201 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tree/cache_utils.py | 209 | except Exception as fallback_error: | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 157 | except Exception: | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 192 | except Exception: | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 197 | except Exception: | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 234 | except Exception as exc: | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 254 | except Exception as exc: | CODE |
| LOW | src/windows_mcp/tools/registry.py | 50 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/notification.py | 44 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/filesystem.py | 80 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/shell.py | 26 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/multi.py | 48 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/multi.py | 100 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/input.py | 31 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/process.py | 41 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/clipboard.py | 51 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/scrape.py | 70 | except Exception: | CODE |
| LOW | src/windows_mcp/tools/snapshot.py | 61 | except Exception as e: | CODE |
| LOW | src/windows_mcp/tools/snapshot.py | 107 | except Exception as e: | CODE |
| LOW | src/windows_mcp/vdm/core.py | 116 | except Exception: | CODE |
| LOW | src/windows_mcp/vdm/core.py | 387 | except Exception: | CODE |
| LOW⚡ | src/windows_mcp/vdm/core.py | 404 | except Exception as e: | CODE |
| LOW⚡ | src/windows_mcp/vdm/core.py | 408 | except Exception as e: | CODE |
| LOW⚡ | src/windows_mcp/vdm/core.py | 419 | except Exception: | CODE |
| LOW | src/windows_mcp/vdm/core.py | 431 | except Exception: | CODE |
| 107 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_wait_for_tool.py | 1 | CODE | |
| LOW | tests/test_config_validation.py | 1 | CODE | |
| LOW | tests/test_filesystem_service.py | 1 | CODE | |
| LOW | tests/test_filesystem_service.py | 3 | CODE | |
| LOW | tests/test_control_mcp_gate.py | 3 | CODE | |
| LOW | scripts/check_versions.py | 32 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 1 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 99 | CODE | |
| LOW | src/windows_mcp/tree/budget.py | 12 | CODE | |
| LOW | src/windows_mcp/tree/cache_utils.py | 19 | CODE | |
| LOW | src/windows_mcp/tree/ia2.py | 17 | CODE | |
| LOW | src/windows_mcp/tree/ia2.py | 45 | CODE | |
| LOW | src/windows_mcp/tree/ia2.py | 46 | CODE | |
| LOW | src/windows_mcp/tree/views.py | 1 | CODE | |
| LOW | src/windows_mcp/tools/control_notifications.py | 3 | CODE | |
| LOW | src/windows_mcp/vdm/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/vdm/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/vdm/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/desktop/control.py | 7 | CODE | |
| LOW | src/windows_mcp/desktop/control.py | 18 | CODE | |
| LOW | src/windows_mcp/desktop/control.py | 18 | CODE | |
| LOW | src/windows_mcp/desktop/control_ledger.py | 3 | CODE | |
| LOW | src/windows_mcp/desktop/control_context.py | 3 | CODE | |
| LOW | src/windows_mcp/filesystem/service.py | 14 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 12 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 12 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 12 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 12 | CODE | |
| LOW | src/windows_mcp/filesystem/__init__.py | 12 | CODE | |
| LOW | src/windows_mcp/powershell/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/watchdog/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 8 | CODE | |
| LOW | src/windows_mcp/registry/__init__.py | 8 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 14 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 27 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 28 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 30 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 31 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 31 | CODE | |
| LOW | src/windows_mcp/uia/patterns.py | 14 | CODE | |
| LOW | src/windows_mcp/uia/patterns.py | 23 | CODE | |
| LOW | src/windows_mcp/uia/patterns.py | 24 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 1 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 2 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 3 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 4 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 5 | CODE | |
| LOW | src/windows_mcp/uia/__init__.py | 6 | CODE | |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/__main__.py | 479 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 446 | CODE | |
| LOW | src/windows_mcp/tools/filesystem.py | 25 | CODE | |
| LOW | src/windows_mcp/tools/app.py | 89 | CODE | |
| LOW | src/windows_mcp/tools/snapshot.py | 37 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 87 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 227 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2213 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2244 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2275 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2306 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2337 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2368 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2399 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2430 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2461 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2492 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2523 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2554 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2585 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2616 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2647 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2678 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2709 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2740 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2771 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2802 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2833 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2864 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2895 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2926 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2957 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 2988 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3019 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3050 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3081 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3112 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3143 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3174 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3205 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3236 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3267 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3298 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3329 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3360 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3391 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3422 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3453 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3486 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3522 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3576 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3636 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3685 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3796 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3832 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3892 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3970 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 4024 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 4078 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 4120 | CODE | |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/__main__.py | 248 | CODE | |
| LOW | src/windows_mcp/__main__.py | 430 | CODE | |
| LOW | src/windows_mcp/__main__.py | 318 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 226 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 361 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 446 | CODE | |
| LOW | src/windows_mcp/tree/service.py | 922 | CODE | |
| LOW | src/windows_mcp/tree/cache_utils.py | 155 | CODE | |
| LOW | src/windows_mcp/tools/registry.py | 12 | CODE | |
| LOW | src/windows_mcp/tools/registry.py | 25 | CODE | |
| LOW | src/windows_mcp/tools/clipboard.py | 10 | CODE | |
| LOW | src/windows_mcp/tools/clipboard.py | 23 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 62 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 586 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 816 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 1103 | CODE | |
| LOW | src/windows_mcp/desktop/service.py | 1180 | CODE | |
| LOW | src/windows_mcp/desktop/control_overlay.py | 137 | CODE | |
| LOW | src/windows_mcp/desktop/control_overlay.py | 390 | CODE | |
| LOW | src/windows_mcp/desktop/control_overlay.py | 424 | CODE | |
| LOW | src/windows_mcp/desktop/control_overlay.py | 299 | CODE | |
| LOW | src/windows_mcp/desktop/control.py | 452 | CODE | |
| LOW | src/windows_mcp/desktop/flash_overlay.py | 405 | CODE | |
| LOW | src/windows_mcp/desktop/flash_overlay.py | 487 | CODE | |
| LOW | src/windows_mcp/desktop/screenshot.py | 114 | CODE | |
| LOW | src/windows_mcp/desktop/control_win32.py | 253 | CODE | |
| LOW | src/windows_mcp/filesystem/service.py | 86 | CODE | |
| LOW | src/windows_mcp/filesystem/service.py | 147 | CODE | |
| LOW | src/windows_mcp/powershell/service.py | 20 | CODE | |
| LOW | src/windows_mcp/powershell/utils.py | 37 | CODE | |
| LOW | src/windows_mcp/watchdog/service.py | 163 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 5851 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 6045 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 6077 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 6200 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 6220 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 317 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 1296 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 1613 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 1674 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 1711 | CODE | |
| LOW | src/windows_mcp/uia/controls.py | 3737 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 1485 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 1831 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 1995 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 2022 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 2051 | CODE | |
| LOW | src/windows_mcp/uia/core.py | 2103 | CODE | |
| LOW | src/windows_mcp/uia/comtypes_cache.py | 42 | CODE | |
| LOW | src/windows_mcp/uia/comtypes_cache.py | 113 | CODE | |
| LOW | src/windows_mcp/process/service.py | 51 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/paths.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/__main__.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tree/service.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tree/budget.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tree/cache_utils.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tree/ia2.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tools/control_notifications.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tools/_snapshot_helpers.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/tools/snapshot.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/vdm/core.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/desktop/service.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/desktop/control_overlay.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/desktop/control_overlay.py | 79 | def set_opacity(self, opacity: int) -> None: | CODE |
| LOW | src/windows_mcp/desktop/control.py | 87 | def set_health_probe(self, probe: Callable[[], bool]) -> None: | CODE |
| LOW | src/windows_mcp/desktop/flash_overlay.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/desktop/utils.py | 9 | __all__ = [ | CODE |
| LOW⚡ | src/windows_mcp/desktop/screenshot.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/filesystem/service.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/powershell/service.py | 15 | __all__ = ["PowerShellExecutor"] | CODE |
| LOW | src/windows_mcp/powershell/service.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/powershell/__init__.py | 3 | __all__ = [ | CODE |
| LOW | src/windows_mcp/powershell/utils.py | 8 | __all__ = [ | CODE |
| LOW | src/windows_mcp/powershell/utils.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/watchdog/service.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/watchdog/event_handlers.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/registry/service.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/infrastructure/__init__.py | 30 | __all__ = [ | CODE |
| LOW | src/windows_mcp/infrastructure/eventloop.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/infrastructure/eventloop.py | 9 | __all__ = ["install_selfpipe_guard", "SELFPIPE_REBUILD_WARN_AT"] | CODE |
| LOW | src/windows_mcp/infrastructure/analytics.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows_mcp/notifications/service.py | 4 | __all__ = [ | CODE |
| LOW | src/windows_mcp/notifications/__init__.py | 3 | __all__ = [ | CODE |
| LOW | src/windows_mcp/process/service.py | 4 | __all__ = ["list_processes", "kill_process"] | CODE |
| LOW | src/windows_mcp/process/__init__.py | 6 | __all__ = ["list_processes", "kill_process"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CONTRIBUTING.md | 156 | Click on UI elements at specific coordinates. Args: loc: List of [x, y] coordinates to click bu | STRING |
| HIGH | src/windows_mcp/tree/ia2.py | 456 | Walk the IAccessible tree of ``hwnd`` and return DOM-shaped node lists. Used as a fallback for Firefox, whose web D | STRING |
| HIGH | src/windows_mcp/desktop/utils.py | 19 | Parse a tool argument declared as ``boolean | string`` into a bool. Claude Desktop strips anyOf schemas, so a calle | STRING |
| HIGH | src/windows_mcp/uia/comtypes_cache.py | 43 | Cross-process lock serializing comtypes.gen cache generation. Args: timeout: Maximum number of seconds to w | STRING |
| HIGH | src/windows_mcp/uia/comtypes_cache.py | 114 | ``comtypes.client.GetModule`` with locking and corrupt-cache recovery. Args: tlib: Type library to generate | STRING |
| HIGH | src/windows_mcp/notifications/service.py | 10 | Send a Windows toast notification with a title and message. Args: title: The title of the notification. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/windows_mcp/uia/controls.py | 0 | uiautomation for python 3. author: yinkaisheng source: https://github.com/yinkaisheng/python-uiautomation-for-windows th | STRING |
| HIGH | src/windows_mcp/uia/enums.py | 0 | uiautomation for python 3. author: yinkaisheng source: https://github.com/yinkaisheng/python-uiautomation-for-windows th | STRING |
| HIGH | src/windows_mcp/uia/patterns.py | 0 | uiautomation for python 3. author: yinkaisheng source: https://github.com/yinkaisheng/python-uiautomation-for-windows th | STRING |
| HIGH | src/windows_mcp/uia/core.py | 0 | uiautomation for python 3. author: yinkaisheng source: https://github.com/yinkaisheng/python-uiautomation-for-windows th | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/windows-mcp-tool-tester/SKILL.md | 35 | ## Step 0: Identify the Target Tool | COMMENT |
| LOW | .claude/skills/windows-mcp-tool-tester/SKILL.md | 46 | ## Step 1: Analyze the Tool | COMMENT |
| LOW | .claude/skills/windows-mcp-tool-tester/SKILL.md | 62 | ## Step 2: Generate Test Cases | COMMENT |
| LOW | .claude/skills/windows-mcp-tool-tester/SKILL.md | 133 | ## Step 3: Execute Tests | COMMENT |
| LOW | .claude/skills/windows-mcp-tool-tester/SKILL.md | 282 | ## Step 4: Generate the Test Report | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/tree/service.py | 852 | # Check if the child is a DOM element | COMMENT |
| LOW | src/windows_mcp/tree/service.py | 861 | # Check if the child is a dialog | COMMENT |
| LOW | src/windows_mcp/tree/cache_utils.py | 51 | # Set scope to cache element and its children | COMMENT |
| LOW | src/windows_mcp/filesystem/service.py | 160 | # Check if directory is empty | COMMENT |
| LOW⚡ | src/windows_mcp/watchdog/service.py | 182 | # Check if we need to UNREGISTER because configuration changed or disabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/tree/cache_utils.py | 184 | # so our python wrapper would crash. We just use the raw IUIAutomationElement. | COMMENT |
| LOW | src/windows_mcp/desktop/utils.py | 86 | # If the GUID is not a known folder id, just return the original text | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_tree_ia2.py | 403 | """If AccessibleObjectFromWindow returns null, return an empty result.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/windows_mcp/desktop/service.py | 601 | return | COMMENT |