Claude Code for VS Code 连接 PostgreSQL MCP 踩坑记录

背景

在 VS Code 中使用 Claude Code 扩展(版本 2.1.195)时,我希望通过 MCP(Model Context Protocol)连接本地的 PostgreSQL 数据库,让 Claude 能直接查询数据库内容。但在终端执行 claude mcp list 能正常显示的 MCP 服务,到了 VS Code 扩展里就是找不到。

问题分析

最终排查出两个核心问题:

问题一:VS Code 扩展读取配置的路径不同

终端 CLI 读取 ~/.claude.json 中根级别的 mcpServers,但旧版 Claude Code for VS Code 扩展不读这个位置。它只认项目下 .vscode/settings.json 里的 claude.mcpServers 字段。

问题二:Node.js 版本过旧

我的系统默认 Node 是 v14.17.6,这个版本太老了——npx 无法解析 postgresql:// 协议,@modelcontextprotocol/server-postgres MCP 服务根本启动不起来。即使安装了 v20、v22,因为 PATH 环境变量里 v14 排在最前面,npx 还是会用旧版本。

解决方案

1. 创建项目级 VS Code 配置

在项目根目录创建 .vscode/settings.json,写入 MCP 配置:

{
  "claude.mcpServers": {
    "postgres": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://用户名:密码@host:端口/数据库名"
      ],
      "env": {
        "PATH": "/Users/xxx/.nvm/versions/node/v20.11.1/bin:/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}

2. 通过 env.PATH 指定 Node 版本

利用 MCP 配置中的 env 字段,显式设置 PATH 环境变量,让 v20 版本的 Node 优先于系统默认的 v14 被找到。这样无论系统默认 PATH 如何,MCP 服务启动时都会使用正确的 Node 版本。

3. 同步更新 ~/.claude.json

为了让终端 CLI 和 VS Code 扩展都能使用,在 ~/.claude.jsonprojects 路径下也配了一份一样的配置。

最终效果

配置完成后,在 Claude Code 扩展中输入查询命令:

用 postgres MCP 列出数据库 vop 中的所有表

Claude 成功调用 MCP,并且返回了正确的表数量,SQL 查询结果直接呈现。

总结

问题 根因 解决
MCP 在 VS Code 扩展中找不到 旧版扩展只读 .vscode/settings.json 在项目下创建配置文件
MCP 服务启动失败 系统默认 Node v14 太旧 通过 env.PATH 指定高版本 Node

如果你的 Claude Code for VS Code 能连上终端 claude mcp list 里的服务,但扩展却找不到,优先检查这两点。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐