CoplayDev/unity-mcp · error · InvalidOperationException
Cherry Studio uses UI-based configuration. Please use the Ma
Error message
Cherry Studio uses UI-based configuration. Please use the Manual Configuration snippet and Installation Steps to configure manually.
What it means
CherryStudioConfigurator.Configure() is an unconditional throw — Cherry Studio stores MCP server config entirely through its own GUI, not a JSON file the plugin can write. The class sets SupportsAutoConfigure=false and CheckStatus always returns NotConfigured, so calling Configure() is a contract violation. The message directs the user to the manual snippet and installation steps instead.
Source
Thrown at MCPForUnity/Editor/Clients/Configurators/CherryStudioConfigurator.cs:51
" - Name: unity-mcp",
" - Type: STDIO",
" - Command: uvx",
" - Arguments: Copy from the Manual Configuration JSON below",
"Click Save and restart Cherry Studio",
"",
"Note: Cherry Studio uses UI-based configuration.",
"Use the manual snippet below as reference for the values to enter."
};
public override McpStatus CheckStatus(bool attemptAutoRewrite = true)
{
client.SetStatus(McpStatus.NotConfigured, "Cherry Studio requires manual UI configuration");
return client.status;
}
public override void Configure()
{
throw new InvalidOperationException(
"Cherry Studio uses UI-based configuration. " +
"Please use the Manual Configuration snippet and Installation Steps to configure manually."
);
}
public override string GetManualSnippet()
{
bool useHttp = EditorConfigurationCache.Instance.UseHttpTransport;
if (useHttp)
{
return "# Cherry Studio does not support WebSocket transport.\n" +
"# Cherry Studio supports STDIO and SSE transports.\n" +
"# \n" +
"# To use Cherry Studio:\n" +
"# 1. Switch transport to 'Stdio' in Advanced Settings below\n" +
"# 2. Return to this configuration screen\n" +
"# 3. Copy the STDIO configuration snippet that will appear\n" +View on GitHub (pinned to c21bf496bc)
Solutions
- Check configurator.SupportsAutoConfigure before invoking Configure(); skip Cherry Studio and surface GetManualSnippet() + GetInstallationSteps() to the user instead.
- In bulk/configure-all loops, filter with clients.Where(c => c.SupportsAutoConfigure) before calling Configure().
- If you are an end user: follow the Installation Steps shown in the MCP for Unity window — open Cherry Studio Settings > MCP Server and enter the values manually.
Example fix
// before
foreach (var c in detectedClients) { c.Configure(); }
// after
foreach (var c in detectedClients)
{
if (!c.SupportsAutoConfigure) continue;
c.Configure();
} Defensive patterns
Strategy: validation
Validate before calling
if (!configurator.SupportsAutoConfigure)
{
// Show manual snippet instead of calling Configure()
ShowToUser(configurator.GetManualSnippet(), configurator.GetInstallationSteps());
return;
} Type guard
public static bool CanAutoConfigure(IMcpClientConfigurator c) => c.SupportsAutoConfigure;
Prevention
- Always check SupportsAutoConfigure before calling Configure() on any configurator.
- In bulk configure loops, filter out clients that do not support auto-configuration.
- UI code should hide or disable the Configure button for clients with SupportsAutoConfigure=false.
When it happens
Trigger: Calling configurator.Configure() on a CherryStudioConfigurator instance — e.g., a 'Configure All Detected Clients' bulk operation that does not skip clients where SupportsAutoConfigure is false, or UI code that invokes Configure() without checking the flag.
Common situations: A developer extends the bulk configure pipeline or adds a new entry point and forgets to gate on SupportsAutoConfigure. End users clicking a 'Configure' button for Cherry Studio if the UI layer does not hide/disable it.
Related errors
- OpenClaw config contains non-JSON content and cannot be safe
- uvx not found. Install uv/uvx or set the override in Advance
- uvx not found. Install uv/uvx or set the override in Advance
- uvx not found. Install uv/uvx or set the override in Advance
- {result}
AI-assisted analysis of CoplayDev/unity-mcp@c21bf496bc (2026-08-13).
Data as JSON: /api/errors/09bcb69d3d91c8cf.
Report an issue: GitHub.