mcp-mac设置
修复当Node/pnpm通过以下方式管理时,VS Code MCP服务器stdio在macOS上启动的问题 非易失性存储器 或 fnm.
](https://www.npmjs.com/package/@kylebrodeur/mcp-mac-setup) 
______________________________________________________________________
问题
当您从GUI(Dock、Spotlight、Finder)启动VS Code时,它会作为一个进程启动 环境是从 launchd --不是从你的交互式shell。这意味着不存在任何PATH修改 ~/.zshrc, ~/.bash_profile,或应用类似文件。
工具如 非易失性存储器 和 fnm 在登录时将自己注入到shell会话中:
# typical ~/.zshrc entry for nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"这将写入活动节点版本的 bin/ 目录(例如。 ~/.nvm/versions/node/v22.19.0/bin)上 PATH当VS Code打开一个常规终端时,它会获取你的rc文件,一切正常。但是当VS代码生成一个 MCP服务器作为子stdio进程 确实如此 不 获取任何shell配置——二进制文件只是 exec()d直接。
结果: pnpm (甚至 node)找不到,并且每个stdio MCP服务器都无法以加密启动 spawn pnpm ENOENT 或 command not found 错误。
为什么这通常是一个难以解决的问题
- 出于安全和可重复性的原因,macOS有意将GUI启动的应用程序环境保持在最低限度。
- VS代码 不获取shell配置文件 生成非终端子进程时(仅集成 *终端* 通过shell登录技巧完成此操作)。
- npm管理的全局工具(如
pnpm dlx)依靠aPATH-常驻二进制文件,因此硬代码没有稳定的“默认”位置。 - 的绝对路径
pnpm每次使用nvm/fnm切换节点版本时,二进制文件都会发生变化(例如。~/.nvm/versions/node/v20.x.x/bin/pnpm→~/.nvm/versions/node/v22.x.x/bin/pnpm).
这是整个社区中一个有据可查的痛点:
- microsoft/vcode#70248 --“终端:shell集成应源于shell配置文件”
- MCP服务器仓库中用户报告的数十个GitHub问题
spawn pnpm ENOENT在macOS上使用nvm - VS代码文档 MCP服务器 请注意,您可能需要确保运行时在PATH上,但不要为版本管理器用户提供具体的修复
垫片方法
因为路径是特定于版本的,并且会随着时间的推移而变化,所以一次性硬编码是不够的。正确的解决方案是 读取当前nvm/fnm状态、解析实际绝对路径并将其直接写入的脚本 mcp.json --然后,每当切换节点版本时,都会重新运行它。
mcp-mac-setup 正是这样做的:
- 检测您的节点版本管理器(fnm、nvm或
PNPM_HOME回退)。 - 解析活动的绝对路径
pnpm二进制及其bin/目录。 - 重写每一个
stdio服务器入口~/.../Code/User/mcp.json以便:
- command 是通往的绝对路径 pnpm - env.PATH 是一个硬编码字符串,包含活动 bin/ 目录优先
______________________________________________________________________
快速开始
pnpm dlx @kylebrodeur/mcp-mac-setup然后重新加载VS代码:
Cmd+Shift+P → Developer: Reload Window用户级别的所有stdio MCP服务器 mcp.json 更新。HTTP/SSE服务器保持不变。
______________________________________________________________________
安装与使用
一次性(无需安装)
# fix all stdio servers
pnpm dlx @kylebrodeur/mcp-mac-setup
# fix a single server
pnpm dlx @kylebrodeur/mcp-mac-setup --server playwright全局安装
pnpm add -g @kylebrodeur/mcp-mac-setup
# then run any time you switch Node versions
mcp-mac-setup来源
git clone https://github.com/kylebrodeur/mcp-mac-setup.git
cd mcp-mac-setup
node scripts/resolve-pnpm.js______________________________________________________________________
CLI选项
| 标志 | 描述 |
|---|---|
| _(无)_ | 更新用户级别的所有stdio服务器 mcp.json |
--server | 仅更新单个命名服务器 |
| `--target | |
| ` | 写入自定义文件而不是默认文件 mcp.json |
| `--workspace | |
| ` | 还可以从工作区读取服务器定义 mcp.json |
--install-task | 安装VS代码 tasks.json 进入当前项目 |
| `--task-dir | |
| ` | 结合 --install-task:针对特定对象 .vscode/ 目录 |
______________________________________________________________________
VS代码任务
您可以将VS Code任务安装到任何项目中,而不是手动运行CLI:
# adds a task to your current project's .vscode/tasks.json
pnpm dlx @kylebrodeur/mcp-mac-setup --install-task然后用 Cmd+Shift+P → Tasks: Run Task → Fix MCP pnpm path.
该任务也将提供给直接克隆此仓库的项目(请参阅 .vscode/tasks.json).
______________________________________________________________________
何时重新运行
重新运行 mcp-mac-setup 之后:
- 使用升级您的Node版本
nvm use/fnm use - 重新安装pnpm(例如通过
corepack enable pnpm) - 任何移动
pnpm二进制到新的绝对路径
______________________________________________________________________
运作原理
~/.nvm/versions/node/v22.19.0/bin/
├── node ← resolved by reading ~/.nvm/alias/default
└── pnpm ← written into mcp.json as the absolute command
┌─────────────────────────────────────┐
│ ~/.../Code/User/mcp.json (before) │
│ "command": "pnpm" │ ← not found in GUI PATH
└─────────────────────────────────────┘
│ mcp-mac-setup
▼
┌──────────────────────────────────────────────────────────┐
│ ~/.../Code/User/mcp.json (after) │
│ "command": "/Users/you/.nvm/versions/node/v22.19.0/ │
│ bin/pnpm" │
│ "env": { "PATH": "/Users/you/.nvm/…/bin:~/Library/pnpm:│
│ /usr/local/bin:/usr/bin:/bin" } │
└──────────────────────────────────────────────────────────┘检测优先级:
- fnm --检查
~/.local/share/fnm/aliases/default/bin/ - 非易失性存储器 --阅读
~/.nvm/alias/default获取活动版本 - PNPM_主页 /
which pnpm--最后手段回退(使用时发出警告)
______________________________________________________________________
需求
- macOS(支持Linux,但PATH问题在那里不太常见)
- 节点≥18
- nvm或fnm管理您的节点安装(回退适用于其他设置)
- 支持MCP服务器的VS代码( 或 副驾驶聊天)
______________________________________________________________________
贡献
欢迎在 .
______________________________________________________________________
