diff --git a/desktop/capabilities/default.json b/desktop/capabilities/default.json index ca5dc7218..216c636fd 100644 --- a/desktop/capabilities/default.json +++ b/desktop/capabilities/default.json @@ -32,7 +32,8 @@ { "name": "claude-agent-acp", "cmd": "claude-agent-acp", "args": true }, { "name": "codex-acp", "cmd": "codex-acp", "args": true }, { "name": "gemini", "cmd": "gemini", "args": true }, - { "name": "openpencil-mcp-http", "cmd": "openpencil-mcp-http", "args": true } + { "name": "openpencil-mcp-http", "cmd": "openpencil-mcp-http", "args": true }, + { "name": "cmd", "cmd": "cmd", "args": true } ] }, "shell:allow-stdin-write", diff --git a/src/automation/spawn-mcp.ts b/src/automation/spawn-mcp.ts index dd048b500..5cf3999d2 100644 --- a/src/automation/spawn-mcp.ts +++ b/src/automation/spawn-mcp.ts @@ -66,12 +66,20 @@ export async function spawnMCPIfNeeded(): Promise runtimeAutomationAuthToken = authToken const { Command } = await import('@tauri-apps/plugin-shell') - const command = Command.create('openpencil-mcp-http', [], { - env: { - OPENPENCIL_MCP_AUTH_TOKEN: authToken, - OPENPENCIL_MCP_CORS_ORIGIN: window.location.origin - } - }) + const isWindows = navigator.userAgent.includes('Windows') + const command = isWindows + ? Command.create('cmd', ['/c', 'openpencil-mcp-http'], { + env: { + OPENPENCIL_MCP_AUTH_TOKEN: authToken, + OPENPENCIL_MCP_CORS_ORIGIN: window.location.origin + } + }) + : Command.create('openpencil-mcp-http', [], { + env: { + OPENPENCIL_MCP_AUTH_TOKEN: authToken, + OPENPENCIL_MCP_CORS_ORIGIN: window.location.origin + } + }) command.stderr.on('data', (raw: Uint8Array | number[] | string) => { console.error('[MCP]', decodeTauriStderr(raw))