PostgreSQL MCP 写进 Cursor 的 mcpServers,模型 Base URL 用 TaoToken 的 API PostgreSQL MCP 写进 Cursor 的 mcpServers模型 Base URL 用 TaoToken 的 API把 PostgreSQL MCP 写进 Cursor 的 mcpServers 后模型通道要单独配。TaoToken 官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你已经按原文在 Cursor 里填了uvx postgres-mcp --access-moderestricted和DATABASE_URI但问表结构时模型不调用工具、一直转圈或者直接报 401那问题通常不在 PostgreSQL MCP而在 Cursor 使用的模型 Key 与 Base URL。Cursor 里消耗 Token 的是负责理解 schema、生成查询的模型不是 PostgreSQL MCP 本身。TaoToken 只负责模型 Key 和 Base URL不替 MCP 执行 SQL也不接管DATABASE_URI。这篇按接入配置视角把两套配置拆开写清楚一套让 Cursor 能调用模型一套让 postgres-mcp-pro 用 restricted 模式只读查库。1. 原问题与场景Cursor 的 mcpServers 配了 postgres-mcp模型却报 401很多人在 Cursor 里看到 MCP 配置项第一反应是把数据库连接串填进去就完事。但 Cursor 接入 PostgreSQL MCP 实际上有两层第一层是 MCP Server 配置。它告诉 Cursor用哪个命令启动 MCP 服务、传什么参数、连哪个 PostgreSQL。对应到本文就是mcpServers里的uvx postgres-mcp --access-moderestricted和DATABASE_URI。第二层是模型 Provider 配置。它告诉 Cursor聊天、Composer、Agent 调用哪个模型 APIKey 是什么Base URL 是什么。这一层才决定 Token 消耗和模型能不能正常响应。这两层混在一起就会出现典型症状Cursor 的 MCP 面板里能看到postgres-mcp-pro但聊天时模型完全不调用list_schemas、list_objects。模型回复“我无法访问数据库”但 MCP 服务其实已经启动。直接报401 invalid api key或model not found。换了模型后之前能读 schema 的对话突然不能用了。DATABASE_URI明明填了只读账号模型还是说没有权限。核心原因是PostgreSQL MCP 负责把数据库能力暴露成工具模型负责决定要不要调用工具、怎么写查询。如果模型通道没通MCP 工具再正确也没有用。所以本文的场景不是重新讲 PostgreSQL MCP 是什么而是把 Cursor 的mcpServers配置保留把模型 Base URL 换成 TaoToken 的 API让模型先能正常工作再让 postgres-mcp-pro 按 restricted 模式查库。DATABASE_URI继续用只读账号连接 PostgreSQL这一点不要变。TaoToken 的 Key 不要填到DATABASE_URI里DATABASE_URI也不是模型 Base URL。两套配置各管各的。2. TaoToken 前置模型 Key、Base URL 与 API Keys在改 Cursor 配置前先把模型通道的前置条件准备好。打开 TaoToken 官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content进入控制台后创建或复制你的 API Key。本文统一写成YOUR_API_KEY你实际使用时替换成自己的 Key。Key 的入口在 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keysBase URL 使用https://taotoken.net/api注意三个不要不要加/v1。不要填官网首页。不要把DATABASE_URI和模型 Base URL 写在一起。模型 ID 需要按你控制台里可用的模型列表填写。本文写成MODEL_ID你在 Cursor 的模型设置里添加对应模型即可。如果你不确定模型通道是否正常可以先到模型对话页面发一条简单消息验证https://taotoken.net/console/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat再次强调TaoToken 只出现在模型 Key、模型 Base URL 和 CTA 里。它不替 PostgreSQL MCP 执行 SQL也不接管DATABASE_URI。PostgreSQL 仍然由postgres-mcp-pro通过你配置的只读账号连接。3. 可复制配置mcp.json 里的 DATABASE_URI 与模型 Base URL这一节直接给可复制配置。先配 MCP再配模型顺序不要混。3.1 Cursor 的 mcpServers 配置Cursor 的 MCP 配置文件通常在用户目录或项目目录下全局~/.cursor/mcp.json项目级.cursor/mcp.jsonWindows%USERPROFILE%\.cursor\mcp.json写入以下内容把readonly_user、password、127.0.0.1、5432、your_database换成你的真实只读连接信息{ mcpServers: { postgres-mcp-pro: { command: uvx, args: [ postgres-mcp, --access-moderestricted ], env: { DATABASE_URI: postgresql://readonly_user:password127.0.0.1:5432/your_database } } } }这里的关键点command是uvx需要本机已安装 uv。args里postgres-mcp是包名--access-moderestricted表示只读受限模式。env.DATABASE_URI是 PostgreSQL 连接串不是模型 Key。生产环境建议使用只读账号不要用超级用户。如果 PostgreSQL 在远程把127.0.0.1换成实际主机并确认 pg_hba 和端口放行。这个文件只负责让 Cursor 启动 postgres-mcp-pro。它不负责模型 API Key。3.2 Cursor 模型 Base URL 配置打开 Cursor Settings进入 Models 设置。不同版本入口略有差异核心是找到 OpenAI API Key 和 Override OpenAI Base URL 两项。填写方式OpenAI API Key填YOUR_API_KEYOverride OpenAI Base URL填https://taotoken.net/api不要加/v1不要填https://taotoken.net不要填官网首页链接然后在模型列表里 Add model填入你在 TaoToken 控制台看到的MODEL_ID。如果 Cursor 要求选择模型类型按你的模型能力选择对话或通用模型。保存后重启 Cursor或者重新加载窗口。这里最容易错的是把 TaoToken 的 Key 填进DATABASE_URI或者把 PostgreSQL 密码填到模型 API Key。前者会让 postgres-mcp 连不上数据库后者会让模型通道报 401。3.3 两套配置的关系可以用一句话检查mcp.json里的DATABASE_URI只给 postgres-mcp-pro 用连 PostgreSQL。Cursor Models 里的 API Key 和 Base URL只给 Cursor 的模型调用用连 TaoToken API。TaoToken 不执行 SQL不接管数据库连接。模型只是通过 MCP 工具拿到 schema 和查询结果。4. 验证请求在 Cursor 里让 postgres-mcp 读 schema 并生成查询配置完成后不要直接问复杂业务问题。先做两层验证。4.1 验证模型通道在 Cursor Chat 里发一条简单消息“请回复当前模型通道已连通并说明你能使用的工具列表。”如果模型正常返回说明 API Key 和 Base URL 基本可用。如果报 401、404、model not found先回到 Models 设置检查API Key 是否是YOUR_API_KEY的实际值。Base URL 是否是https://taotoken.net/api。模型 ID 是否在 TaoToken 控制台可用。是否多写了/v1。你也可以直接到模型对话页面验证https://taotoken.net/console/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat4.2 验证 MCP 工具调用模型通道正常后在 Cursor Chat 里发“请先调用 postgres-mcp-pro 的 list_schemas再调用 list_objects 查看 public schema最后用 get_object_details 读取 orders 表的列、类型和索引。不要猜测字段。”预期成功结果Cursor 显示工具调用过程出现list_schemas、list_objects、get_object_details。返回真实 schema例如 public 下的表名、列名、数据类型、主键、索引。模型基于真实元数据回答而不是编造字段。然后再发一条只读查询请求“基于刚才的真实表结构给我一条只读 SQL统计 orders 表最近 7 天按状态分组的订单量。只生成查询不执行写操作。”在 restricted 模式下execute_sql应该只允许只读事务。如果模型尝试执行INSERT、UPDATE、DELETE、DROP应该被拒绝或提示只读限制。这是预期行为不是配置失败。如果工具调用没有出现优先检查mcp.json是否被 Cursor 加载。可以在 Cursor 的 MCP 面板看服务状态或者重启 Cursor 后再试。如果工具出现但执行报连接错误检查DATABASE_URI、只读账号权限、PostgreSQL 端口和 pg_hba。5. 本篇常见错排查Base URL、DATABASE_URI、uvx 与模型名这一节按排查顺序列出高频问题。5.1 Base URL 写错错误写法https://taotoken.nethttps://taotoken.net/https://taotoken.net/api/v1带 UTM 参数的官网首页正确写法https://taotoken.net/api注意 API 地址不要加 UTM不要加/v1。如果你在 Cursor 里填了官网首页模型请求会打到网页而不是 API。5.2 Key 填错位置错误写法DATABASE_URI里填YOUR_API_KEY模型 API Key 里填 PostgreSQL 密码把 TaoToken Key 写到mcp.json的env里正确做法DATABASE_URIPostgreSQL 只读连接串。Cursor Models 的 API KeyTaoToken 的YOUR_API_KEY。TaoToken Key 不需要出现在mcp.json。5.3 mcp.json 语法错误mcp.json是 JSON不允许注释、尾逗号、单引号。常见错误args数组最后多逗号。DATABASE_URI后面多逗号。用了中文引号。把两个mcpServers写重复。改完保存后重启 Cursor 或重新加载 MCP 服务。5.4 uvx 或 postgres-mcp 不可用如果 Cursor 提示启动失败先在终端验证uvx --version uvx postgres-mcp --help如果uvx不存在需要先安装 uv。如果postgres-mcp拉取失败检查网络或换时间重试。MCP 服务启动失败时Cursor 聊天里不会出现 PostgreSQL 工具。5.5 restricted 模式下写操作失败--access-moderestricted是只读受限模式。执行INSERT、UPDATE、DELETE、ALTER会失败这是安全设计。生产环境建议保持 restricted。需要写操作时不要直接改生产库配置应该在开发库单独配置并明确风险。5.6 只读账号权限不足只读账号至少需要连接数据库权限。目标 schema 的USAGE。目标表的SELECT。如果list_objects能看到表但get_object_details或查询报权限不足检查授权是否覆盖当前 schema。未来新建表也需要默认权限否则新表对只读账号不可见。5.7 模型 ID 或模型列表问题如果模型通道报model not found检查 Cursor Add model 里填的MODEL_ID是否和控制台一致。不要自己拼模型名不要写多余前缀。模型 ID 大小写和分隔符要准确。5.8 Cursor 未重启或 MCP 未加载改完mcp.json和 Models 设置后最好重启 Cursor。部分版本需要重新打开窗口才会重新加载 MCP。如果 MCP 面板里没有postgres-mcp-pro先解决加载问题再排查模型。5.9 网络与数据库连接混在一起模型 API 走的是 Cursor 到 TaoToken 的网络。PostgreSQL 走的是 postgres-mcp 到数据库的网络。两者不要混Cursor 访问模型 API 失败检查 API Key、Base URL、网络代理。postgres-mcp 访问数据库失败检查DATABASE_URI、端口、pg_hba、SSL、防火墙。不要因为模型能聊天就认为DATABASE_URI一定正确。也不要因为psql能连就认为 Cursor 模型通道已经配好。6. 语义一致 CTA接入文档、API Keys 与 Coding Plan这篇的核心是PostgreSQL MCP 继续写在 Cursor 的mcpServers里用uvx postgres-mcp --access-moderestricted和只读DATABASE_URI查库模型通道换成 TaoToken 的 API Key 和 Base URL让负责理解 schema、生成查询的模型先跑通。TaoToken 不执行 SQL不接管DATABASE_URI只解决模型 Key 与 Base URL。如果你还没创建模型 Key先去 API Keys 页面复制https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys如果你卡在 Cursor 的 Base URL、模型 ID、OpenAI 兼容配置看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc如果你只是想先确认模型通道是否正常去模型对话发一条消息https://taotoken.net/console/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat如果你准备长期在 Cursor 里做编码、Agent、数据库辅助查询可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan配置顺序再复述一遍先在 Cursor Models 里填YOUR_API_KEY和https://taotoken.net/api添加MODEL_ID再在mcp.json里保留postgres-mcp-pro的 restricted 配置和只读DATABASE_URI最后在 Cursor Chat 里先用list_schemas、list_objects、get_object_details验证 schema 读取再让模型生成只读查询。模型通道和 PostgreSQL MCP 各司其职Cursor 才能既读懂表结构又按 restricted 模式安全查库。