* feat: implement Unity Asset Store compliance with post-installation dependency setup
- Remove bundled Python dependencies from Unity package
- Add comprehensive 6-step setup wizard with auto-trigger on first import
- Implement cross-platform dependency detection (Windows, macOS, Linux)
- Add integrated MCP client configuration within setup process
- Create production-ready menu structure with clean UI/UX
- Ensure complete end-to-end setup requiring no additional configuration
- Add comprehensive error handling and recovery mechanisms
This implementation ensures Asset Store compliance while maintaining full
functionality through guided user setup. Users are left 100% ready to use
MCP after completing the setup wizard.
* refactor: improve Asset Store compliance implementation with production-ready setup
- Remove automatic installation attempts on package import
- Always show setup wizard on package install/reinstall
- Integrate MCP client configuration as part of setup wizard process
- Ensure MCP client config window remains accessible via menu
- Remove testing components for production readiness
- Replace automatic installation with manual guidance only
- Add complete 4-step setup flow: Welcome → Dependencies → Installation Guide → Client Configuration → Complete
- Improve user experience with clear instructions and accessible client management
* feat: add comprehensive dependency requirement warnings
- Add critical warnings throughout setup wizard that package cannot function without dependencies
- Update package.json description to clearly state manual dependency installation requirement
- Prevent setup completion if dependencies are missing
- Enhance skip setup warning to emphasize package will be non-functional
- Add error messages explaining consequences of missing dependencies
- Update menu item to indicate setup wizard is required
- Ensure users understand package is completely non-functional without proper dependency installation
* refactor: simplify setup wizard for production
BREAKING: Reduced setup wizard from 5 steps to 3 streamlined steps:
- Step 1: Setup (welcome + dependency check + installation guide)
- Step 2: Configure (client configuration with direct access to full settings)
- Step 3: Complete (final status and quick access to resources)
Simplifications:
- Consolidated UI components with DRY helper methods (DrawSectionTitle, DrawSuccessStatus, DrawErrorStatus)
- Simplified dependency status display with clean icons and essential info
- Removed complex state management - using simple EditorPrefs instead
- Removed unused InstallationOrchestrator and SetupState classes
- Streamlined client configuration to direct users to full settings window
- Simplified navigation with back/skip/next buttons
- Reduced code complexity while maintaining solid principles
Results:
- 40% less code while maintaining all functionality
- Cleaner, more intuitive user flow
- Faster setup process with fewer clicks
- Production-ready simplicity
- Easier maintenance and debugging
* fix: add missing using statement for DependencyCheckResult
Add missing 'using MCPForUnity.Editor.Dependencies.Models;' to resolve
DependencyCheckResult type reference in SetupWizard.cs
* refactor: optimize dependency checks and remove dead code
* fix: remove unused DrawInstallationProgressStep method
Removes leftover method that references deleted _isInstalling and _installationStatus fields, fixing compilation errors.
* feat: improve setup wizard UX and add real client configuration
1. Remove dependency mentions from package.json description
2. Only show dependency warnings when dependencies are actually missing
3. Add actual MCP client configuration functionality within the wizard:
- Client selection dropdown
- Individual client configuration
- Claude Code registration/unregistration
- Batch configuration for all clients
- Manual setup instructions
- Real configuration file writing
Users can now complete full setup including client configuration without leaving the wizard.
* refactor: improve menu text and client restart tip
- Remove '(Required)' from Setup Wizard menu item for cleaner appearance
- Update tip to reflect that most AI clients auto-detect configuration changes
* refactor: simplify client restart tip message
* fix: add missing using statement for MCPForUnityEditorWindow
Add 'using MCPForUnity.Editor.Windows;' to resolve unresolved symbol error for MCPForUnityEditorWindow in SetupWizard.cs
* Format code
* Remove unused folders
* Same for validators
* Same for Setup...
* feat: add setup wizard persistence to avoid showing on subsequent imports
* fix: update Python version check to support Python 4+ across all platform detectors
* refactor: extract common platform detection logic into PlatformDetectorBase class
* feat: add configuration helpers for MCP client setup with sophisticated path resolution
* fix: add missing override keyword to DetectPython method in platform detectors
* fix: update menu item labels for consistent capitalization and naming
* fix: standardize "MCP For Unity" capitalization in window titles and dialogs
* refactor: update package ID from justinpbarnett to coplaydev across codebase
* refactor: remove unused validation and configuration helper methods
* refactor: remove unused warnOnLegacyPackageId parameter from TryFindEmbeddedServerSource
---------
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Marcus Sanatan <msanatan@gmail.com>
* refactor: remove unused UnityEngine references from menu item classes
* Add new tools to manage a prefab, particularly, making them staged.
This might be enough, but it's possible we may have to extract some logic from ManageGameObject
* feat: add AssetPathUtility for asset path normalization and update references in ManageAsset and ManagePrefabs
* feat: add prefab management tools and register them with the MCP server
* feat: update prefab management commands to use 'prefabPath' and add 'create_from_gameobject' action
* fix: update parameter references to 'prefabPath' in ManagePrefabs and manage_prefabs tools
* fix: clarify error message for missing 'prefabPath' in create_from_gameobject command
* fix: ensure pull request triggers for unity tests workflow
* Revert "fix: ensure pull request triggers for unity tests workflow"
This reverts commit 10bfe54b5b7f3c449852b1bf1bb72f498289a1a0.
* Remove delayed execution of executing menu item, fixing #279
This brings the Unity window into focus but that seems to be a better UX for devs.
Also streamline manage_menu_item tool info, as FastMCP recommends
* docs: clarify menu item tool description with guidance to use list action first
* feat: add version update for server_version.txt in bump-version workflow
* fix: simplify error message for failed menu item execution
* feat: add Codex CLI client support with config.toml handling
* feat: add config helpers for managing Codex and MCP server configurations
* feat: add TOML array parsing support for multi-line and trailing comma formats
* fix: handle TOML inline comments in section headers during parsing
* fix: strip TOML comments before processing section headers
* fix: improve JSON parsing to handle escaped single quotes in config strings
* Use Tommy for TOML parsing
It's a single file and OSS, easy to integrate into Unity
* fix: patched Tommy’s literal-string handling so doubled single quotes inside literal strings are treated as embedded apostrophes instead of prematurely ending the value
* Don't overwrite MCP configs while testing
Seeing random JSON in my codex config was pretty annoying
* PR Feedback
* Keep Tommy compatible with Unity 2021
* Re-include Tommy's license
Probably a good habit to keep all 3rd party licenses and copyrights, even if they're also MIT licenses
* Move the current test to a Tools folder
* feat: add env object and disabled flag handling for MCP client configuration
* Format manual config specially for Windsurf and Kiro
* refactor: extract config JSON building logic into dedicated ConfigJsonBuilder class
* refactor: extract unity node population logic into centralized helper method
* refactor: only add env property to config for Windsurf and Kiro clients
If it ain't broke with the other clients, don't fix...
* fix: write UTF-8 without BOM encoding for config files to avoid Windows compatibility issues
* fix: enforce UTF-8 encoding without BOM when writing files to disk
* refactor: replace execute_menu_item with enhanced manage_menu_item tool supporting list/exists/refresh
* Update meta files for older Unity versions
* test: add unit tests for menu item management and execution
* feat: add tips for paths, script compilation, and menu item usage in asset creation strategy
* Use McpLog functionality instead of Unity's Debug
* Add telemetry
* Annotate parameters
More info to LLMs + better validation
* Remove the refresh command
It's only ever useful in the context of listing menu items
* Updated meta files since running in Unity 2021
* Slightly better README
* fix: rename server-version.txt to server_version.txt and update menu item description
- Detect and clean up legacy server installations in LocalApplicationData
- Prevents accumulation of old server copies during package updates
- Improves cleanup of Windows-specific legacy installation paths
Normalize macOS to Application Support; use AppSupport symlink for Cursor args
Map XDG (~/.local/share, ~/.config) to Application Support
VSCode manual: show mcp.json path; use top-level servers JSON
VSCode macOS path: ~/Library/Application Support/Code/User/mcp.json
* Move the current test to a Tools folder
* feat: add env object and disabled flag handling for MCP client configuration
* Format manual config specially for Windsurf and Kiro
* refactor: extract config JSON building logic into dedicated ConfigJsonBuilder class
* refactor: extract unity node population logic into centralized helper method
* refactor: only add env property to config for Windsurf and Kiro clients
If it ain't broke with the other clients, don't fix...
* fix: write UTF-8 without BOM encoding for config files to avoid Windows compatibility issues
* fix: enforce UTF-8 encoding without BOM when writing files to disk
* refactor: rename namespace from UnityMcpBridge to MCPForUnity across all files
See thread in #6, we can't use Unity MCP because it violates their trademark.
That name makes us look affiliated. We can use MCP for Unity
* Change package display name, menu item and menu titles
These are front facing so has to change for Unity asset store review
* Misc name changes in logs and comments for better consistency
* chore: update editor window title from 'MCP Editor' to 'MCP for Unity'
* refactor: update branding from UNITY-MCP to MCP-FOR-UNITY across all log messages and warnings
* chore: rename Unity MCP to MCP For Unity across all files and bump version to 2.1.2
* docs: update restore script title to clarify Unity MCP naming
* Fix usage instructions
* chore: update log messages to use MCP For Unity branding instead of UnityMCP
* Add a README inside plugin, required for distributing via the asset store
* docs: update Unity port description and fix typo in troubleshooting section
* Address Rabbit feedback
* Update Editor prefs to use new name
Prevents overlap with other Unity MCPs, happy to revert if it's too much
* refactor: rename server logger and identifier from unity-mcp-server to mcp-for-unity-server
* Standardize casing of renamed project to "MCP for Unity", as it is on the asset store
* Remove unused folder
* refactor: rename Unity MCP to MCP for Unity across codebase
* Update dangling references
* docs: update product name from UnityMCP to MCP for Unity in README
* Update log and comments for new name
This merge combines upstream's organizational rebrand and updates with
our comprehensive bridge stability improvements:
**From Upstream:**
- CoplayDev organizational rebrand (README, LICENSE, documentation)
- Updated logo and deployment scripts
- Python version pinning (.python-version file)
**From Our Branch (Preserved):**
- Comprehensive bridge stability improvements (threading, heartbeat, retries)
- Enhanced debugging and diagnostic features
- Embedded server installation approach (more reliable than git-based)
- Broader Python compatibility (>=3.10 vs >=3.12)
- Advanced port management with per-project persistence
- Auto-setup and connection reliability features
- Robust error handling and recovery mechanisms
**Key Technical Decisions:**
- Used our comprehensive UnityMcpBridge.cs (625 lines vs 473) with all stability features
- Maintained embedded server approach over upstream's git-based installer
- Preserved broader Python compatibility (>=3.10) for better accessibility
- Used our optimized connection settings and retry logic
- Kept our user-centric server installation approach (on-demand vs automatic)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Switch ServerInstaller to embedded copy-only (no network)
- Simplify Editor UI server status to 'Installed (Embedded)'
- Vendor UnityMcpServer/src into UnityMcpBridge/UnityMcpServer/src for UPM distribution
- Keep bridge recompile robustness (heartbeat + sticky port)
- Enhanced Windows support for UV and Claude executable detection with OS-specific path handling
- Added PowerShell integration for Windows command execution with proper PATH environment setup
- Implemented comprehensive UV path scanning for various installation methods (Python, Chocolatey, Scoop, Cargo, etc.)
- Added executable validation using IsValidUvInstallation() method
- Improved Claude path detection with fallback to PowerShell's Get-Command
- Enhanced configuration path handling with Windows-specific paths and cross-platform normalization
- Cleaned up exception handling by removing unused exception variables
- Fixed method signature in VSCodeManualSetupWindow
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>