ARTICLE DETAIL

资讯详情

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

【保姆级教程】大模型应用开发:用Python搭建自己的MCP服务并接入TaoToken统一Key通道!

【保姆级教程】大模型应用开发:用Python搭建自己的MCP服务并接入TaoToken统一Key通道! 1. 为什么我要自己搭一个 MCP 服务如果你最近在折腾大模型应用开发大概率听过 MCPModel Context Protocol这个词。简单说它是一套让 AI 工具比如 Cline、Cherry Studio、Claude Code 这类客户端能够发现并调用你本地能力的协议。你写一个查询天气的函数、一个读数据库的工具、一个查公司内部文档的接口只要按 MCP 规范暴露出去AI 就能在对话里自动判断这个任务该调用哪个工具。但真正动手时很多人会卡在三个地方第一Python 环境依赖装得乱七八糟mcp包和requests版本打架第二工具写完了不知道怎么调试只能盲猜第三也是最烦的——每个模型客户端都要单独填一遍 API Key阿里云百炼一个、深度求索一个、硅基流动又一个配置散落在四五个settings.json里改一次 Key 要翻半天。这篇教程就解决这三件事。我会用 Python FastMCP uv 从零搭一个本地 MCP 服务然后把它接入 TaoToken 的统一 Key 通道让所有模型调用走同一个入口。适合刚接触 MCP 的小白也适合已经被多 Key 配置搞烦的开发者。全程可复制跟着敲就行。2. 环境准备uv 与 FastMCP 依赖骨架MCP 官方推荐用 uv 管理 Python 工程原因是它比 pip 快很多而且能自动处理虚拟环境和依赖锁定。先去 uv 官网下载对应平台的安装包Windows 64 位一般选uv-x86_64-pc-windows-msvc.zip解压后把目录加到系统环境变量 Path 里。验证一下uv --version能打印出版本号就说明装好了。接着初始化项目我习惯用 Python 3.13兼容性目前没问题uv init mcp_demo --python3.13 cd mcp_demo这一步会生成pyproject.toml、README.md和一个hello.py。接下来装 MCP 的 Python SDK注意要带[cli]额外依赖否则后面调试命令用不了uv add mcp[cli] uv add requests执行完你会看到目录下多了.venv文件夹依赖都装进去了。这时候打开pyproject.toml应该能看到类似这样的依赖骨架[project] name mcp-demo version 0.1.0 requires-python 3.13 dependencies [ mcp[cli]1.2.0, requests2.32.0, ]注意mcp[cli]里的方括号不能省它会把mcp命令行工具一起装上后面mcp dev调试全靠它。3. 写一个能被 AI 发现的天气工具FastMCP 是官方 SDK 里封装得比较友好的一层写工具只需要一个装饰器。在项目根目录新建server.pyfrom mcp.server.fastmcp import FastMCP import requests mcp FastMCP(weather-server) mcp.tool() def get_weather(city: str) - str: 查询指定城市的天气情况。 Args: city: 城市名称例如 北京、上海 url fhttps://wttr.in/{city}?format%C%t resp requests.get(url, timeout10) return f{city} 当前天气{resp.text.strip()} if __name__ __main__: mcp.run()这里有几个细节值得说。mcp.tool()装饰器会把函数注册成一个可被 AI 调用的工具函数名get_weather就是工具名docstring 里的描述会直接喂给模型帮它判断什么时候该调用。参数类型标注city: str也不能省MCP 靠它生成参数 schema。我用的wttr.in是个免费天气接口不需要 Key适合练手。写完先别急着接客户端用官方调试工具验证一下.\.venv\Scripts\mcp.exe dev server.pyWindows 下路径是这样macOS 或 Linux 直接uv run mcp dev server.py。命令会输出一个带 token 的本地链接按住 Ctrl 点击打开浏览器进入 MCP Inspector 页面。点 Connect状态变绿说明连上了。切到 Tools 标签点 List Tools应该能看到get_weather。选中它右侧输入北京如果一直转圈超时去左侧 Configuration 把 Request Timeout 改成 100000 毫秒再试。正常的话会返回类似北京 当前天气Partly cloudy 12°C的结果。这一步很关键很多人跳过调试直接接客户端结果工具没被发现还以为是客户端的问题。Inspector 能连上说明你的 server 本身没问题。4. 接入 TaoToken 统一 Key 通道现在 server 能跑了但模型调用还是散的。假设你在 Cherry Studio 里配了阿里云百炼、深度求索、硅基流动三家每家一个 Key换模型就要换配置。TaoToken 的思路是提供一个统一的 API 入口你只需要在它那边生成一个 Key所有兼容 OpenAI 协议的模型都走同一个地址。先去 TaoToken 官网注册并生成 API Key地址是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content登录后在控制台创建 Key。API 基础地址是https://taotoken.net/api注意这个不带 UTM 参数配置时直接用。在 Cherry Studio 里进入设置 → 模型服务添加一个自定义的 OpenAI 兼容服务。Base URL 填https://taotoken.net/apiAPI Key 填你刚生成的。模型名称按 TaoToken 文档里支持的填比如qwen-max、deepseek-chat这类。填完点检测通过后把右上角开关打开。然后配置 MCP 服务器。在 Cherry Studio 的 MCP 服务器页面点右上角图标新建把下面这段 JSON 填进去记得把command里的路径换成你自己的项目路径{ mcpServers: { weather-server: { command: uv, args: [ --directory, D:/projects/mcp_demo, run, server.py ] } } }点确定后如果配置正确页面会显示 MCP Server 已连接。这时候回到对话界面选中这个 MCP Server模型选 TaoToken 通道里的qwen-max输入北京的天气怎么样模型会自动调用get_weather工具并把结果返回给你。提示模型必须具备 function calling 能力才能调用 MCP 工具选模型时留意一下。TaoToken 通道里主流的几个模型都支持。5. 验证请求与常见报错排查配置完成后怎么确认整条链路是通的我一般分三步验证。第一步单独跑 server确认不报错uv run server.py如果卡住不动是正常的MCP server 是 stdio 模式在等客户端连接。有报错就按提示修。第二步用 Inspector 再连一次确认工具列表和调用都正常。这一步过了说明 server 本身没问题。第三步在 Cherry Studio 里发一条会触发工具调用的消息比如帮我查一下上海天气。如果模型回复里带了天气数据说明 MCP 调用成功如果模型只是泛泛而谈没调工具检查两个地方一是 MCP Server 开关有没有打开二是模型是否支持工具调用。常见的坑我列几个。报ModuleNotFoundError: No module named mcp说明你用的是系统 Python 而不是项目虚拟环境命令前加uv run就行。报连接超时多半是wttr.in网络波动把 timeout 调大或者换个接口。Cherry Studio 里 MCP 显示红色未连接九成是--directory后面的路径写错了Windows 下用正斜杠或双反斜杠。还有一种是工具被发现了但调用返回空检查函数返回值是不是字符串MCP 对返回类型有要求。如果你在接入 TaoToken 时遇到 Key 无效或 401去控制台确认 Key 有没有复制完整以及 Base URL 是不是https://taotoken.net/api。需要更细的接入说明可以看接入文档模型对话相关的调试可以去模型对话页面直接试。6. 关于长期编码与 Agent 的一点经验搭完这个 demo 你会发现MCP 真正的价值在于把本地能力标准化地暴露给 AI。今天是个天气工具明天可以是你公司的内部 API、数据库查询、文件处理脚本。一旦接入了统一 Key 通道换模型、加工具都不用再动客户端配置维护成本降很多。如果你打算把 MCP 用在长期的编码辅助或者 Agent 工作流里建议了解一下 Coding Plan它针对持续性的代码生成和工具调用场景做了优化比单次对话更适合跑长任务。API Key 的管理在 API Keys 页面接入细节在接入文档模型能力验证可以直接去模型对话试。Claude Code 相关的接入配置在 ClaudeCodeAnthropic 这个入口。最后说个我踩过的坑MCP server 的日志默认走 stderr如果你在函数里用print调试输出会混进协议消息里导致客户端解析失败。调试信息统一用sys.stderr.write或者 logging 写到文件别用 print。这个细节官方文档没怎么提但实际开发中很容易中招。
返回列表