WSL Ubuntu环境下VS Code无法启动MCP服务器求助
解决WSL Ubuntu下VS Code连接MCP服务器时的
Error spawn npx ENOENT错误 问题背景
近期MCP服务器正式发布后,在WSL Ubuntu环境的VS Code中尝试连接多台MCP服务器时,遇到错误:
2025-07-18 14:25:50.616 [info] Connection state: Error spawn npx ENOENT
已完成以下排查但问题未解决:
- 确认Shell配置正确
- npx已安装且终端中可正常访问
- 拥有命令执行权限
- 修改VS Code
settings.json配置,确保Shell加载~/.bashrc并将nvm管理的Node路径加入环境变量 - 使用包装脚本
~/run-npx.sh加载nvm后执行npx - 通过
sudo apt install node npm全局安装Node.js和npm
相关配置
- VS Code
settings.json调整内容:
"terminal.integrated.profiles.linux": { "bash": { "path": "bash", "args": ["-c", "source ~/.bashrc; exec bash"] } }, "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.env.linux": { "PATH": "/home/{user}/.nvm/versions/node/v24.2.0/bin:${env:PATH}", "NVM_DIR": "/home/{user}/.nvm" },
mcp.json示例配置:
{ "servers": { "context7": { "type": "stdio", "command": "~/run-npx.sh", "args": [ "-y", "@upstash/context7-mcp@latest" ], "gallery": true } } }
可能的解决方案
1. 让MCP扩展读取正确的环境变量
VS Code终端集成的环境变量和扩展进程的环境变量是分离的,你修改的terminal.integrated.env.linux仅作用于内置终端。可在settings.json中添加自动化Shell配置,让扩展进程加载登录Shell的环境变量:
"terminal.integrated.automationShell.linux": "/bin/bash", "terminal.integrated.automationShellArgs.linux": ["-l", "-c"]
-l参数会让bash以登录Shell模式启动,自动加载~/.bashrc或~/.profile中的环境变量配置。
2. 使用npx绝对路径替代相对路径
直接在mcp.json中使用npx的绝对路径,避免路径解析问题:
- 先在WSL终端执行
which npx获取绝对路径,比如输出/home/{user}/.nvm/versions/node/v24.2.0/bin/npx - 修改
mcp.json的command字段为该绝对路径:
"command": "/home/{user}/.nvm/versions/node/v24.2.0/bin/npx"
3. 修复包装脚本的权限与路径
确保run-npx.sh有可执行权限:
chmod +x ~/run-npx.sh
脚本内容需正确加载nvm并转发参数,示例:
#!/bin/bash source ~/.nvm/nvm.sh npx "$@"
同时避免使用~/路径前缀,改用绝对路径配置到mcp.json:
"command": "/home/{user}/run-npx.sh"
4. 重启VS Code与WSL会话
环境变量修改可能需要重启生效:
- 完全关闭VS Code(包括所有窗口)
- 在WSL终端执行
wsl --shutdown重启会话,再重新打开VS Code尝试连接
5. 检查Node.js版本兼容性
确认@upstash/context7-mcp支持当前Node.js v24.2.0版本,可尝试切换到LTS版本(如v20.x):
nvm install 20 nvm use 20
同步更新settings.json中的PATH路径为v20版本的路径后重试。
内容的提问来源于stack exchange,提问作者spencerready
相关产品推荐
相关产品推荐

