Trae MCP服务启动失败怎么办?
在使用Trae配置MCP服务的时候,启动失败其实挺常见的——终端卡住没反应、日志一片空白、状态显示stopped,或者直接报出spawn uvx ENOENT。这些现象背后,往往是协议桥接器在依赖解析或transport初始化阶段就断了。别慌,按顺序逐层验证,大概率能定位到根因。

先别急着去改配置,第一步永远是确认命令能不能被系统识别。直接打开终端(CMD、PowerShell或Terminal),敲一句:mysql_mcp_server --version。如果返回“不是内部或外部命令”,说明要么没安装,要么没加到PATH里。如果提示找不到uvx,那就接着往下查。
在Windows上运行where uvx,macOS或Linux用which uvx。如果输出为空,说明uvx.exe(或uvx二进制文件)根本不在系统路径里——这正是spawn uvx ENOENT的根源。这一步千万别跳过,后面所有操作都建立在命令可达的基础上。
修复uvx调用路径(Windows专属)
Windows用户有两个办法。推荐第一个:创建uvx.cmd映射文件。先找到uvx.exe的实际位置,通常藏在C:Users{用户名}.trae-cntoolsuvlatest。在这个目录下新建一个文本文件,重命名为uvx.cmd(记得开启“显示文件扩展名”),然后用记事本打开,写入以下内容:
@echo off start "" "%~dp0uvx.exe" %*
保存后关闭。以后系统执行uvx命令时就会自动调用uvx.exe,绕开Trae配置界面不能编辑的限制。第二个方法更直接:在Trae的MCP服务器配置里,把“Command”字段从uvx改成完整的绝对路径,比如C:Users{用户名}.trae-cntoolsuvlatestuvx.exe,路径必须严格匹配你本地的实际位置。
确认Node.js版本并切换
先检查当前Node版本:node -v。如果低于18.0.0(比如v16.x或v14.x),必须立即切换。用nvm切换到兼容版本:nvm use 18.17.0,或者更高稳定版比如20.15.0。这一步不能省——低版本Node会导致fastmcp模块导入失败,而且错误是静默的,不会报错,但MCP server根本不会初始化transport层。切换后再次运行node -v确认版本已生效。
测试MCP服务能否独立启动
进入MCP服务源码目录(如果是npm全局安装,路径类似%APPDATA%npmnode_modules@modelcontextprotocolserver-mysql),执行:node index.js --port 8080。如果终端立即输出MCP server listening on http://0.0.0.0:8080,说明服务本身没问题。如果报错Cannot find module 'fastmcp',那就补装依赖:npm install fastmcp。
这一步是分水岭:终端能跑通,Trae才能调用。任何在终端里都无法启动的MCP服务,在Trae中必然失败。
更新Trae中MCP Server配置
打开Trae → 设置 → MCP → 已配置的MCP Servers,编辑对应的MySQL_Server条目。把“Server Command”字段更新为可执行路径:
- 如果用npm全局安装:填
mysql_mcp_server - 如果用源码运行:填
node /path/to/servers/src/mysql/index.js - 如果用Python方式:填
python -m mysql_mcp_server
同时确保“Transport”选项与服务实际启动方式一致:本地调试选stdio,远程部署选http。选错会导致握手超时,而且没有明确报错。
启用详细日志并重试启动
最后一步,在终端中执行:trae mcp start --server=mysql --verbose。观察输出里有没有出现Starting MCP server with command: ...以及后续的Initialized transport stdio或Listening on port 8080。如果卡在Connecting with config {...}超过10秒,说明transport层阻塞了,需要检查transport参数或防火墙设置。
这时候不要关闭终端——verbose日志会持续打印底层事件,包括模块加载、env注入、子进程spawn结果,这是定位静默失败的唯一依据。