1. 为什么要在 Cline 里折腾 Web Search MCP Server
如果你最近在用 Cline、CC Switch 或者 Claude Code 这类 AI 编码工具,大概率会遇到一个尴尬场景:模型本身的知识截止到某个时间点,你问它「这个 npm 包最新版本号是多少」「某个报错在 GitHub 上有没有人提过 issue」,它要么编一个看起来很像的答案,要么直接说无法访问网络。这时候就需要给 AI 工具挂一个能联网搜索的 MCP Server。
Web Search MCP Server 这个开源项目的价值在于:它把 Google 搜索结果抓取、解析、结构化返回这一整套流程封装成了标准 MCP 工具,调用方只需要传一个 query 和 limit,就能拿到标题、URL、描述三件套。更关键的是,它不需要你申请任何搜索 API 密钥,对于个人开发者和小团队来说,省掉了注册、配额、计费这一堆麻烦事。
但问题也随之而来。很多朋友在 Cline 里配好 web-search 之后,发现它和 TaoToken 的 Key 通道是两套东西:TaoToken 负责模型推理的鉴权,web-search 自己跑一个本地 node 进程做搜索。如果配置写错,就会出现「模型能对话但搜不了网」或者「搜索进程起来了但模型调不到」的情况。这篇就聚焦这个配置环节,把 settings.json 和 config.toml 两套骨架都给你,目标是一次性跑通免密钥网络搜索链路。
适合谁看:已经在用 Cline / CC Switch / Claude Code,想让 AI 助手具备实时联网搜索能力,但不想额外申请搜索 API 密钥的开发者。读完你能拿到可直接复制的配置片段、启动验证命令,以及几个高频报错的排查思路。
2. TaoToken 前置准备:统一 Key 与 API 通道
在讲 web-search 配置之前,得先把 TaoToken 这一层说清楚,因为后面所有配置里的 Base URL 和 Key 都从这里来。TaoToken 在这里扮演的角色是「模型推理的统一入口」——你的 Cline 里所有对话请求都走它,而 web-search MCP Server 是独立运行的本地进程,两者通过 MCP 协议在客户端侧汇合。
先拿到你的 API Key。访问 https://taotoken.net/api-keys 这个 deep link,登录后创建一个新的 Key。建议按用途命名,比如cline-websearch-dev,方便后面区分。创建完复制那串sk-开头的字符串,注意它只显示一次,丢了就得重建。
Base URL 用https://taotoken.net/api,这个地址不加任何 UTM 参数,直接写进配置里。模型 ID 这块,如果你主要用 Cline 做编码,推荐选一个支持工具调用(tool use)能力强的模型,因为 MCP 的 search 工具本质上是 function calling,模型得能正确解析工具 schema 并生成调用参数。具体模型列表可以在 https://taotoken.net/models 查看,选标注了 function calling 或 tool use 的即可。
这里有个容易踩的坑:有人把 TaoToken 的 Key 填到 web-search 的配置里,以为搜索也走同一个鉴权。实际上 web-search MCP Server 是本地 node 进程,它不认 TaoToken 的 Key,它只负责抓 Google 结果。TaoToken 的 Key 是给 Cline 调模型用的。两者在 settings.json 里是两个独立的配置块,别混。
另外,如果你用的是 Claude Code,它的配置走的是~/.claude/settings.json或者项目级的.mcp.json,和 Cline 的路径不一样。下面我会分别给 Cline 和 CC Switch 的配置骨架,Claude Code 的接入方式在 §3 里也会提到。
3. 可复制配置骨架:settings.json 与 config.toml
这一节是全文的核心,直接给可复制的配置片段。先确认 web-search 项目已经 clone 并 build 完成:
git clone https://github.com/pskill9/web-search.git cd web-search npm install npm run buildbuild 完成后,build/index.js就是 MCP Server 的入口文件。记住这个绝对路径,比如/Users/yourname/projects/web-search/build/index.js,下面配置里要用。
3.1 Cline 的 settings.json 配置
Cline 的 MCP 配置在 VS Code 的设置里,路径通常是~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json,或者你直接在 Cline 面板里点 MCP Servers 的配置图标打开。完整骨架如下:
{ "mcpServers": { "web-search": { "command": "node", "args": ["/Users/yourname/projects/web-search/build/index.js"], "env": {}, "disabled": false, "autoApprove": ["search"] } } }注意autoApprove里填search,这样模型调用搜索工具时不需要你每次手动点确认,适合高频搜索场景。如果你担心误调用,可以去掉这行,改成手动批准。
TaoToken 的模型配置不在这个文件里,它在 Cline 的 API 配置界面单独设置。Base URL 填https://taotoken.net/api,API Key 填你刚才创建的sk-串,Model ID 填你选的模型。这样 Cline 的对话走 TaoToken,搜索走本地 web-search,两条链路互不干扰。
3.2 CC Switch 的 config.toml 配置
CC Switch 用的是 TOML 格式,配置文件通常在~/.cc-switch/config.toml。骨架如下:
[[servers]] name = "web-search" command = "node" args = ["/Users/yourname/projects/web-search/build/index.js"] enabled = true [servers.env] NODE_ENV = "production"CC Switch 的模型通道配置在另一个 section,通常是[[providers]]块,把 TaoToken 的 Base URL 和 Key 填进去:
[[providers]] name = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-your-key-here" model = "your-model-id"3.3 Claude Code 的 .mcp.json 配置
如果你用 Claude Code,在项目根目录建.mcp.json:
{ "mcpServers": { "web-search": { "command": "node", "args": ["/Users/yourname/projects/web-search/build/index.js"] } } }Claude Code 的模型鉴权走~/.claude/settings.json里的env字段,设置ANTHROPIC_BASE_URL为https://taotoken.net/api,ANTHROPIC_API_KEY为你的 TaoToken Key。这样三件套(Base URL + Key + Model ID)就齐了。
配置写完后,重启对应的 AI 工具,让 MCP Server 重新加载。下一节讲怎么验证它真的起来了。
4. 启动验证与搜索请求测试
配置写完不代表跑通了,得实际验证。分两步:先确认 MCP Server 进程能独立启动,再确认 AI 工具能调到 search 工具。
4.1 独立启动验证
在终端里直接跑:
node /Users/yourname/projects/web-search/build/index.js如果没有任何报错、进程挂起等待输入,说明 Server 本身没问题。你可以按 Ctrl+C 退出。如果报Cannot find module,说明 build 没成功或者路径写错了,回到 §3 重新 build。
更严谨的验证是用 MCP Inspector 工具,它能模拟客户端发请求:
npx @modelcontextprotocol/inspector node /Users/yourname/projects/web-search/build/index.js启动后浏览器打开 Inspector 界面,在 Tools 标签里应该能看到search工具,参数 schema 里有query和limit。点 Run 测试,query 填MCP protocol,limit 填 3,如果返回了结构化的搜索结果 JSON,说明 Server 完全正常。
4.2 在 Cline 里实测搜索
打开 Cline 面板,在对话框里输入:
帮我搜索一下 "Model Context Protocol specification" 的最新资料,返回前 3 条结果正常情况下,Cline 会先调用 web-search 的 search 工具,你能在工具调用记录里看到query和limit参数,然后返回标题、URL、描述。模型拿到这些结果后,会整理成自然语言回答你。
如果工具调用没触发,检查两点:一是 Cline 的 MCP Servers 列表里 web-search 是否显示绿色已连接;二是当前选的模型是否支持 function calling。有些轻量模型不支持工具调用,换一个支持 tool use 的模型再试。
实测下来,从配置到跑通大概 5 分钟,主要时间花在找路径和重启工具上。搜索请求本身很快,单次 query 返回 3 条结果通常在 1-2 秒内。
5. 本篇常见错排查:401、local proxy failed、reading choices
这一节列几个真实高频报错,对照着排查。
报错一:401 Unauthorized
这个通常出现在模型对话环节,不是搜索环节。说明 TaoToken 的 Key 填错了或者过期了。检查sk-串有没有复制完整,有没有多余空格。如果 Key 没问题,检查 Base URL 是不是写成了https://taotoken.net/api/带了尾部斜杠,有些客户端对斜杠敏感,去掉试试。
报错二:local proxy failed / connection refused
这个报错说明 Cline 尝试连接 MCP Server 但连不上。最常见原因是args里的路径写错了,或者 node 不在系统 PATH 里。解决方法:把command从node改成 node 的绝对路径,比如/usr/local/bin/node,用which node查一下。另外确认build/index.js文件真实存在,ls -la看一眼。
报错三:Error reading choices / unexpected token
这个多半是 web-search 抓 Google 结果时页面结构变了,解析失败。web-search 依赖 Google 搜索结果页的 HTML 结构,Google 改版后可能返回空结果或报错。临时方案是降低请求频率,在搜索之间加延迟。如果持续报错,去 GitHub 仓库看有没有 issue 和更新,pull 最新代码重新 build。
报错四:OAuth / authentication failed
如果你用的是 Claude Code 并且看到 OAuth 相关报错,说明它还在走默认的 Anthropic 鉴权,没读到你的ANTHROPIC_BASE_URL配置。检查~/.claude/settings.json里的env字段是否正确嵌套,重启终端让环境变量生效。
报错五:工具列表里没有 search
MCP Server 连上了但工具没注册,通常是autoApprove配置格式问题。确认autoApprove是数组,里面填的是工具名search,不是 server 名。改完重启 Cline。
排查顺序建议:先独立启动 Server 确认没问题,再看 Cline 的 MCP 连接状态,最后测模型工具调用。一层层往下,别跳步。
6. 把这条链路用起来:接入文档与后续动作
配置跑通之后,你手里就有了一条「TaoToken 管模型鉴权 + web-search 管联网搜索」的完整链路。日常使用中,可以让 Cline 在回答技术问题前先搜一下最新资料,或者让它搜索某个报错的 GitHub issue 再给修复建议。
如果你还想把这套配置复用到其他工具,TaoToken 的接入文档在 https://taotoken.net/doc 有各客户端的详细说明,包括 Cline、Claude Code、Cursor 等。API Keys 管理页面在 https://taotoken.net/api-keys,可以随时创建新 Key 或吊销旧的。
对于长期做编码和 Agent 开发的朋友,如果搜索调用频率高,可以考虑 Coding Plan 方案,在 https://taotoken.net/coding-plan 有详细说明,适合需要稳定通道和更高配额的场景。
最后提醒一句:web-search 抓 Google 结果有频率限制,别在循环里疯狂调用。合理控制搜索间隔,既是对服务方的尊重,也能避免自己的 IP 被临时限制。配置骨架已经给你了,剩下的就是动手跑一遍。