
当 Claude Desktop 接上 PostgreSQL MCP Server模型通道该走哪条路在 MCPModel Context Protocol的实践里Claude Desktop 是最常被拿来当 MCP Client 的宿主程序。它通过claude_desktop_config.json挂载各种 MCP Server让 LLM 能够读取本地文件、查询数据库、调用外部工具。很多教程演示到配置 PostgreSQL MCP Server 查 shopdb这一步就结束了读者照着做完锤子图标也出来了工具列表也能看到但真正在对话框里提问时却卡在了模型通道上——MCP Server 只负责暴露 resources、tools、prompts 和 tools/call它不负责跟 LLM 对话真正消耗 Token 的那条模型通道Key 和 Base URL 从哪来原文往往没有交代。这篇就补上这一环。TaoToken官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 提供兼容模型通道的 Key 和 Base URLClaude Desktop 侧只需要把模型通道指向它MCP Server 的配置保持本地postgresql://不变。下面按先讲清问题、再给可复制配置、最后验证和排错的顺序展开。一、原问题与场景MCP Server 通了模型通道没通先把场景还原清楚。你本地用 Docker 起了一个 PostgreSQL建了shopdb里面有两张表users和orders。然后在claude_desktop_config.json里写入了 PostgreSQL MCP Server 的启动配置用的是modelcontextprotocol/server-postgres连接串是postgresql://postgres:postgres127.0.0.1/shopdb。重启 Claude Desktop 后输入框右下角出现了锤子图标点开能看到 MCP Server 暴露的工具信息。到这里MCP 的工具侧是通的。但 MCP 协议本身只定义了 Client 和 Server 之间的通信Client 从 Server 拉取工具列表把用户查询连同工具描述通过 function calling 发给 LLMLLM 决定是否调用工具Client 再通过 Server 执行tools/call把结果回传给 LLM 生成自然语言响应。注意中间这一步——发给 LLM——走的是模型通道不是 MCP 通道。问题就出在这里。Claude Desktop 作为 MCP Host它自己需要一条能跟 LLM 通信的模型通道。如果你用的是官方账号这条通道由官方托管但如果你想把模型通道换成兼容接口比如为了统一管理 Key、控制成本、或者接入其他模型就需要显式配置 Base URL 和 API Key。原文没有交代这部分读者就会遇到锤子图标有了但提问没反应或者提示模型不可用的情况。TaoToken 在这里的角色很明确它只提供 Key 和 Base URL不替 MCP Server 查 PostgreSQL也不替代 Claude Desktop 本身。数据库查询仍然由本地 MCP Server 完成TaoToken 负责的是 Claude Desktop 跟 LLM 之间那条对话通道。二、TaoToken 前置拿 Key、认 Base URL在改配置之前先把模型通道的凭证准备好。第一步打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并创建一个 API Key。这个 Key 就是后面填进 Claude Desktop 配置里的凭证记作YOUR_API_KEY。第二步确认 Base URL。TaoToken 的 API 地址是 https://taotoken.net/api 注意两点不要带/v1后缀也不要加 UTM 参数。很多兼容接口的 Base URL 习惯写成https://xxx/v1但这里填的是根路径Claude Desktop 或相关客户端会自己拼接后续路径。填错会导致 404 或路径重复。第三步想清楚你要接的是哪条通道。如果你只是想让 Claude Desktop 的对话走 TaoToken那用 API Key 就够了如果你后面还要做长期编码、Agent 类任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。本篇聚焦的是 Claude Desktop PostgreSQL MCP Server 这个场景所以先用 API Key 把通道打通。需要强调的是TaoToken 不碰你的 PostgreSQL。shopdb里的数据、表结构、查询逻辑全部由本地 MCP Server 处理。TaoToken 只负责 Claude Desktop 跟模型之间的那次对话请求。三、可复制配置claude_desktop_config.json 与模型通道Claude Desktop 的配置文件位置因系统而异macOS 通常在~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 在%APPDATA%\Claude\claude_desktop_config.json。如果你之前已经按原文配好了 PostgreSQL MCP Server文件里应该已经有mcpServers段。现在要做的是两件事保留 MCP Server 配置补上模型通道配置。先看 MCP Server 部分这部分照原文写不要动{ mcpServers: { postgres: { command: npx, args: [ -y, modelcontextprotocol/server-postgres, postgresql://postgres:postgres127.0.0.1/shopdb ] } } }这段的含义是Claude Desktop 启动时用npx拉起modelcontextprotocol/server-postgres并把本地shopdb的连接串传给它。MCP Server 起来后会向 Client 暴露 resources、tools、prompts。注意这里的连接串是本地地址127.0.0.1跟 TaoToken 没有任何关系。接下来是模型通道部分。Claude Desktop 的模型通道配置方式取决于你使用的版本和接入方式。对于兼容接口通常需要在配置中指定 Base URL 和 API Key。以环境变量或配置字段的形式把模型通道指向 TaoToken{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: YOUR_API_KEY } }如果你用的是 Claude Code 这类 CLI 工具配置方式会落在settings.json里字段同样是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY。CLI 场景下也可以用命令行直接指定npm i -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MODEL_ID这里的-u就是 Base URL-m是模型 ID。注意-u后面跟的是https://taotoken.net/api不带/v1也不带 UTM。把 MCP Server 段和模型通道段合并到同一个claude_desktop_config.json里保存后重启 Claude Desktop。重启是必须的因为 Claude Desktop 只在启动时读取配置文件。四、验证请求从锤子图标到 tools/call重启之后先确认 MCP Server 是否正常挂载。看输入框右下角的锤子图标点开应该能看到 PostgreSQL MCP Server 提供的工具信息。如果锤子图标没出现说明 MCP Server 没起来先排查npx是否能正常执行、连接串是否正确、PostgreSQL 是否在运行。锤子图标正常后在对话框里问一个能触发tools/call的问题比如数据库中有哪些表。Claude 会判断出需要调用 MCP Server 来查询 PostgreSQL此时会弹出授权窗口点击 Allow。如果模型通道配置正确Claude 会返回查询结果比如列出users和orders两张表。再增加一点难度问查询金额最高的订单信息。这个问题需要先查orders表中金额最高的一条记录再根据user_id外键去查users表。你会看到 Claude 先发送请求确认两张表的字段结构然后做 join 查询。点击 View Result from query from postgres可以看到 Claude Desktop 向 MCP Server 发送的请求和得到的响应说明结果确实来自 PostgreSQL。这一步验证了两个通道都通了MCP 通道完成了tools/call模型通道完成了对话请求。如果只通了 MCP 通道而模型通道没通你会看到工具列表但提问无响应如果只通了模型通道而 MCP 没通锤子图标不会出现。五、本篇常见错排查错误一Base URL 带了/v1。这是最常见的。TaoToken 的 Base URL 是https://taotoken.net/api不要写成https://taotoken.net/api/v1。带了/v1会导致路径重复请求返回 404。同样也不要加 UTM 参数Base URL 是给程序用的不是给浏览器用的。错误二Key 没填或填错。YOUR_API_KEY要替换成你在 TaoToken 创建的真实 Key。如果 Key 无效模型通道会返回鉴权错误表现为提问后提示模型不可用或直接报错。可以到 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 重新确认。错误三MCP Server 连接串写错。postgresql://postgres:postgres127.0.0.1/shopdb里的用户名、密码、端口、数据库名要跟你 Docker 启动时的一致。如果 PostgreSQL 没起来或者端口不是 5432MCP Server 会连不上锤子图标可能不出现或者工具调用时报连接错误。错误四改了配置没重启。Claude Desktop 只在启动时读配置。改完claude_desktop_config.json必须完全退出再重启不是关窗口就行。错误五把 MCP 通道和模型通道混为一谈。MCP Server 只暴露 resources、tools、prompts 和 tools/call它不负责跟 LLM 对话。模型通道的 Key 和 Base URL 是给 Claude Desktop 用的不是给 MCP Server 用的。两者配置在同一个文件里但作用域不同。如果排查过程中需要更细的接入说明可以看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果只是想先验证模型通道本身是否通可以到模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一条消息试试。六、语义一致MCP 管工具TaoToken 管通道回到标题的问题Claude Desktop 用 PostgreSQL MCP Server 查 shopdb模型通道改到 TaoToken 行不行行。但要分清职责边界。MCP 协议解决的是 LLM 跟外部数据源、工具之间的通信标准化问题。Claude Desktop 作为 MCP Host通过 MCP Client 跟 PostgreSQL MCP Server 建立 1:1 连接Server 暴露 resources、tools、promptsClient 在 LLM 决定调用工具时执行tools/call。这条链路里数据库查询由本地 MCP Server 完成数据不出本地。模型通道解决的是 Claude Desktop 跟 LLM 之间的对话问题。这条通道需要 Key 和 Base URL。TaoToken 提供的就是这两个东西在官网创建 Key把 Base URL 填https://taotoken.net/apiMCP Server 配置保持postgresql://postgres:postgres127.0.0.1/shopdb不变。重启 Claude Desktop点锤子图标问数据库中有哪些表能触发tools/call并返回结果就说明两条通道都通了。TaoToken 不替 MCP Server 查 PostgreSQL也不替代 Claude Desktop。它只做一件事让模型通道有个可用的 Key 和 Base URL。如果你后面要做长期编码或 Agent 类任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 如果只是排障和接入API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 和接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 就够了。