diff --git a/service/src/mcp/client.service.ts b/service/src/mcp/client.service.ts index 1cf175c..9d8b875 100644 --- a/service/src/mcp/client.service.ts +++ b/service/src/mcp/client.service.ts @@ -44,6 +44,9 @@ export class McpClient { if (!this.oauthPovider){ this.oauthPovider = await this.oAuthClient.getOAuthProvider(); } + + const env = { ...process.env, ...this.options.env } as Record; + // 根据连接类型创建传输层 switch (this.options.connectionType) { case 'STDIO': @@ -52,7 +55,7 @@ export class McpClient { args: this.options.args || [], cwd: this.options.cwd || process.cwd(), stderr: 'pipe', - env: this.options.env, + env }); break; diff --git a/service/src/mcp/connect.service.ts b/service/src/mcp/connect.service.ts index 15cf1c0..038a619 100644 --- a/service/src/mcp/connect.service.ts +++ b/service/src/mcp/connect.service.ts @@ -45,6 +45,10 @@ function getCWD(option: McpOptions) { // 如果是绝对路径,直接返回目录 if (path.isAbsolute(file)) { // 如果是是文件,则返回文件所在的目录 + if (!fs.existsSync(file)) { + return ''; + } + if (fs.statSync(file).isDirectory()) { return file; } else { @@ -53,6 +57,11 @@ function getCWD(option: McpOptions) { } else { // 如果是相对路径,根据 cwd 获取真实路径 const absPath = path.resolve(option.cwd || process.cwd(), file); + + if (!fs.existsSync(absPath)) { + return ''; + } + // 如果是是文件,则返回文件所在的目录 if (fs.statSync(absPath).isDirectory()) { return absPath;