1. Antigravity 里 MCP Server 的 Base URL 到底能不能改
Antigravity 是 Google 推出的 AI 编辑器,它内置的 MCP Store Ecosystem 把几十个 MCP Server 做成了「开箱即用」的形态。你打开侧边栏的 MCP Store,能看到 BigQuery、Spanner、Cloud SQL、Supabase、GitHub、Linear、Notion、Stripe 这些熟悉的图标,点一下就能装进当前工作区。这套生态的好处是省去了手写mcp.json的麻烦,坏处是——默认的接入链路是绑死在官方通道上的,你想把请求打到自己的统一 Key/API 通道,得手动改配置。
我最近在折腾一个场景:把 Antigravity 里所有 MCP Server 的 Base URL 统一指向 TaoToken 的 API 通道,用同一个 Key 管理模型调用和 MCP 工具调用。这样做的好处很直接——不用在 Antigravity、Cline、Claude Code 之间来回切换 Key,也不用为每个 MCP Server 单独配一套凭证。TaoToken 的 API 地址是https://taotoken.net/api,兼容 OpenAI 风格的/v1/chat/completions和 Anthropic 风格的/v1/messages,MCP Server 里凡是走 HTTP 的模型调用都能接进来。
这篇文章适合两类人:一是已经在用 Antigravity 但被多 Key 管理搞烦的开发者;二是想搞清楚 MCP Server 配置项里baseUrl、apiKey、model这三个字段到底怎么填的人。我会从 MCP Store 的配置结构讲起,给出可复制的 settings 片段,然后跑一次连通性验证,最后把常见的 401、local proxy failed、reading choices 报错逐个拆开。
先说结论:Antigravity 的 MCP Server 配置是分层的,Store 里装的 Server 只是「模板」,真正生效的是工作区根目录下的.antigravity/mcp.json或者用户级 settings。你要改 Base URL,改的是后者,不是 Store 里的图标。这一点很多人第一次会搞混,以为在 Store 界面点「Configure」就能改地址,其实那里只能填凭证。
2. TaoToken 前置准备:Key、Base URL 与模型 ID 三件套
在动 Antigravity 的配置之前,先把 TaoToken 这边的三件套准备好。所谓三件套,就是 Base URL、API Key、Model ID,任何 MCP Server 接入都绕不开这三个字段。
Base URL 固定填https://taotoken.net/api。注意这里不要带 UTM 参数,也不要带尾部斜杠,MCP Server 在拼接路径时会自己补/v1/...。我试过带斜杠的写法,结果请求变成了//v1/chat/completions,部分 Server 会直接返回 404。
API Key 去 TaoToken 控制台的 API Keys 页面生成,地址是https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite。生成后复制那串sk-开头的字符串,先存到本地环境变量里,别直接写进配置文件提交到 Git。
Model ID 取决于你用的 MCP Server 走哪种协议。如果是走 OpenAI 兼容协议的 Server(比如 Sequential Thinking、Perplexity Ask 这类),Model ID 填gpt-4o或者claude-3-5-sonnet都行,TaoToken 会做路由。如果是走 Anthropic 原生协议的 Server(比如 Claude Code 相关的),Model ID 填claude-sonnet-4-20250514这种完整名称。
| 字段 | 填写值 | 注意事项 |
|---|---|---|
| Base URL | https://taotoken.net/api | 不带 UTM、不带尾斜杠 |
| API Key | sk-... | 从控制台生成,存环境变量 |
| Model ID | gpt-4o/claude-sonnet-4-20250514 | 按 Server 协议选 |
如果你还没决定用哪个模型,可以先到模型对话页面测一下,地址是https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite。在那边发一条消息,确认 Key 能正常返回,再回来配 Antigravity。这一步能帮你排除掉「Key 本身有问题」这个变量,后面排障会轻松很多。
对于长期在 Antigravity 里跑 Agent 任务的场景,建议直接上 Coding Plan,地址是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite。Coding Plan 的额度是按编码任务算的,比按 token 计费更适合 MCP Server 这种高频调用的场景。
3. 可复制配置:Antigravity settings 与 mcp.json 片段
Antigravity 的 MCP 配置有两个位置:用户级 settings 和工作区级.antigravity/mcp.json。用户级管全局默认,工作区级管当前项目。我建议把 Base URL 改在工作区级,这样不同项目可以用不同的通道。
先看用户级 settings 的片段。打开 Antigravity 的settings.json(快捷键Cmd/Ctrl + ,然后切到 JSON 视图),加入下面这段:
{ "antigravity.mcp.defaults": { "baseUrl": "https://taotoken.net/api", "apiKey": "${env:TAOTOKEN_API_KEY}", "model": "gpt-4o", "timeout": 60000 }, "antigravity.mcp.servers": { "sequential-thinking": { "enabled": true, "baseUrl": "https://taotoken.net/api", "model": "gpt-4o" }, "perplexity-ask": { "enabled": true, "baseUrl": "https://taotoken.net/api", "model": "gpt-4o" } } }这里${env:TAOTOKEN_API_KEY}是引用环境变量,Antigravity 启动时会去读系统环境里的TAOTOKEN_API_KEY。这样配置文件里就不会出现明文 Key,提交到仓库也安全。
再看工作区级的.antigravity/mcp.json。这个文件放在项目根目录,Antigravity 打开项目时会自动加载:
{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${env:GITHUB_TOKEN}", "OPENAI_BASE_URL": "https://taotoken.net/api", "OPENAI_API_KEY": "${env:TAOTOKEN_API_KEY}", "OPENAI_MODEL": "gpt-4o" } }, "supabase": { "command": "npx", "args": ["-y", "@supabase/mcp-server-supabase"], "env": { "SUPABASE_URL": "${env:SUPABASE_URL}", "SUPABASE_KEY": "${env:SUPABASE_KEY}", "OPENAI_BASE_URL": "https://taotoken.net/api", "OPENAI_API_KEY": "${env:TAOTOKEN_API_KEY}" } } } }注意OPENAI_BASE_URL这个环境变量名。不同的 MCP Server 对 Base URL 的环境变量命名不一样,有的叫OPENAI_BASE_URL,有的叫API_BASE_URL,还有的叫LLM_BASE_URL。你得去看对应 Server 的 README。我踩过的坑是:GitHub Server 认OPENAI_BASE_URL,但 Supabase Server 早期版本认API_BASE_URL,填错了它不会报错,而是默默走默认地址。
如果你用的是 Cline MCP 或者 CC Switch 这类工具,配置结构类似,但字段名可能是baseURL而不是baseUrl。大小写敏感,别写错。
对于 Codex 用户,auth.json的配置是这样的:
{ "openai": { "baseURL": "https://taotoken.net/api", "apiKey": "sk-..." } }这个文件通常放在~/.codex/auth.json。改完之后 Codex 的所有请求都会走 TaoToken 通道。
4. 验证请求:一次连通性检查与成功结果
配置写完,别急着在 Antigravity 里跑复杂任务,先做一次最小连通性验证。我习惯用 curl 直接打 TaoToken 的接口,确认 Key 和 Base URL 没问题,再去 Antigravity 里测 MCP Server。
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 10 }'如果返回类似下面的结构,说明通道是通的:
{ "id": "chatcmpl-xxx", "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "pong" }, "finish_reason": "stop" } ] }看到choices数组里有内容,就说明 Base URL、Key、Model ID 三件套都对。接下来回到 Antigravity,打开 MCP Store,找到你配置过的 Server(比如 Sequential Thinking),点「Test Connection」。Antigravity 会发一个初始化请求,如果配置正确,状态会变成绿色的「Connected」。
我实测下来,Sequential Thinking 这个 Server 最容易验证,因为它不依赖外部服务,只做本地推理。你可以在 Antigravity 的对话里输入「用 sequential thinking 分析一下快速排序的时间复杂度」,如果 Server 正常,它会返回分步骤的推理过程。如果返回的是「MCP server not responding」,那就是配置没生效,去检查.antigravity/mcp.json的路径对不对。
还有一个验证技巧:在 Antigravity 的 Output 面板里切到「MCP」频道,能看到每个 Server 的启动日志和请求日志。日志里会打印实际使用的 Base URL,你可以对照一下是不是https://taotoken.net/api。如果打印的是默认地址,说明你的配置被覆盖了,检查是不是用户级 settings 和工作区级 mcp.json 冲突了。
5. 常见报错排查:401、local proxy failed、reading choices
配 MCP Server 的过程中,报错基本集中在三类。我把每个报错的真实日志和排查路径列出来。
401 Unauthorized。日志长这样:
Error: Request failed with status code 401 {"error":{"message":"Invalid API key","type":"invalid_request_error"}}这个最直接,Key 不对。排查顺序:先确认环境变量TAOTOKEN_API_KEY在当前 shell 里能echo出来;再确认 Antigravity 是从哪个 shell 启动的,GUI 应用有时候读不到.zshrc里的环境变量。解决办法是在settings.json里直接写 Key,或者用launchctl setenv在 macOS 上设置全局环境变量。另外注意 Key 有没有多余空格,复制的时候容易带上换行。
local proxy failed。日志长这样:
Error: local proxy failed to connect to upstream dial tcp 127.0.0.1:8080: connect: connection refused这个报错说明 MCP Server 在尝试走本地代理,但代理没起来。常见原因是你的系统里设了HTTP_PROXY或HTTPS_PROXY环境变量,MCP Server 启动时继承了这些变量。解决办法是在.antigravity/mcp.json的env里显式覆盖:
"env": { "HTTP_PROXY": "", "HTTPS_PROXY": "", "NO_PROXY": "taotoken.net" }把代理清空,并且把taotoken.net加入NO_PROXY,这样请求就不会走本地代理了。
reading choices。日志长这样:
TypeError: Cannot read properties of undefined (reading 'choices')这个报错说明请求发出去了,但返回的结构里没有choices字段。原因通常是 Base URL 拼错了,比如写成了https://taotoken.net/api/v1,然后 Server 又补了一个/v1,变成/api/v1/v1/chat/completions,返回 404 的 HTML 页面,解析 JSON 时就找不到choices。解决办法是把 Base URL 改成https://taotoken.net/api,不要带/v1。
还有一个变种是返回了{"error": "model not found"},这也是choices缺失的原因。检查 Model ID 有没有拼错,比如gpt-4o写成了gpt4o。
OAuth 相关报错。如果你配的是 GitHub、Notion 这类需要 OAuth 的 Server,可能会遇到:
Error: OAuth callback failed: redirect_uri mismatch这个跟 Base URL 无关,是 OAuth 应用的回调地址没配。去对应平台的开发者设置里,把回调地址改成 Antigravity 提示的那个。改完重启 Antigravity 再试。
排查的时候有个通用技巧:在 Antigravity 的 Output 面板里把日志级别调到debug,能看到完整的请求 URL 和响应体。大部分问题看 URL 就能定位。
6. 把 MCP Server 调用统一到 TaoToken 通道
Antigravity 的 MCP Store Ecosystem 覆盖了数据库、DevOps、项目管理、支付、AI 增强这几大类,每个 Server 背后都是一次模型调用。把这些调用的 Base URL 统一指向 TaoToken,最直接的好处是 Key 管理从「N 个 Server N 个 Key」变成「一个 Key 管全部」。
具体操作上,你只需要维护一份.antigravity/mcp.json,把每个 Server 的OPENAI_BASE_URL或对应字段指向https://taotoken.net/api,Key 用环境变量注入。新增 Server 的时候,复制已有配置改改command和args就行,不用再去每个平台申请凭证。
如果你在 Antigravity 里跑的是长期编码任务,比如让 Agent 自动改代码、跑测试、提交 PR,建议把模型切到 Coding Plan 支持的型号。Coding Plan 的接入地址是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite,开通后在 Antigravity 的 settings 里把model字段改成对应的 Model ID 即可。
接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各语言 SDK 的调用示例和错误码对照表。遇到本文没覆盖的报错,先去文档里搜错误码,大部分都有解释。
最后留一个实用技巧:Antigravity 的 MCP 配置支持热重载。改完.antigravity/mcp.json不用重启编辑器,在命令面板里执行MCP: Reload Servers就能生效。这样调配置的时候能省不少时间。