news 2026/10/24 12:51:55

创建一个MCP服务器并在Cline中使用TaoToken增强自定义功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
创建一个MCP服务器并在Cline中使用TaoToken增强自定义功能

1. 从零理解 MCP 服务器与 Cline 的协作方式

MCP 服务器是什么?简单说,它是一套让 AI 应用按统一方式调用外部工具的开放协议。你可以把它想成 AI 世界的 USB-C 接口:不管对面接的是搜索、数据库还是文件系统,只要插口对得上,模型就能直接调用。Cline 在这里扮演的是 MCP 客户端角色,它负责把模型和 MCP 服务器连起来,让模型在对话过程中自动触发工具。

适合谁?适合已经在用 Cline 写代码、但觉得内置能力不够、想自己扩展搜索或数据查询功能的开发者。也适合刚接触 MCP、想先跑通一个最小可用服务再深入的人。

我这次要做的,是一个基于 duckduckgo 搜索的 MCP 服务器。目标很明确:在 Cline 里输入一个问题,模型能自动调用这个服务器去网上搜,然后把结果整理回来。整条链路涉及三个东西:uv 工具链负责建项目和依赖,duckduckgo_search 提供搜索能力,TaoToken 提供统一的模型 Key 和 API 通道。下面按步骤走。

2. TaoToken 前置准备:统一 Key 与 API 通道

在写 MCP 服务器之前,先把模型通道准备好。Cline 本身需要配置一个模型提供方,而 TaoToken 的作用是把 Key 和 API 地址统一起来,后面不管换模型还是加工具,都只改这一处。

你需要先拿到一个 API Key。打开 TaoToken 的 API Keys 页面:

https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=mcp_cline_duckduckgo&utm_campaign=rewrite

登录后创建一个新 Key,复制保存。注意不要把它写进会提交到 Git 的文件里,后面配置 Cline 时直接填在界面或本地配置中。

接着确认 API 基础地址。TaoToken 的 API 入口是:

https://taotoken.net/api

这个地址不加任何查询参数,直接作为 Base URL 使用。模型 ID 方面,我这次用的是Qwen/Qwen2.5-72B-Instruct,你也可以换成自己账号里可用的其他模型。三件套记牢:Base URL、API Key、Model ID。后面 Cline 配置和 MCP 服务器调用都会围绕它们展开。

如果你还没决定用哪个模型,可以先到模型对话页面试一下:

https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=mcp_cline_duckduckgo&utm_campaign=rewrite

在对话里发一句「你好,帮我列三个 Python 常用库」,能正常返回就说明 Key 和通道没问题。这一步别跳过,因为后面 MCP 服务器跑起来后,如果搜索工具正常但模型不响应,排查起来会多绕一圈。

对于长期在 Cline 里做编码和 Agent 任务的,可以考虑 Coding Plan,它更适合高频调用场景:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=mcp_cline_duckduckgo&utm_campaign=rewrite

前置准备到这里就够了。核心就一件事:确保你有一个能用的 Key、一个正确的 Base URL、一个可调用的 Model ID。

3. 用 uv 创建 duckduckgo MCP 服务器并写配置

现在进入正题,从零建项目。uv 是 Python 的包和项目管理工具,速度比传统方式快很多,而且能自动管理虚拟环境。先建目录并初始化:

uv init duckduckgo_mcp cd duckduckgo_mcp

然后创建虚拟环境并激活。Windows 下:

uv venv .venv\Scripts\activate

macOS 或 Linux 下:

uv venv source .venv/bin/activate

激活后安装依赖。这里需要mcp[cli]和duckduckgo_search:

uv add "mcp[cli]" duckduckgo_search

安装完成后,项目里会多出pyproject.toml和uv.lock。接下来写服务器主文件。在项目根目录创建main.py,内容如下:

from mcp.server.fastmcp import FastMCP from duckduckgo_search import DDGS mcp = FastMCP("DuckDuckGo-Search") @mcp.tool() def run_duckduckgo(query: str): """获取网络信息""" results = DDGS().text(query, max_results=10) return results if __name__ == "__main__": print("Server running") mcp.run(transport='stdio')

这段代码做了三件事:创建一个名为DuckDuckGo-Search的 MCP 服务器实例;用@mcp.tool()装饰器把run_duckduckgo注册成可被模型调用的工具;用 stdio 传输方式启动,方便 Cline 通过标准输入输出和它通信。

写完后先在终端手动跑一次,确认没有语法或依赖错误:

uv run main.py

看到Server running就说明服务能启动。按 Ctrl+C 退出,接下来配置 Cline。

Cline 的 MCP 配置文件里,需要加一段服务器定义。打开 Cline 的 MCP 配置界面,找到配置文件,加入:

{ "mcpServers": { "duckduckgo_search": { "command": "uv", "args": [ "--directory", "D:\\Learning\\AI-related\\mcp-demo\\duckduckgo_mcp", "run", "main.py" ], "disabled": false, "autoApprove": [] } } }

注意--directory后面的路径要改成你自己的项目绝对路径。Windows 下用双反斜杠或正斜杠都行,macOS 和 Linux 下写/Users/xxx/duckduckgo_mcp这种形式。autoApprove留空表示每次调用工具都需要你确认,调试阶段建议保持这样,避免模型乱调。

这段 JSON 就是 Cline 识别 MCP 服务器的关键。command用uv,args里先指定项目目录,再run main.py,这样 Cline 启动时就会自动拉起这个 MCP 服务器进程。

4. 验证请求:在 Cline 中实际调用搜索工具

配置保存后,回到 Cline 对话界面。先确认 MCP 服务器状态是已连接。如果显示绿色或已启用,就可以测试了。

在对话框里输入一个需要联网搜索的问题,比如:

帮我搜索一下 2025 年 Python 3.13 有哪些新特性,并总结三条。

Cline 会先判断是否需要调用工具。因为问题涉及最新信息,它应该会触发duckduckgo_search工具。你会看到界面上弹出工具调用请求,确认后它执行run_duckduckgo,把搜索结果返回给模型,模型再整理成回答。

如果一切正常,你会看到类似这样的过程:工具调用显示run_duckduckgo,参数是query,返回一组搜索结果,然后模型基于这些结果生成总结。这就说明 MCP 服务器、Cline 客户端、TaoToken 模型通道三者已经打通。

再测一个更明确的指令,验证工具是否真的被调用:

使用 duckduckgo 搜索 MCP 协议的最新进展,列出前五条结果标题。

这次模型应该直接调用工具,而不是凭记忆回答。如果它没调用,可能是工具描述不够清晰,或者模型没理解。可以在 Cline 的 MCP 设置里检查工具是否已加载,以及run_duckduckgo的 docstring 是否被正确读取。

验证成功后,你可以试着把max_results改成 5 或 20,观察返回速度和结果质量的变化。也可以再加一个工具函数,比如限定搜索区域或时间范围,进一步扩展自定义功能。

5. 常见报错排查:401、local proxy failed 与 reading choices

接入过程中最容易碰到几类报错,这里按真实场景逐个拆。

第一类:401 Unauthorized。这通常出现在 Cline 调用模型时,说明 TaoToken 的 API Key 不对或没填。检查 Cline 的模型配置里,API Key 是否和 TaoToken 后台创建的一致,Base URL 是否写成https://taotoken.net/api,注意不要多加斜杠或路径。如果 Key 复制时带了空格,也会导致 401。

第二类:local proxy failed 或连接被拒绝。这多半是 MCP 服务器没启动成功。先在终端手动执行uv run main.py,看是否报错。常见原因是虚拟环境没激活、依赖没装全,或者--directory路径写错。Cline 启动 MCP 服务器时用的是配置里的路径,如果路径里有中文或空格,建议换成纯英文无空格路径。

第三类:reading choices 相关报错。这通常出现在模型返回格式不符合预期时,比如模型没有按工具调用格式返回,或者返回了空内容。检查 Model ID 是否写对,有些模型对工具调用的支持程度不同。如果换模型后出现,可以先换回Qwen/Qwen2.5-72B-Instruct确认通道正常,再逐个试其他模型。

第四类:OAuth 或认证失败。如果你在 Cline 里配置的是需要 OAuth 的提供方,但实际用的是 TaoToken 的 Key,就会冲突。确保 Cline 的模型提供方选择的是自定义 OpenAI 兼容接口,Base URL 填 TaoToken 的 API 地址,认证方式用 API Key。

第五类:工具调用后没有返回结果。检查duckduckgo_search是否被限流。可以手动在 Python 里跑一次DDGS().text("test", max_results=3),看是否返回数据。如果被限流,减少max_results或加延时。

排查顺序建议:先确认模型通道能单独对话,再确认 MCP 服务器能手动启动,最后确认 Cline 配置路径正确。三步都过,基本不会有大问题。

6. 继续扩展:把 MCP 服务器接入更多自定义功能

跑通 duckduckgo 搜索只是起点。你可以按同样的模式,在main.py里加更多@mcp.tool()函数。比如加一个查询本地文件目录的工具,或者加一个调用内部 API 的工具。每个工具就是一个 Python 函数,写好 docstring,Cline 就能识别。

模型方面,不必局限在 Claude。我上面用的是Qwen/Qwen2.5-72B-Instruct,通过 TaoToken 统一通道调用,切换模型时只改 Model ID,MCP 服务器和 Cline 配置都不用动。这就是把 Key 和 API 通道统一起来的好处。

如果你后面要长期在 Cline 里跑 Agent 任务,可以到 Coding Plan 页面看看更适合的套餐:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=mcp_cline_duckduckgo&utm_campaign=rewrite

需要查接入文档或更多配置示例,看这里:

https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=mcp_cline_duckduckgo&utm_campaign=rewrite

最后留一个实用技巧:每次改完 MCP 服务器代码,先在终端uv run main.py确认能启动,再回 Cline 里点重连。这样能省掉很多「配置没生效」的困惑。工具调用确认框在调试阶段别关,等稳定了再考虑自动批准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 3:07:22

AI Coding 时代,混合开发架构“大变局”:抹平开发门槛后,H5 与小程序谁才是跨端的更优答案?TaoToken 统一 Key 通道实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 15:51:53

代码随想录第27天打卡:贪心算法三道经典题深度解析

代码随想录算法训练营打卡进行到第27天,今天的任务排了三道题:455. 分发饼干、376. 摆动序列、53. 最大子序和。我一开始没太当回事,心想这三道题都不算难,一天刷完绰绰有余。真正坐下来从头捋一遍才发现,题目简单与否…

作者头像 李华
网站建设 2026/10/15 20:46:13

Claude Code配置三件套:settings.json、CLAUDE.md与memory实战

1. 为什么Claude Code的配置值得单独成体系研究1.1 从"跑起来"到"跑得好"的分水岭很多人上手Claude Code的第一天,在终端敲下claude命令,发现它能聊天、能读写文件、能执行命令,就觉得"行了,我已经会用了…

作者头像 李华
网站建设 2026/10/23 20:36:41

多模型API聚合网关实战:TaoToken接入体验与免费额度攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华