Unity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.
This report presents the forensic synthetic code analysis of CoplayDev/unity-mcp, a C# project with 12,466 GitHub stars. SynthScan v2.0 examined 244,320 lines of code across 1140 source files, recording 2562 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 16.1 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2562 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tools/local_harness.py | 100 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/local_harness.py | 102 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/local_harness.py | 729 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/local_harness.py | 732 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/local_harness.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/local_harness.py | 165 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 167 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 220 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 222 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 409 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 411 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 471 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 473 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 526 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 528 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 581 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 583 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 651 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 653 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 951 | # =========================================================================== | COMMENT |
| MEDIUM | tools/local_harness.py | 953 | # =========================================================================== | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 437 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tools/generate_docs_reference.py | 439 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tools/generate_docs_reference.py | 547 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/generate_docs_reference.py | 549 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 265 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/sync_release_notes.py | 267 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 341 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 343 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 399 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 401 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 463 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 465 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 547 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 549 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 632 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 634 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 686 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 688 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 700 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 704 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 740 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 744 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 788 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 792 | # =========================================================================== | COMMENT |
| MEDIUM | tools/tests/test_local_harness.py | 57 | # =========================================================================== | COMMENT |
| MEDIUM | tools/tests/test_local_harness.py | 59 | # =========================================================================== | COMMENT |
| MEDIUM | tools/tests/test_local_harness.py | 86 | # =========================================================================== | COMMENT |
| MEDIUM | tools/tests/test_local_harness.py | 88 | # =========================================================================== | COMMENT |
| 510 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp_source.py | 38 | def normalize_origin_to_https(url: str) -> str: | CODE |
| LOW | tools/local_harness.py | 257 | def read_secondary_install_path(platform: str | None = None, | CODE |
| LOW | tools/stress_editor_state.py | 83 | def make_get_editor_state_frame() -> bytes: | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 99 | def test_unknown_platform_defaults_to_linux_layout(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 108 | def test_windows_hub_roots_use_program_files(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 115 | def test_windows_hub_roots_fallback_when_no_env(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 119 | def test_linux_hub_root_under_home(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 127 | def test_macos_resolves_hub_layout(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 345 | def test_project_version_takes_precedence(self, tmp_path): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 359 | def test_falls_back_to_default_version_when_no_project_file(self, tmp_path): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 368 | def test_returns_none_when_neither_source_present(self, tmp_path): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 374 | def test_project_version_tolerates_bom(self, tmp_path): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 383 | def test_malformed_default_version_json_returns_none(self, tmp_path): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 390 | def test_real_repo_versions_json_default(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 450 | def test_precedence_license_over_compile(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 456 | def test_compile_when_license_in_grace(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 551 | def test_merge_produces_wellformed_testsuites(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 600 | def test_merge_empty_suite_list_is_wellformed(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 609 | def test_merge_skips_none_suites(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 615 | def test_failure_message_attribute_is_capped(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 623 | def test_time_attributes_are_formatted(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 665 | def test_editor_arg_is_repeatable(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 675 | def test_numeric_args_are_typed(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 690 | def test_normalizes_and_dedupes(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 696 | def test_empty_string_is_empty_list(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 706 | def test_console_entries_bare_list_under_data(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 712 | def test_console_entries_paging_items_under_data(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 716 | def test_console_entries_result_wrapped(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 720 | def test_compile_probe_detects_cs_error(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 728 | def test_compile_probe_clean_project(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 733 | def test_compile_probe_inconclusive_does_not_block(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 746 | def test_retries_on_tests_running_then_succeeds(self, monkeypatch): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 774 | def test_hard_start_failure_returns_immediately(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 780 | def test_success_returns_job_id(self): | CODE |
| LOW⚡ | tools/tests/test_local_harness.py | 794 | def test_poll_tolerates_timeout_then_returns_terminal(self, monkeypatch): | CODE |
| LOW | tools/tests/test_local_harness.py | 144 | def test_windows_resolves_hub_layout(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 161 | def test_linux_resolves_hub_layout(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 177 | def test_explicit_editor_takes_precedence(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 195 | def test_unity_editor_env_override(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 210 | def test_not_found_raises_with_searched_paths(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 229 | def test_nearest_patch_fallback_same_major_minor(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 259 | def test_nearest_patch_never_crosses_major_minor(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 283 | def test_default_platform_darwin(self, monkeypatch): | CODE |
| LOW | tools/tests/test_local_harness.py | 299 | def test_default_platform_linux(self, monkeypatch): | CODE |
| LOW | tools/tests/test_local_harness.py | 319 | def test_secondary_root_used_for_candidate(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 423 | def test_license_suppressed_during_grace(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 439 | def test_clean_ready_log_is_ok(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 500 | def test_playmode_nonblocking_fail_does_not_raise_code(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 511 | def test_playmode_nonblocking_fail_alone_is_zero(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 650 | def test_legs_and_project_override(self): | CODE |
| LOW | tools/tests/test_local_harness.py | 761 | def test_exhausts_after_persistent_tests_running(self, monkeypatch): | CODE |
| LOW | tools/tests/test_local_harness.py | 809 | def test_poll_wedges_after_deadline_without_crashing(self, monkeypatch): | CODE |
| LOW | tools/tests/test_local_harness.py | 818 | def test_start_tolerates_transport_exception_then_succeeds(self, monkeypatch): | CODE |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1327 | def test_version_consistency_checklist(self, temp_repo, sample_package_json, | CODE |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1441 | def test_git_tag_naming_convention(self): | CODE |
| LOW | tools/tests/test_build_release_characterization.py | 723 | def test_line_removal_exact_match(self, unity_project_structure): | CODE |
| LOW | tools/tests/test_build_release_characterization.py | 769 | def test_staged_copy_with_edits(self, unity_project_structure): | CODE |
| LOW | tools/tests/test_build_release_characterization.py | 831 | def test_backup_existing_mcp_folder(self, mock_copytree, unity_project_structure): | CODE |
| LOW | tools/tests/test_build_release_characterization.py | 861 | def test_dry_run_validation_without_changes(self, unity_project_structure): | CODE |
| LOW | tools/tests/test_build_release_characterization.py | 923 | def test_port_discovery_from_status_files(self, mock_status_files): | CODE |
| 1126 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp_source.py | 57 | except Exception: | CODE |
| LOW⚡ | mcp_source.py | 132 | except Exception as e: | CODE |
| MEDIUM⚡ | mcp_source.py | 133 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW⚡ | mcp_source.py | 140 | except Exception as e: | CODE |
| MEDIUM⚡ | mcp_source.py | 141 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW | unity-mcp-skill/references/workflows.md | 2068 | except Exception as e: | CODE |
| LOW | tools/generate_mcpb.py | 141 | except Exception as e: | CODE |
| MEDIUM | tools/generate_mcpb.py | 142 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW | tools/local_harness.py | 1071 | except Exception: | CODE |
| LOW | tools/local_harness.py | 1130 | except Exception: | CODE |
| LOW | tools/local_harness.py | 1164 | except Exception: | CODE |
| LOW | tools/local_harness.py | 1273 | except Exception: | CODE |
| LOW | tools/local_harness.py | 1414 | except Exception: | CODE |
| LOW | tools/generate_docs_reference.py | 205 | except Exception: | CODE |
| LOW | tools/generate_docs_reference.py | 460 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 48 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 124 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 134 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 149 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 182 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 219 | except Exception: | CODE |
| LOW | tools/stress_mcp.py | 227 | except Exception: | CODE |
| LOW⚡ | tools/stress_mcp.py | 291 | except Exception: | CODE |
| LOW⚡ | tools/stress_mcp.py | 294 | except Exception: | CODE |
| LOW⚡ | tools/stress_mcp.py | 302 | except Exception: | CODE |
| LOW⚡ | tools/stress_mcp.py | 308 | except Exception: | CODE |
| LOW | tools/stress_editor_state.py | 47 | except Exception: | CODE |
| LOW | tools/stress_editor_state.py | 124 | except Exception: | CODE |
| LOW | tools/stress_editor_state.py | 138 | except Exception: | CODE |
| LOW | tools/stress_editor_state.py | 151 | except Exception: | CODE |
| LOW | tools/update_versions.py | 281 | except Exception as e: | CODE |
| MEDIUM | tools/update_versions.py | 282 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 2066 | except Exception as e: | CODE |
| LOW | Server/tests/conftest.py | 25 | except Exception as exc: | CODE |
| LOW⚡ | Server/tests/integration/test_transport_framing.py | 61 | except Exception: | CODE |
| LOW⚡ | Server/tests/integration/test_transport_framing.py | 66 | except Exception: | CODE |
| LOW | Server/tests/integration/test_transport_framing.py | 98 | except Exception: | CODE |
| LOW | Server/tests/integration/test_transport_framing.py | 187 | except Exception: | CODE |
| LOW | Server/tests/e2e/bridge_smoke.py | 184 | except Exception as exc: # connection refused, timeout, etc. | CODE |
| MEDIUM | Server/src/main.py | 180 | def _emit_startup(): | CODE |
| LOW⚡ | Server/src/main.py | 113 | except Exception as exc: | CODE |
| LOW⚡ | Server/src/main.py | 116 | except Exception as exc: | CODE |
| LOW⚡ | Server/src/main.py | 125 | except Exception: | CODE |
| LOW⚡ | Server/src/main.py | 135 | except Exception: | CODE |
| LOW | Server/src/main.py | 61 | except Exception: | CODE |
| LOW | Server/src/main.py | 187 | except Exception: | CODE |
| LOW | Server/src/main.py | 233 | except Exception as sync_exc: | CODE |
| LOW | Server/src/main.py | 246 | except Exception as e: | CODE |
| LOW | Server/src/main.py | 265 | except Exception as e: | CODE |
| LOW | Server/src/main.py | 529 | except Exception as e: | CODE |
| LOW | Server/src/main.py | 548 | except Exception as e: | CODE |
| LOW | Server/src/main.py | 610 | except Exception as e: | CODE |
| LOW | Server/src/main.py | 881 | except Exception as exc: | STRING |
| LOW | Server/src/main.py | 915 | except Exception: | STRING |
| LOW | Server/src/transport/unity_transport.py | 37 | except Exception as e: | CODE |
| LOW | Server/src/transport/unity_transport.py | 101 | except Exception as exc: | CODE |
| LOW⚡ | Server/src/transport/plugin_hub.py | 722 | except Exception as close_ex: | CODE |
| LOW⚡ | Server/src/transport/plugin_hub.py | 731 | except Exception as send_ex: | CODE |
| LOW⚡ | Server/src/transport/plugin_hub.py | 739 | except Exception: | CODE |
| LOW⚡ | Server/src/transport/plugin_hub.py | 745 | except Exception as ex: | CODE |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp_source.py | 16 | CODE | |
| LOW | tools/generate_mcpb.py | 15 | CODE | |
| LOW | tools/local_harness.py | 55 | CODE | |
| LOW | tools/generate_docs_reference.py | 30 | CODE | |
| LOW | tools/prepare_unity_asset_store_release.py | 10 | CODE | |
| LOW | tools/sync_release_notes.py | 20 | CODE | |
| LOW | tools/stress_editor_state.py | 24 | CODE | |
| LOW | tools/tests/test_local_harness.py | 27 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 57 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 61 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 65 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 65 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 65 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 66 | CODE | |
| LOW | tools/tests/test_build_release_characterization.py | 66 | CODE | |
| LOW | Server/tests/test_manage_profiler.py | 1 | CODE | |
| LOW | Server/tests/test_manage_vfx_actions.py | 1 | CODE | |
| LOW | Server/tests/test_unity_reflect.py | 1 | CODE | |
| LOW | Server/tests/test_unity_reflect.py | 10 | CODE | |
| LOW | Server/tests/test_manage_animation.py | 4 | CODE | |
| LOW | Server/tests/test_manage_probuilder.py | 1 | CODE | |
| LOW | Server/tests/test_param_normalizer.py | 6 | CODE | |
| LOW | Server/tests/test_log_paths.py | 3 | CODE | |
| LOW | Server/tests/test_unity_docs.py | 1 | CODE | |
| LOW | Server/tests/test_cli_commands_characterization.py | 26 | CODE | |
| LOW | Server/tests/test_cli_commands_characterization.py | 28 | CODE | |
| LOW | Server/tests/test_cli_commands_characterization.py | 28 | CODE | |
| LOW | Server/tests/test_manage_editor.py | 3 | CODE | |
| LOW | Server/tests/test_manage_editor.py | 10 | CODE | |
| LOW | Server/tests/test_manage_editor.py | 11 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 18 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 18 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 19 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 19 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 20 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 24 | CODE | |
| LOW | Server/tests/test_models_characterization.py | 30 | CODE | |
| LOW | Server/tests/test_models_characterization.py | 30 | CODE | |
| LOW | Server/tests/test_manage_camera.py | 1 | CODE | |
| LOW | Server/tests/test_manage_graphics.py | 1 | CODE | |
| LOW | Server/tests/test_cli.py | 11 | CODE | |
| LOW | Server/tests/test_focus_nudge.py | 4 | CODE | |
| LOW | Server/tests/test_focus_nudge.py | 8 | CODE | |
| LOW | …ver/tests/test_core_infrastructure_characterization.py | 21 | CODE | |
| LOW | …ver/tests/test_core_infrastructure_characterization.py | 28 | CODE | |
| LOW | …ver/tests/test_core_infrastructure_characterization.py | 28 | CODE | |
| LOW | …ver/tests/test_core_infrastructure_characterization.py | 48 | CODE | |
| LOW | …tests/integration/test_multi_user_session_isolation.py | 8 | CODE | |
| LOW | Server/tests/integration/test_manage_ui.py | 6 | CODE | |
| LOW | Server/tests/integration/test_api_key_service.py | 10 | CODE | |
| LOW | Server/tests/integration/test_connection_deadline.py | 2 | CODE | |
| LOW | …er/tests/integration/test_plugin_hub_websocket_auth.py | 5 | CODE | |
| LOW | …er/tests/integration/test_plugin_hub_websocket_auth.py | 5 | CODE | |
| LOW | Server/tests/integration/test_telemetry_subaction.py | 7 | CODE | |
| LOW | …/tests/integration/test_middleware_auth_integration.py | 5 | CODE | |
| LOW | Server/tests/integration/test_transport_framing.py | 2 | CODE | |
| LOW | Server/tests/integration/test_manage_texture.py | 3 | CODE | |
| LOW | …r/tests/integration/test_refresh_unity_registration.py | 9 | CODE | |
| LOW | …ver/tests/integration/test_external_changes_scanner.py | 3 | CODE | |
| LOW | …ver/tests/integration/test_editor_state_v2_contract.py | 14 | CODE | |
| 110 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | unity-mcp-skill/references/workflows.md | 67 | # Step 0: Create fresh empty scene (replaces current scene entirely) | COMMENT |
| LOW | unity-mcp-skill/references/workflows.md | 608 | ### Step 0: Detect Project UI Capabilities | COMMENT |
| LOW | unity-mcp-skill/references/workflows.md | 981 | # Step 1: Create hierarchy | COMMENT |
| LOW | unity-mcp-skill/references/workflows.md | 1062 | # Step 2: Wire Slider references (CRITICAL — slider won't work without this) | COMMENT |
| LOW | unity-mcp-skill/references/workflows.md | 1080 | # Step 1: Create hierarchy | COMMENT |
| LOW | unity-mcp-skill/references/workflows.md | 1143 | # Step 2: Wire TMP_InputField references (CRITICAL) | COMMENT |
| LOW⚡ | unity-mcp-skill/references/workflows.md | 1917 | # Step 1: Search for the type you need | COMMENT |
| LOW⚡ | unity-mcp-skill/references/workflows.md | 1921 | # Step 2: Get member summary for the type | COMMENT |
| LOW⚡ | unity-mcp-skill/references/workflows.md | 1925 | # Step 3: Get full signature for specific members you plan to use | COMMENT |
| LOW⚡ | unity-mcp-skill/references/workflows.md | 1929 | # Step 4: Get official docs for usage patterns and examples | COMMENT |
| LOW | unity-mcp-skill/references/probuilder-guide.md | 14 | # Step 1: Get face info with directions | COMMENT |
| LOW | unity-mcp-skill/references/probuilder-guide.md | 24 | # Step 2: Use the direction labels to pick faces | COMMENT |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1611 | # Step 1: Dry-run | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1614 | # Step 2: Real update | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1625 | # Step 3: Validate | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1629 | # Step 4: Would create git commit with message: | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1632 | # Step 5: Would create git tag: | STRING |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 29 | // Step 1: Null parameter guard (consistent across all tools) | COMMENT |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 35 | // Step 2: Wrap parameters | COMMENT |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 38 | // Step 3: Extract and validate required parameters | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2658 | // Step 1: Build a code-only view (comments/strings replaced with spaces) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2675 | // Step 2: Build containing type name at each position via single pass | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2750 | // Step 3: Match method signatures on code-only text (includes => for expression-bodied) | COMMENT |
| LOW | MCPForUnity/Editor/Services/Server/ProcessDetector.cs | 181 | // Step 1: Check if process name matches known server executables | COMMENT |
| LOW | MCPForUnity/Editor/Services/Server/ProcessDetector.cs | 192 | // Step 2: Try to get command line with wmic for better validation | COMMENT |
| LOW | website/docs/guides/custom-tools.md | 13 | ## Step 1: Create Your Tool Handler | COMMENT |
| LOW | website/docs/guides/custom-tools.md | 68 | ## Step 2: Refresh Your MCP Client | COMMENT |
| LOW | website/docs/guides/custom-tools.md | 76 | ## Step 3: List and Call Your Tool from the CLI | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 67 | # Step 0: Create fresh empty scene (replaces current scene entirely) | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 608 | ### Step 0: Detect Project UI Capabilities | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 981 | # Step 1: Create hierarchy | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 1062 | # Step 2: Wire Slider references (CRITICAL — slider won't work without this) | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 1080 | # Step 1: Create hierarchy | COMMENT |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 1143 | # Step 2: Wire TMP_InputField references (CRITICAL) | COMMENT |
| LOW⚡ | .claude/skills/unity-mcp-skill/references/workflows.md | 1915 | # Step 1: Search for the type you need | COMMENT |
| LOW⚡ | .claude/skills/unity-mcp-skill/references/workflows.md | 1919 | # Step 2: Get member summary for the type | COMMENT |
| LOW⚡ | .claude/skills/unity-mcp-skill/references/workflows.md | 1923 | # Step 3: Get full signature for specific members you plan to use | COMMENT |
| LOW⚡ | .claude/skills/unity-mcp-skill/references/workflows.md | 1927 | # Step 4: Get official docs for usage patterns and examples | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 38 | # Step 1: Create empty GameObject | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 48 | # Step 2: Add Canvas components | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 119 | # Step 2: Add RectTransform and TextMeshProUGUI | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 126 | # Step 3: Set text content | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 172 | # Step 2: Add Button and Image components | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 180 | # Step 3: Create child label GameObject | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 188 | # Step 4: Add TextMeshProUGUI to label and set text | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 240 | # Step 2: Add Image component | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 247 | # Step 3: Set sprite if provided | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 63 | # Step 3: Set render mode | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 107 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 161 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 229 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/code.py | 195 | # Step 1: Read the file via Unity's manage_script | COMMENT |
| LOW | Server/src/cli/commands/code.py | 227 | # Step 2: Perform regex search locally | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 58 | # Step 1: Create empty GameObject with position | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 69 | # Step 2: Add Light component using manage_components | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 80 | # Step 3: Set light type using manage_components set_property | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 93 | # Step 4: Set color if provided | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 107 | # Step 5: Set intensity if provided | COMMENT |
| LOW⚡ | …s/Editor/Validator/Scripts/ExternalProjectValidator.cs | 37 | // Step 1 - prepare a temporary project | COMMENT |
| LOW⚡ | …s/Editor/Validator/Scripts/ExternalProjectValidator.cs | 44 | // Step 2 - load the temporary project and validate the package | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | unity-mcp-skill/references/resources-reference.md | 641 | # Always check mcpforunity://instances when: | COMMENT |
| LOW | tools/pypi_publish.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tools/docker_publish.sh | 1 | # Publish a Docker image (manual). | COMMENT |
| LOW | tools/check-unity-versions.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityPhysicsCompat.cs | 1 | using System; | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityObjectIdCompat.cs | 1 | using UnityEngine; | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityFindObjectsCompat.cs | 1 | using System; | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityCompatShims.cs | 1 | namespace MCPForUnity.Runtime.Helpers | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityCompatShims.cs | 21 | /// 3. A future Unity version has announced rename or removal. | COMMENT |
| LOW | MCPForUnity/Runtime/Helpers/UnityAssembliesCompat.cs | 1 | using System; | COMMENT |
| LOW | MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs | 21 | /// The transport type the client is currently configured for. | COMMENT |
| LOW | MCPForUnity/Editor/Clients/IMcpClientConfigurator.cs | 41 | COMMENT | |
| LOW | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 621 | // Unity supports resizing either: | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 1081 | /// <para><b>Keyframe fields:</b></para> | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 1181 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs | 21 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Tools/McpForUnityToolAttribute.cs | 41 | COMMENT | |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 21 | using UnityEditor.Compilation; | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 41 | /// - Download Microsoft.CodeAnalysis.CSharp.dll and dependencies | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2861 | } | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2881 | // switch (validationLevel.ToLower()) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2901 | // errorCount = errors.Length, | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ProBuilder/ManageProBuilder.cs | 21 | /// - create_poly_shape: Create from 2D polygon footprint (points, extrudeHeight, flipNormals) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ProBuilder/ManageProBuilder.cs | 41 | /// - weld_vertices: Weld vertices within proximity radius (vertexIndices, radius) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ProBuilder/ManageProBuilder.cs | 141 | /// bypassing the shader's own Emission block (which is correctly wired to black). | COMMENT |
| LOW | MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs | 21 | /// | COMMENT |
| LOW | MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs | 41 | /// - Materials are cached to avoid recreation | COMMENT |
| LOW | MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs | 61 | /// - particle_clear_bursts: Clear all bursts | COMMENT |
| LOW | MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs | 81 | /// - vfx_set_seed: Set random seed (seed, resetSeedOnPlay) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/Vfx/ManageVFX.cs | 101 | /// - trail_set_time: Set trail duration (time) | COMMENT |
| LOW | …nity/Editor/Security/SecureKeyStore/ISecureKeyStore.cs | 1 | namespace MCPForUnity.Editor.Security | COMMENT |
| LOW | …Unity/Editor/Resources/McpForUnityResourceAttribute.cs | 1 | using System; | COMMENT |
| LOW | …ty/Editor/Dependencies/Models/DependencyCheckResult.cs | 21 | public bool IsSystemReady { get; set; } | COMMENT |
| LOW | …orUnity/Editor/Dependencies/Models/DependencyStatus.cs | 21 | /// <summary> | COMMENT |
| LOW | …or/Dependencies/PlatformDetectors/IPlatformDetector.cs | 21 | /// Detect Python installation on this platform | COMMENT |
| LOW | …rUnity/Editor/Windows/Components/Branding/OceanMark.cs | 1 | using UnityEngine; | COMMENT |
| LOW | …rUnity/Editor/Helpers/EditorWindowScreenshotUtility.cs | 21 | private const int RepaintSettlingDelayMs = 75; | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/GameObjectLookup.cs | 81 | return ResolveInstanceID(instanceId) as GameObject; | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/ScreenshotPreferences.cs | 1 | using MCPForUnity.Runtime.Helpers; | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/AssetPathUtility.cs | 321 | /// Builds the uvx package source arguments for the MCP server. | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/Pagination.cs | 81 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/VectorParsing.cs | 281 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/VectorParsing.cs | 401 | /// | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/VectorParsing.cs | 461 | COMMENT | |
| LOW | MCPForUnity/Editor/Helpers/UnityTypeResolver.cs | 181 | var candidates = fromPlayer.ToList(); | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/PortManager.cs | 61 | int newPort = FindAvailablePort(); | COMMENT |
| LOW | MCPForUnity/Editor/Helpers/RendererHelpers.cs | 181 | if (@params["endWidth"] != null) { setEndWidth(@params["endWidth"].ToObject<float>()); changes.Add("endWidth | COMMENT |
| LOW | MCPForUnity/Editor/Services/EditorStateCache.cs | 541 | // 6000.4 — neither public nor non-public), so the reflection this replaced never | COMMENT |
| LOW | MCPForUnity/Editor/Services/IPackageUpdateService.cs | 1 | namespace MCPForUnity.Editor.Services | COMMENT |
| LOW | MCPForUnity/Editor/Services/IPackageUpdateService.cs | 21 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Services/IPackageUpdateService.cs | 41 | /// <param name="version1">First version string</param> | COMMENT |
| LOW | MCPForUnity/Editor/Services/IPackageUpdateService.cs | 61 | void ClearCache(); | COMMENT |
| LOW | …PForUnity/Editor/Services/IResourceDiscoveryService.cs | 21 | public interface IResourceDiscoveryService | COMMENT |
| LOW | MCPForUnity/Editor/Services/EditorConfigurationCache.cs | 61 | /// Whether to use HTTP transport (true) or Stdio transport (false). | COMMENT |
| LOW | MCPForUnity/Editor/Services/EditorConfigurationCache.cs | 81 | /// </summary> | COMMENT |
| LOW | MCPForUnity/Editor/Services/EditorConfigurationCache.cs | 101 | COMMENT | |
| LOW | MCPForUnity/Editor/Services/IBridgeControlService.cs | 21 | /// <summary> | COMMENT |
| LOW | MCPForUnity/Editor/Services/IBridgeControlService.cs | 41 | COMMENT | |
| LOW | MCPForUnity/Editor/Services/IBridgeControlService.cs | 61 | { | COMMENT |
| LOW | MCPForUnity/Editor/Services/IServerManagementService.cs | 1 | namespace MCPForUnity.Editor.Services | COMMENT |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/local_harness.py | 1185 | CODE | |
| LOW | tools/local_harness.py | 1355 | CODE | |
| LOW | tools/local_harness.py | 826 | CODE | |
| LOW | tools/local_harness.py | 1409 | CODE | |
| LOW | tools/generate_docs_reference.py | 578 | CODE | |
| LOW | tools/stress_mcp.py | 31 | CODE | |
| LOW | tools/stress_mcp.py | 96 | CODE | |
| LOW | tools/stress_mcp.py | 138 | CODE | |
| LOW | tools/stress_editor_state.py | 88 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 270 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 323 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 377 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 433 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 477 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 517 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 556 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 601 | CODE | |
| LOW | Server/tests/test_transport_characterization.py | 640 | CODE | |
| LOW | Server/tests/integration/test_transport_framing.py | 28 | CODE | |
| LOW | Server/tests/integration/test_transport_framing.py | 76 | CODE | |
| LOW | Server/tests/integration/test_transport_framing.py | 36 | CODE | |
| LOW | Server/tests/integration/test_transport_framing.py | 84 | CODE | |
| LOW | Server/tests/integration/test_logging_stdout.py | 21 | CODE | |
| LOW | Server/src/main.py | 150 | CODE | |
| LOW | Server/src/main.py | 375 | CODE | |
| LOW | Server/src/main.py | 655 | CODE | |
| LOW | Server/src/main.py | 414 | CODE | |
| LOW | Server/src/main.py | 552 | CODE | |
| LOW | Server/src/transport/plugin_registry.py | 115 | CODE | |
| LOW | Server/src/transport/plugin_hub.py | 223 | CODE | |
| LOW | Server/src/transport/plugin_hub.py | 286 | CODE | |
| LOW | Server/src/transport/plugin_hub.py | 429 | CODE | |
| LOW | Server/src/transport/plugin_hub.py | 690 | CODE | |
| LOW | Server/src/transport/plugin_hub.py | 991 | CODE | |
| LOW | Server/src/transport/unity_instance_middleware.py | 97 | CODE | |
| LOW | Server/src/transport/unity_instance_middleware.py | 215 | CODE | |
| LOW | Server/src/transport/unity_instance_middleware.py | 324 | CODE | |
| LOW | Server/src/transport/legacy/port_discovery.py | 64 | CODE | |
| LOW | Server/src/transport/legacy/port_discovery.py | 134 | CODE | |
| LOW | Server/src/transport/legacy/port_discovery.py | 226 | CODE | |
| LOW | Server/src/transport/legacy/unity_connection.py | 946 | CODE | |
| LOW | Server/src/transport/legacy/unity_connection.py | 53 | CODE | |
| LOW | Server/src/transport/legacy/unity_connection.py | 173 | CODE | |
| LOW | Server/src/transport/legacy/unity_connection.py | 276 | CODE | |
| LOW | Server/src/transport/legacy/unity_connection.py | 299 | CODE | |
| LOW | Server/src/core/telemetry_decorator.py | 17 | CODE | |
| LOW | Server/src/core/telemetry_decorator.py | 19 | CODE | |
| LOW | Server/src/core/telemetry_decorator.py | 21 | CODE | |
| LOW | Server/src/core/telemetry_decorator.py | 64 | CODE | |
| LOW | Server/src/core/telemetry.py | 259 | CODE | |
| LOW | Server/src/core/telemetry.py | 373 | CODE | |
| LOW | Server/src/utils/focus_nudge.py | 135 | CODE | |
| LOW | Server/src/utils/focus_nudge.py | 177 | CODE | |
| LOW | Server/src/utils/focus_nudge.py | 243 | CODE | |
| LOW | Server/src/cli/main.py | 140 | CODE | |
| LOW | Server/src/cli/utils/output.py | 35 | CODE | |
| LOW | Server/src/cli/utils/output.py | 92 | CODE | |
| LOW | Server/src/cli/commands/prefab.py | 146 | CODE | |
| LOW | Server/src/cli/commands/prefab.py | 255 | CODE | |
| LOW | Server/src/cli/commands/texture.py | 104 | CODE | |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1611 | # Step 1: Dry-run | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1614 | # Step 2: Real update | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1625 | # Step 3: Validate | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1629 | # Step 4: Would create git commit with message: | STRING |
| LOW⚡ | tools/tests/test_build_release_characterization.py | 1632 | # Step 5: Would create git tag: | STRING |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 29 | // Step 1: Null parameter guard (consistent across all tools) | COMMENT |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 35 | // Step 2: Wrap parameters | COMMENT |
| LOW⚡ | MCPForUnity/Editor/Tools/ManageEditor.cs | 38 | // Step 3: Extract and validate required parameters | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2658 | // Step 1: Build a code-only view (comments/strings replaced with spaces) | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2675 | // Step 2: Build containing type name at each position via single pass | COMMENT |
| LOW | MCPForUnity/Editor/Tools/ManageScript.cs | 2750 | // Step 3: Match method signatures on code-only text (includes => for expression-bodied) | COMMENT |
| LOW | MCPForUnity/Editor/Services/Server/ProcessDetector.cs | 181 | // Step 1: Check if process name matches known server executables | COMMENT |
| LOW | MCPForUnity/Editor/Services/Server/ProcessDetector.cs | 192 | // Step 2: Try to get command line with wmic for better validation | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 38 | # Step 1: Create empty GameObject | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 48 | # Step 2: Add Canvas components | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 119 | # Step 2: Add RectTransform and TextMeshProUGUI | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 126 | # Step 3: Set text content | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 172 | # Step 2: Add Button and Image components | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 180 | # Step 3: Create child label GameObject | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 188 | # Step 4: Add TextMeshProUGUI to label and set text | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 240 | # Step 2: Add Image component | COMMENT |
| LOW⚡ | Server/src/cli/commands/ui.py | 247 | # Step 3: Set sprite if provided | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 63 | # Step 3: Set render mode | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 107 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 161 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/ui.py | 229 | # Step 1: Create empty GameObject with parent | COMMENT |
| LOW | Server/src/cli/commands/code.py | 195 | # Step 1: Read the file via Unity's manage_script | COMMENT |
| LOW | Server/src/cli/commands/code.py | 227 | # Step 2: Perform regex search locally | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 58 | # Step 1: Create empty GameObject with position | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 69 | # Step 2: Add Light component using manage_components | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 80 | # Step 3: Set light type using manage_components set_property | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 93 | # Step 4: Set color if provided | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 107 | # Step 5: Set intensity if provided | COMMENT |
| LOW | …ts/Tests/EditMode/Tools/DomainReloadResilienceTests.cs | 74 | // Step 1: Create a script to trigger domain reload | COMMENT |
| LOW | …ts/Tests/EditMode/Tools/DomainReloadResilienceTests.cs | 92 | // Step 2: Make multiple rapid read_console calls | COMMENT |
| LOW | …ts/Tests/EditMode/Tools/DomainReloadResilienceTests.cs | 126 | // Step 3: Verify all calls succeeded | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tools/local_harness.py | 96 | # recommendation, so the harness passes it explicitly. | COMMENT |
| MEDIUM⚡ | tools/local_harness.py | 730 | # Launcher seam (local vs docker). Inlined here so the harness is a single, | COMMENT |
| MEDIUM | tools/local_harness.py | 701 | # discover_editor / resolve_version / classify_log / aggregate_exit; the harness | COMMENT |
| MEDIUM | tools/local_harness.py | 1167 | # frees up or the deadline expires (rather than crashing the harness). | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 669 | # harness docstring's -manualLicenseFile example must be passed). | COMMENT |
| MEDIUM⚡ | tools/tests/test_local_harness.py | 791 | # must treat a raised transport error as non-terminal, not crash the harness. | COMMENT |
| MEDIUM⚡ | tools/tests/test_build_release_characterization.py | 1329 | """Test comprehensive version consistency validation checklist. | STRING |
| MEDIUM | tools/tests/test_build_release_characterization.py | 388 | """Test comprehensive version consistency check across all files. | STRING |
| MEDIUM | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 606 | // Use ParamCoercion for robust int parsing | COMMENT |
| MEDIUM | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 923 | // Use ParamCoercion for robust bool parsing (handles "true", "1", "yes", etc.) | COMMENT |
| MEDIUM | MCPForUnity/Editor/Tools/ManageScriptableObject.cs | 946 | // Use ParamCoercion for robust float parsing | COMMENT |
| MEDIUM | MCPForUnity/Editor/Tools/ManageAsset.cs | 427 | // Deprecated: Prefer manage_scriptable_object for robust patching. | COMMENT |
| MEDIUM | MCPForUnity/Editor/Helpers/ComponentOps.cs | 871 | /// to a SerializedProperty. Uses GameObjectLookup for robust search | COMMENT |
| MEDIUM | …s/RoslynRuntimeCompilation/ManageRuntimeCompilation.cs | 508 | /// This allows MCP commands to leverage the existing GUI tool | COMMENT |
| LOW⚡ | Server/tests/test_transport_characterization.py | 1500 | # Should not raise, just return None | COMMENT |
| LOW | Server/src/services/tools/find_in_file.py | 164 | # We can just return the line content as excerpt | COMMENT |
| MEDIUM | Server/src/services/tools/manage_asset.py | 62 | # --- Normalize properties using robust module-level helper --- | COMMENT |
| LOW | .github/workflows/claude-nl-suite.yml | 1011 | # Otherwise, just return the canonical ID | STRING |
| MEDIUM | .github/workflows/e2e-bridge.yml | 169 | # In --ci mode the harness drives the DockerLauncher: it runs the same | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | Server/tests/test_manage_profiler.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_unity_reflect.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_manage_probuilder.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_manage_build.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_manage_camera.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_manage_graphics.py | 0 | patch unity transport layer and return captured call dict. | STRING |
| HIGH | Server/tests/test_unity_reflect.py | 0 | when unity returns a non-dict, it should be wrapped. | STRING |
| HIGH | Server/tests/test_manage_camera.py | 0 | when unity returns a non-dict, it should be wrapped. | STRING |
| HIGH | Server/tests/test_manage_graphics.py | 0 | when unity returns a non-dict, it should be wrapped. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Server/tests/conftest.py | 54 | # Check if test is in integration/ directory | COMMENT |
| LOW | Server/src/transport/plugin_hub.py | 702 | # Check if we're still supposed to be running and get last pong time (under lock) | COMMENT |
| LOW | Server/src/transport/legacy/unity_connection.py | 229 | # Check if we've received a complete response | COMMENT |
| LOW | Server/src/utils/focus_nudge.py | 574 | # Check if Unity is already focused (no nudge needed) | STRING |
| LOW | Server/src/utils/focus_nudge.py | 648 | # Check if job appears stalled | STRING |
| LOW | Server/src/utils/module_discovery.py | 42 | # Check if subdirectory contains Python modules | COMMENT |
| LOW | Server/src/cli/commands/code.py | 265 | # Display results | COMMENT |
| LOW | Server/src/cli/commands/lighting.py | 121 | # Output the result | COMMENT |
| LOW | Server/src/services/tools/manage_gameobject.py | 206 | # Check if 'saveAsPrefab' is explicitly True in params | COMMENT |
| LOW⚡ | Server/src/services/tools/manage_gameobject.py | 230 | # Check if the response indicates success | COMMENT |
| LOW | Server/src/services/tools/run_tests.py | 277 | # Check if tests are done | COMMENT |
| LOW | Server/src/services/tools/run_tests.py | 291 | # Check if Unity needs a focus nudge to make progress | COMMENT |
| LOW | Server/src/services/tools/utils.py | 245 | # Check if it looks like a JSON array but will fail to parse | COMMENT |
| LOW | Server/src/services/tools/utils.py | 296 | # Check if input is normalized (0-1) or already 0-255 | COMMENT |
| LOW | Server/src/services/tools/manage_script.py | 121 | # Read file to support index->line/col conversion when needed | COMMENT |
| LOW | Server/src/services/resources/__init__.py | 75 | # Check if URI contains query parameters (e.g., {?unity_instance}) | COMMENT |
| LOW | .github/workflows/release.yml | 120 | # Check if beta has changes not in main | COMMENT |
| LOW | .github/workflows/beta-release.yml | 55 | # Check if already a beta version - increment beta number | COMMENT |
| LOW | .github/workflows/beta-release.yml | 129 | # Check if PR already exists | COMMENT |
| LOW | .github/workflows/beta-release.yml | 188 | # Check if already a beta/prerelease version | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Server/tests/test_cli.py | 1269 | # Create a temp batch file | COMMENT |
| MEDIUM⚡ | …ver/tests/integration/test_external_changes_scanner.py | 12 | # Create a minimal Unity-like layout | COMMENT |
| MEDIUM⚡ | …ver/tests/integration/test_external_changes_scanner.py | 22 | # Create a file before baseline so the initial scan establishes a stable reference point. | COMMENT |
| MEDIUM | …ver/tests/integration/test_domain_reload_resilience.py | 22 | # Create a mock registry | COMMENT |
| MEDIUM | …ver/tests/integration/test_domain_reload_resilience.py | 77 | # Create a mock registry that never returns sessions | COMMENT |
| MEDIUM | …ver/tests/integration/test_domain_reload_resilience.py | 227 | # Create a mock registry with two sessions | COMMENT |
| MEDIUM | Server/src/core/config.py | 68 | # Create a global config instance | COMMENT |
| MEDIUM | Server/src/services/registry/tool_registry.py | 67 | tool_kwargs = dict(kwargs) # Create a copy to avoid side effects | CODE |
| MEDIUM | .github/workflows/beta-release.yml | 120 | # Create a temporary branch for the version update | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | Server/src/transport/legacy/unity_connection.py | 559 | Resolve an instance identifier to a specific Unity instance. Args: instance_identifier: Us | STRING |
| HIGH | Server/src/transport/legacy/unity_connection.py | 673 | Get or create a connection to a Unity instance. Args: instance_identifier: Optional identi | STRING |
| HIGH | Server/src/cli/utils/parsers.py | 10 | Parse a value, trying JSON → float → string fallback. This is used for property values that could be JSON objects/a | STRING |
| HIGH | Server/src/cli/utils/connection.py | 76 | Send a command to Unity via the MCP HTTP server. Args: command_type: The command type (e.g., 'manage_gameob | STRING |
| HIGH | Server/src/cli/utils/confirmation.py | 13 | Prompt user to confirm destructive action unless --force flag is set. Args: action: The action being perfor | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | website/docs/guides/remote-server-auth.md | 108 | "X-API-Key": "<your-api-key>" | CODE |
| HIGH | website/docs/guides/remote-server-auth.md | 119 | --header "X-API-Key: <your-api-key>" | CODE |
| HIGH | Server/README.md | 229 | "X-API-Key": "<your-api-key>" | CODE |
| HIGH | Server/DOCKER_OVERVIEW.md | 103 | "X-API-Key": "<your-api-key>" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Server/src/services/tools/manage_prefabs.py | 48 | CODE | |
| LOW | Server/src/services/tools/manage_gameobject.py | 54 | CODE | |
| LOW | Server/src/services/tools/run_tests.py | 154 | CODE | |
| LOW | Server/src/services/tools/manage_graphics.py | 81 | CODE | |
| LOW | Server/src/services/tools/manage_material.py | 24 | CODE | |
| LOW | Server/src/services/tools/read_console.py | 29 | CODE | |
| LOW | Server/src/services/tools/generate_image.py | 40 | CODE | |
| LOW | Server/src/services/tools/manage_asset.py | 30 | CODE | |
| LOW | Server/src/services/tools/manage_texture.py | 389 | CODE | |
| LOW | Server/src/services/tools/utils.py | 459 | CODE | |
| LOW | Server/src/services/tools/manage_build.py | 50 | CODE | |
| LOW | Server/src/services/tools/manage_physics.py | 54 | CODE | |
| LOW | Server/src/services/tools/unity_docs.py | 722 | CODE | |
| LOW | Server/src/services/tools/manage_profiler.py | 63 | CODE | |
| LOW | Server/src/services/tools/manage_ui.py | 54 | CODE | |
| LOW | Server/src/services/tools/import_model.py | 42 | CODE | |
| LOW | Server/src/services/tools/manage_scene.py | 28 | CODE | |
| LOW | Server/src/services/tools/generate_model.py | 39 | CODE | |
| LOW | Server/src/services/tools/manage_camera.py | 79 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Server/tests/conftest.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/transport/plugin_registry.py | 189 | __all__ = ["PluginRegistry", "PluginSession"] | CODE |
| LOW | Server/src/transport/unity_transport.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/transport/plugin_hub.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/transport/unity_instance_middleware.py | 39 | def set_unity_instance_middleware(middleware: 'UnityInstanceMiddleware') -> None: | CODE |
| LOW | Server/src/transport/unity_instance_middleware.py | 72 | async def set_active_instance(self, ctx, instance_id: str) -> None: | CODE |
| LOW | Server/src/utils/focus_nudge.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/models/__init__.py | 4 | __all__ = ['MCPResponse', 'UnityInstanceInfo', 'normalize_unity_response', 'parse_resource_response'] | CODE |
| LOW | Server/src/cli/utils/config.py | 55 | def set_config(config: CLIConfig) -> None: | CODE |
| LOW | Server/src/cli/utils/__init__.py | 18 | __all__ = [ | CODE |
| LOW | Server/src/services/api_key_service.py | 235 | __all__ = ["ApiKeyService", "ValidationResult"] | CODE |
| LOW | Server/src/services/tools/refresh_unity.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/services/tools/run_tests.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/services/tools/__init__.py | 17 | __all__ = [ | CODE |
| LOW | Server/src/services/tools/batch_execute.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | Server/src/services/resources/__init__.py | 20 | __all__ = ['register_all_resources'] | CODE |
| LOW | Server/src/services/state/external_changes_scanner.py | 51 | def set_project_root(self, instance_id: str, project_root: str | None) -> None: | CODE |
| LOW | Server/src/services/registry/__init__.py | 18 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/local_harness.py | 1237 | # status == "failed": data.result is null; surface error + capped failures. | COMMENT |
| HIGH | tools/generate_docs_reference.py | 27 | cd Server && uv sync && cd .. && uv --project Server run python tools/generate_docs_reference.py --check | STRING |
| HIGH | …ver/tests/test_core_infrastructure_characterization.py | 17 | cd Server && uv run pytest tests/test_core_infrastructure_characterization.py -v | STRING |
| HIGH | Server/src/services/tools/script_apply_edits.py | 701 | "replacement": "public bool HasTarget(){ return currentTarget!=null; }" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | MCPForUnity/Editor/Tools/Prefabs/ManagePrefabs.cs | 597 | /// This is ideal for automated/agentic workflows as it avoids UI, dirty flags, and dialogs. | COMMENT |
| MEDIUM | Server/src/transport/plugin_hub.py | 875 | # NOTE: This wait can impact agentic workflows where domain reloads happen | COMMENT |
| MEDIUM | Server/src/transport/legacy/unity_connection.py | 850 | # NOTE: This wait can impact agentic workflows where domain reloads happen | COMMENT |
| MEDIUM | …Tests/EditMode/Tools/MaterialMeshInstantiationTests.cs | 200 | // Removed low-value property-presence tests; the instanceID tests are the authoritative guardrails. | COMMENT |
| MEDIUM | …s/Assets/Tests/EditMode/AssetGen/AssetGenPrefsTests.cs | 10 | /// Phase 0 scaffold: non-secret AssetGen preferences round-trip through EditorPrefs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/pypi_publish.sh | 13 | # Usage: | COMMENT |
| LOW | tools/install-hooks.sh | 4 | # Usage: | COMMENT |
| LOW | tools/docker_publish.sh | 8 | # Usage: | COMMENT |
| LOW | tools/check-unity-versions.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | unity-mcp-skill/references/workflows.md | 1157 | "component_type": "TMP_InputField", "property": "placeholder", | CODE |
| LOW | .claude/skills/unity-mcp-skill/references/workflows.md | 1157 | "component_type": "TMP_InputField", "property": "placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Server/tests/test_cli.py | 1401 | "contents": "// TODO: implement this\n// FIXME: bug here\nclass Test {}\n", | CODE |