ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

零基础 MCP 初体验说明书:用 Python+FastAPI 搭一个能被 Cline 调用的本地工具服务,并配 TaoToken 统一 Key

零基础 MCP 初体验说明书:用 Python+FastAPI 搭一个能被 Cline 调用的本地工具服务,并配 TaoToken 统一 Key 1. 零基础也能跑通的 MCP 本地工具服务MCPModel Context Protocol说白了就是给大模型装一个「标准插座」模型不用关心你的工具是 Python 写的还是 Go 写的只要按协议暴露能力它就能调用。这篇要带你从零搭一个能被 Cline 调用的本地工具服务技术栈是 Python FastAPI uvicorn pydantic最后在 Cline 的 settings.json 里接入 TaoToken 统一 Key让整条调用链真正跑起来。适合谁看写过一点 Python、听说过 MCP 但没动手、想让 AI 编辑器调用自己本地接口的人。全程不需要你懂协议细节我会把可复制的骨架、配置片段、验证动作一条条列出来你照着敲就能看到结果。整条链路是这样的Cline 作为 MCP 客户端读取 settings.json 里的服务配置启动你本地的 FastAPI 服务通过 stdio 或 HTTP 把工具列表告诉模型模型决定调用哪个工具后请求打到你的 FastAPI 接口接口返回 JSON模型再组织成人话回复你。理解这条链路后面每一步就都有位置感了。2. 前置准备TaoToken 统一 Key 与 API 通道在写代码之前先把「模型侧」的通道准备好。Cline 本身只是个客户端它需要一个大模型来驱动这里用 TaoToken 的统一 Key 来打通好处是一个 Key 走通对话、编码、Agent 多种场景不用在多个平台之间来回切。你需要做两件事注册并拿到 API Key然后记住两个地址。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基地址是 https://taotoken.net/api 这个不加 UTM。拿到 Key 后先别急着填后面配置 Cline 时会用到。提示Key 属于敏感信息建议放在环境变量或本地配置文件里不要直接提交到 Git 仓库。Cline 的 settings.json 如果放在项目目录记得加进 .gitignore。如果你还没创建 Key可以进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 生成想先看看模型对话效果也可以直接在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 里试几句确认通道是通的再回来搭本地服务。3. 可复制配置FastAPI 工具服务骨架3.1 环境与依赖先建目录、建虚拟环境把依赖钉在 requirements.txt 里。版本不用完全一致但建议 Python 3.10 以上。mkdir mcp-local-tool cd mcp-local-tool python -m venv .venv # Windows .venv\Scripts\activate # Mac/Linux source .venv/bin/activatefastapi0.110.0 uvicorn0.29.0 pydantic2.6.4 httpx0.27.0pip install -r requirements.txt3.2 FastAPI 服务骨架下面这个 server.py 是一个最小可用工具服务暴露两个接口一个查当前时间一个做加法。别小看这两个它们足够验证「模型 → MCP → 本地接口」整条链路。from fastapi import FastAPI from pydantic import BaseModel from datetime import datetime app FastAPI(titleMCP Local Tool Server) class AddRequest(BaseModel): a: float b: float class AddResponse(BaseModel): result: float app.get(/tools) def list_tools(): return { tools: [ {name: get_current_time, description: 获取当前本地时间}, {name: add_numbers, description: 计算两个数字之和}, ] } app.get(/tools/get_current_time) def get_current_time(): return {time: datetime.now().isoformat()} app.post(/tools/add_numbers, response_modelAddResponse) def add_numbers(req: AddRequest): return AddResponse(resultreq.a req.b)启动命令uvicorn server:app --host 127.0.0.1 --port 8000 --reload看到Uvicorn running on http://127.0.0.1:8000就说明服务起来了。这里用 pydantic 做请求体校验参数类型不对会直接返回 422省得你在接口里手写一堆 if。3.3 Cline settings.json 配置片段Cline 的 MCP 配置在 settings.json 里找到mcpServers字段加入你的本地服务。下面这段是 HTTP 方式的写法把 URL 指向你刚启动的 FastAPI{ mcpServers: { local-tool: { url: http://127.0.0.1:8000, disabled: false, autoApprove: [get_current_time, add_numbers] } } }同时在 Cline 的模型配置里填入 TaoToken 的通道信息API Base 用 https://taotoken.net/api Key 填你控制台生成的那串。这样模型请求走 TaoToken工具请求走本地 FastAPI两条线互不干扰。注意如果你的 Cline 版本要求 stdio 方式需要额外写一个 stdio 适配脚本把 HTTP 接口包一层。新手先用 HTTP 方式验证跑通后再考虑 stdio。4. 验证请求逐条确认调用链服务起来、配置填好后按下面顺序逐条验证每一步都有明确的预期结果哪一步不对就停在那排查。第一步直接 curl 工具列表确认服务本身没问题curl http://127.0.0.1:8000/tools预期返回包含get_current_time和add_numbers的 JSON。如果这里就失败说明 FastAPI 没起来或端口被占。第二步测加法接口确认 pydantic 校验和返回结构curl -X POST http://127.0.0.1:8000/tools/add_numbers \ -H Content-Type: application/json \ -d {a: 3, b: 4}预期返回{result:7.0}。如果返回 422检查字段名和类型是否对得上。第三步回到 Cline在对话里问一句「现在几点了」观察它是否触发get_current_time工具调用。正常情况你会看到 Cline 显示工具调用过程然后返回一个时间。这一步成功说明整条链路通了。第四步问「帮我算一下 12.5 加 7.3」确认模型能选中add_numbers并传对参数。到这里一个能被 Cline 调用的本地工具服务就完整跑通了。5. 本篇常见错排查服务启动报端口占用8000 被别的进程占了换--port 8001同时把 settings.json 里的 URL 一起改掉两边必须一致。Cline 里看不到工具先确认 settings.json 的 JSON 格式没写错多一个逗号都会导致整个配置失效。再看disabled是不是 true以及 Cline 是否需要重启才加载新配置。调用返回 422pydantic 校验没过。检查请求体字段名、类型数字别传成字符串。用 curl 单独测接口能快速定位是服务问题还是模型传参问题。模型不调用工具确认模型通道是通的可以在模型对话里先聊两句验证 Key 有效。另外工具描述写清楚一点模型更容易判断什么时候该调用。改了代码没生效uvicorn 加了--reload会自动重载但如果是改 settings.json需要重启 Cline 或重新加载 MCP 配置。6. 把 Key 和工具链固定下来跑通一次之后建议把常用配置固化TaoToken 的 Key 放进环境变量FastAPI 服务写个启动脚本settings.json 纳入版本管理但排除敏感字段。这样下次开新项目复制粘贴就能复用。如果你后面要做长期编码或 Agent 类任务可以了解下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 配合本地 MCP 工具服务模型能调用的能力会越来越顺手。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 需要的时候直接去对应页面操作就行。真正踩过的坑是一开始我把工具描述写得太笼统模型经常选错工具后来把 description 改成「获取当前本地时间返回 ISO 格式字符串」这种具体描述命中率立刻上来了。工具描述不是写给人看的注释是写给模型看的说明书值得多花两分钟。
返回列表