Skip to content

MacOS下Supervisor运行指令权限问题

在MacOS下使用Supervisor来运行命令时,会出现与在终端中直接运行结果不一致的问题

比如之前在运行mcp-proxy时,在终端运行非常正常,但改到Supervisor后,mcp-proxy可以正常启动,但配置的mcp server始终无法正常运行

这个问题就是Supervisor运行的command环境与直接在终端运行时不一样导致的

首先获取环境变量

Terminal window
env | grep -E "(NODE|NPM|NVM|PYTHON|PATH)" | sort

例如返回内容的内容如下:

Terminal window
INFOPATH=/opt/homebrew/share/info:
PATH=/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin

然后将返回的PATH复制到Supervisor配置文件的environment里

[program:test]
command='/Users/test/go/bin/mcp-proxy' --config '/Users/test/go/config/mcp-proxy.config.json'
directory=/Users/test/go/bin ; 工作目录
autostart=true ; 随 Supervisor 启动
startsecs=10 ; 延迟启动60秒
autorestart=true ; 自动重启
startretries=3 ; 启动失败重试次数
environment= HOME="/Users/test",
PATH="/opt/homebrew/opt/node@22/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin"
user=test ; 运行用户(可选)

最后更新Supervisor配置

Terminal window
supervisorctl update

这样就可以正确使用终端的环境来运行指令