diff --git a/src/config/mcpPresets.ts b/src/config/mcpPresets.ts index e52efdc87..e7514e641 100644 --- a/src/config/mcpPresets.ts +++ b/src/config/mcpPresets.ts @@ -1,7 +1,25 @@ import { McpServer, McpServerSpec } from "../types"; +import { isWindows } from "@/lib/platform"; export type McpPreset = Omit; +// 创建跨平台 npx 命令配置 +// Windows 需要使用 cmd /c wrapper 来执行 npx.cmd +// Mac/Linux 可以直接执行 npx +const createNpxCommand = (packageName: string, extraArgs: string[] = []): { command: string; args: string[] } => { + if (isWindows()) { + return { + command: 'cmd', + args: ['/c', 'npx', ...extraArgs, packageName] + }; + } else { + return { + command: 'npx', + args: [...extraArgs, packageName] + }; + } +}; + // 预设 MCP(逻辑简化版): // - 仅包含最常用、可快速落地的 stdio 模式示例 // - 不涉及分类/模板/测速等复杂逻辑,默认以 disabled 形式"回种"到 config.json @@ -26,8 +44,7 @@ export const mcpPresets: McpPreset[] = [ tags: ["stdio", "time", "utility"], server: { type: "stdio", - command: "npx", - args: ["-y", "@modelcontextprotocol/server-time"], + ...createNpxCommand("@modelcontextprotocol/server-time", ["-y"]), } as McpServerSpec, homepage: "https://github.com/modelcontextprotocol/servers", docs: "https://github.com/modelcontextprotocol/servers/tree/main/src/time", @@ -38,8 +55,7 @@ export const mcpPresets: McpPreset[] = [ tags: ["stdio", "memory", "graph"], server: { type: "stdio", - command: "npx", - args: ["-y", "@modelcontextprotocol/server-memory"], + ...createNpxCommand("@modelcontextprotocol/server-memory", ["-y"]), } as McpServerSpec, homepage: "https://github.com/modelcontextprotocol/servers", docs: "https://github.com/modelcontextprotocol/servers/tree/main/src/memory", @@ -50,8 +66,7 @@ export const mcpPresets: McpPreset[] = [ tags: ["stdio", "thinking", "reasoning"], server: { type: "stdio", - command: "npx", - args: ["-y", "@modelcontextprotocol/server-sequential-thinking"], + ...createNpxCommand("@modelcontextprotocol/server-sequential-thinking", ["-y"]), } as McpServerSpec, homepage: "https://github.com/modelcontextprotocol/servers", docs: "https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking", @@ -62,8 +77,7 @@ export const mcpPresets: McpPreset[] = [ tags: ["stdio", "docs", "search"], server: { type: "stdio", - command: "npx", - args: ["-y", "@upstash/context7-mcp"], + ...createNpxCommand("@upstash/context7-mcp", ["-y"]), } as McpServerSpec, homepage: "https://context7.com", docs: "https://github.com/upstash/context7/blob/master/README.md",