1. 为什么 Claude Code 的搜索突然不工作了
如果你最近在 Claude Code 里用@tavily搜东西,结果一直转圈或者直接报错,大概率不是你的配置写错了,而是之前那个自建代理地址挂了。我这边实测下来,tavily.astrdark.cyou/mcp这个端点会返回 HTTP 521,也就是源服务器已经连不上了,Cloudflare 那边直接给你一个错误页。Claude Code 通过 MCP(Model Context Protocol)调用搜索工具时,请求发出去拿不到正常响应,表现就是搜索功能整个不可用。
这件事的本质是:Claude Code 本身不带联网搜索能力,它依赖外部 MCP 服务器来提供tavily_search、tavily_extract这类工具。你之前能用,是因为有人搭了一个中转;现在中转没了,就得换一条稳定的通道。Tavily 官方其实直接提供了 MCP 服务,每月 1000 credits 免费额度,不需要绑卡,也不需要自己维护代理。这篇就围绕 Claude Code 和 CcSwitch 两个场景,把 Tavily 搜索重新接上,同时用 TaoToken 的统一 Key 和 API 通道把模型调用和搜索配置串起来,给你一份可以直接复制的settings.json和config.toml骨架。
适合谁看:已经在用 Claude Code 做日常开发、想让 Agent 能实时查资料的人;用 CcSwitch 管理多个 Agent 配置、希望改一处就全局生效的人;以及被旧代理坑过、想换成官方稳定端点的人。下面按步骤来,每一步都有可复制的命令和配置。
2. TaoToken 前置:统一 Key 与 API 通道准备
在动 Tavily 之前,先把 TaoToken 这边的 Key 和通道准备好。TaoToken 的作用是给你一个统一的 API 入口,Claude Code、CcSwitch 里的各个 Agent 都走同一个 Key,不用每个工具单独配一套凭证。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api ,注意 API 地址后面不加 UTM 参数。
你需要做两件事:拿到 TaoToken 的 API Key,以及确认模型通道可用。登录后进控制台,在 API Keys 页面生成一个 Key,格式通常是一串以sk-开头的字符串。这个 Key 后面会写进 Claude Code 的settings.json和 CcSwitch 的config.toml。生成 Key 的入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。
注意:TaoToken 的 Key 和 Tavily 的 Key 是两套东西。TaoToken Key 负责模型调用通道,Tavily Key 负责搜索工具。两者都要配,但不要混在同一个字段里。
如果你还没决定用哪个模型,可以先到模型对话页面试一下通道是否通:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。确认能正常对话后,再往下配搜索。长期做编码和 Agent 任务的,建议直接看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,把额度规划好,避免搜索和模型调用互相抢配额。
3. 可复制配置:settings.json 与 config.toml 骨架
这一节是核心,给你两份可以直接抄的配置。先讲 Claude Code 原生的settings.json,再讲 CcSwitch 的config.toml和它背后的 SQLite 存储。
3.1 Claude Code 的 settings.json 骨架
Claude Code 读取的配置文件通常在~/.claude/settings.json,MCP 服务器定义可以放在~/.claude/mcp.json,也可以合并进 settings。下面这份骨架把 TaoToken 的模型通道和 Tavily 的 MCP 搜索都写进去了:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-YOUR_TAOTOKEN_KEY" }, "mcpServers": { "tavily": { "type": "url", "url": "https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR_TAVILY_KEY" } } }这里有两个关键点。第一,ANTHROPIC_BASE_URL指向 TaoToken 的 API 基址,ANTHROPIC_API_KEY填你刚才生成的 TaoToken Key,这样 Claude Code 的模型请求走统一通道。第二,mcpServers.tavily用的是 Tavily 官方 MCP 端点,API Key 直接作为 URL 参数?tavilyApiKey=传进去,不再需要Authorization请求头。旧配置里那种headers.Authorization: Bearer xxx的写法可以删掉了。
如果你之前配的是"type": "http",现在官方端点建议用"type": "url"。两种写法在部分版本里都能跑,但url更贴合当前 MCP 规范。
3.2 CcSwitch 的 config.toml 骨架
CcSwitch 用来统一管理多个 Agent 的配置,它的 MCP 配置存在 SQLite 数据库里,路径是~/.cc-switch/cc-switch.db。但 CcSwitch 也支持用config.toml做声明式配置,骨架如下:
[model] base_url = "https://taotoken.net/api" api_key = "sk-YOUR_TAOTOKEN_KEY" [mcp_servers.tavily] type = "url" url = "https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR_TAVILY_KEY"config.toml适合做版本管理和批量同步,改完可以用 CcSwitch 的导入功能写回数据库。如果你习惯直接改数据库,那就用下一节的 SQL。
3.3 直接改 CcSwitch 数据库
先查当前配置,确认旧记录长什么样:
SELECT name, server_config FROM mcp_servers WHERE name LIKE '%tavily%';旧配置大概率是这样:
{ "type": "http", "url": "https://tavily.astrdark.cyou/mcp", "headers": { "Authorization": "Bearer xxx" } }然后替换成官方端点:
UPDATE mcp_servers SET server_config = '{"type":"url","url":"https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR_TAVILY_KEY"}' WHERE name = 'tavily-proxy';主要变更就三点:URL 从astrdark.cyou/mcp换成mcp.tavily.com/mcp;API Key 从请求头挪到 URL 参数;headers字段清空。改完重启 CcSwitch,Claude Code 通过它代理就能重新用上 Tavily 搜索。
4. 验证请求:确认 Tavily 搜索真的生效
配置写完不代表生效,得实际打一次请求。分三层验证:先验 Tavily Key 本身,再验 MCP 端点,最后在 Claude Code 里跑一次真实搜索。
4.1 验证 Tavily API Key
用 curl 直接打 Tavily 的搜索 API,确认 Key 有效:
curl -s -X POST https://api.tavily.com/search \ -H "Content-Type: application/json" \ -d '{"api_key":"tvly-YOUR_TAVILY_KEY","query":"hello world","max_results":1}'返回里能看到results数组,说明 Key 没问题。如果返回 401,检查 Key 有没有复制完整,格式应该是tvly-dev-开头的一长串。
4.2 验证 MCP 端点可用性
MCP 端点用的是 JSON-RPC 协议,列一下工具列表:
curl -s -X POST "https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR_TAVILY_KEY" \ -H "Accept: application/json, text/event-stream" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'正常会返回 5 个工具的定义:tavily_search、tavily_extract、tavily_crawl、tavily_map、tavily_research。如果这里报错,多半是 URL 参数拼错了,或者 Key 已经失效。
4.3 在 Claude Code 里实测
回到 Claude Code,直接输入:
@tavily 搜索最新的 AI agent 框架如果配置正确,Claude Code 会调用tavily_search,返回几条带 URL 和摘要的结果。这一步成功,说明从 TaoToken 模型通道到 Tavily MCP 搜索整条链路都通了。
4.4 验证 TaoToken 通道
顺手确认模型通道也没问题,用 curl 打一次对话接口:
curl -s -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-YOUR_TAOTOKEN_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{"model":"claude-sonnet-4-20250514","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'返回正常内容就说明 TaoToken 的 Key 和通道都可用。这一步和搜索是独立的,分开验证能快速定位问题出在哪一层。
5. 本篇常见错排查
配置过程中最容易踩的坑,我按出现频率列一下。
报错 521 或连接超时:说明你还在用旧的astrdark.cyou端点。这个源站已经挂了,换成mcp.tavily.com/mcp即可。别去折腾旧地址,换官方端点是最省事的。
401 Unauthorized:Tavily Key 无效或没传对。检查 URL 里的?tavilyApiKey=后面是不是完整的tvly-dev-开头的字符串,有没有多余空格。注意 Key 是放在 URL 参数里,不是放在Authorization头里。
MCP 工具列表为空:Accept头没带全。MCP 端点要求Accept: application/json, text/event-stream,少一个都可能返回空。curl 测试时务必带上。
Claude Code 里@tavily没反应:先确认mcpServers的 key 名和你在对话里@的名字一致。如果你在mcp.json里写的是tavily,对话里就得@tavily。名字对不上,Claude Code 找不到这个工具。
CcSwitch 改完不生效:数据库改了但服务没重启。CcSwitch 是常驻进程,改完cc-switch.db必须重启它,Claude Code 才会重新加载 MCP 配置。另外确认你改的是mcp_servers表,不是别的表。
额度耗尽:Tavily 免费额度是 1000 credits/月,1 次 search 扣 1 credit,1 次 research 扣 5 credits。日常每天 10 次搜索,一个月 300 credits,还剩 700。真用完了可以等每月 1 日重置,或者临时切到 SearXNG、ddgs 这类替代方案。
TaoToken Key 和 Tavily Key 搞混:这两个 Key 长得不一样,用途也不一样。TaoToken Key 填在ANTHROPIC_API_KEY,Tavily Key 填在 MCP URL 参数里。填反了会同时报两个错,排查时先看字段名。
提示:排查顺序建议从下往上——先 curl 验 Tavily Key,再 curl 验 MCP 端点,再验 TaoToken 通道,最后才进 Claude Code。这样能快速锁定是哪一层的问题,不用在编辑器里反复试。
6. 把配置固化下来,长期用
配置跑通之后,建议把settings.json和config.toml纳入版本管理,尤其是 CcSwitch 管多个 Agent 的场景,改一处全局生效比每个工具单独配省心得多。TaoToken 的 Key 建议单独放环境变量,别硬编码进配置文件,避免误提交。
如果你后面要长期跑编码和 Agent 任务,可以到 Coding Plan 页面看看额度方案:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。需要重新生成或轮换 Key 的时候,去 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。接入细节有疑问就翻文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。Claude Code 相关的接入说明在 https://taotoken.net/claudecode?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite ,Anthropic 通道的说明在 https://taotoken.net/anthropic?utm_source=taotoken_aicg_blog_end&utm_content=anthropic&utm_campaign=rewrite 。
最后留一个实用习惯:每次换 Key 或改端点后,先跑一遍第 4 节的 curl 验证,再进 Claude Code 实测。这样能把「配置写错」和「服务端问题」分开,省掉大量瞎猜的时间。