首页 / 资讯中心 / 文章详情

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

创建一个MCP服务器并在Cline中使用TaoToken增强自定义功能 ★ FEATURED ARTICLE
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_sourcetaotoken_aicg_blog_endutm_contentmcp_cline_duckduckgoutm_campaignrewrite登录后创建一个新 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_sourcetaotoken_aicg_blog_endutm_contentmcp_cline_duckduckgoutm_campaignrewrite在对话里发一句「你好帮我列三个 Python 常用库」能正常返回就说明 Key 和通道没问题。这一步别跳过因为后面 MCP 服务器跑起来后如果搜索工具正常但模型不响应排查起来会多绕一圈。对于长期在 Cline 里做编码和 Agent 任务的可以考虑 Coding Plan它更适合高频调用场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_cline_duckduckgoutm_campaignrewrite前置准备到这里就够了。核心就一件事确保你有一个能用的 Key、一个正确的 Base URL、一个可调用的 Model ID。3. 用 uv 创建 duckduckgo MCP 服务器并写配置现在进入正题从零建项目。uv 是 Python 的包和项目管理工具速度比传统方式快很多而且能自动管理虚拟环境。先建目录并初始化uv init duckduckgo_mcp cd duckduckgo_mcp然后创建虚拟环境并激活。Windows 下uv venv .venv\Scripts\activatemacOS 或 Linux 下uv venv source .venv/bin/activate激活后安装依赖。这里需要mcp[cli]和duckduckgo_searchuv 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_results10) return results if __name__ __main__: print(Server running) mcp.run(transportstdio)这段代码做了三件事创建一个名为DuckDuckGo-Search的 MCP 服务器实例用mcp.tool()装饰器把run_duckduckgo注册成可被模型调用的工具用 stdio 传输方式启动方便 Cline 通过标准输入输出和它通信。写完后先在终端手动跑一次确认没有语法或依赖错误uv run main.py看到Server running就说明服务能启动。按 CtrlC 退出接下来配置 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用uvargs里先指定项目目录再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_results3)看是否返回数据。如果被限流减少max_results或加延时。排查顺序建议先确认模型通道能单独对话再确认 MCP 服务器能手动启动最后确认 Cline 配置路径正确。三步都过基本不会有大问题。6. 继续扩展把 MCP 服务器接入更多自定义功能跑通 duckduckgo 搜索只是起点。你可以按同样的模式在main.py里加更多mcp.tool()函数。比如加一个查询本地文件目录的工具或者加一个调用内部 API 的工具。每个工具就是一个 Python 函数写好 docstringCline 就能识别。模型方面不必局限在 Claude。我上面用的是Qwen/Qwen2.5-72B-Instruct通过 TaoToken 统一通道调用切换模型时只改 Model IDMCP 服务器和 Cline 配置都不用动。这就是把 Key 和 API 通道统一起来的好处。如果你后面要长期在 Cline 里跑 Agent 任务可以到 Coding Plan 页面看看更适合的套餐https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_cline_duckduckgoutm_campaignrewrite需要查接入文档或更多配置示例看这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentmcp_cline_duckduckgoutm_campaignrewrite最后留一个实用技巧每次改完 MCP 服务器代码先在终端uv run main.py确认能启动再回 Cline 里点重连。这样能省掉很多「配置没生效」的困惑。工具调用确认框在调试阶段别关等稳定了再考虑自动批准。
阅读完成 · 觉得有帮助?
咨询建站