新闻详情

新闻详情

首页 / 资讯中心 / 详情

使用fastapi-mcp改造fastapi服务为MCP服务供智能体使用案例:把Base URL改到TaoToken

发布时间:2026/10/2 14:57:59来源:尧图网络
使用fastapi-mcp改造fastapi服务为MCP服务供智能体使用案例:把Base URL改到TaoToken
1. 从 FastAPI 到 MCP为什么要把 Base URL 改到 TaoToken如果你手里已经有一套跑得好好的 FastAPI 服务接口文档齐全、参数校验清晰现在想让智能体直接调用它最省事的路径不是重写一套工具函数而是用 fastapi-mcp 把现有端点自动暴露成 MCP 工具。fastapi-mcp 是一个基于 FastAPI 的开源库它会扫描你应用里的路由把每个端点转换成 MCP 协议里的 tool保留 Swagger 的描述和参数结构智能体侧不需要你手写 function schema。但真正落地时很多人卡在同一个地方MCP 服务本身跑起来了智能体也能连上可一旦工具内部要调用大模型做推理、总结或改写Base URL 就散落在各个文件里Key 也各写各的。这时候把统一通道换成 TaoToken 就很自然——它提供 OpenAI 兼容的 Base URL 和统一 Key你只要在环境变量里改一处所有工具调用都走同一条通道。TaoToken 官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 不带多余参数。这篇内容适合三类人已经写过 FastAPI 接口、想快速接 MCP 的后端同学在搭智能体、需要把内部服务变成可插拔工具的同学以及被多家模型服务商 Base URL 不一致折腾过、想统一出口的同学。下面我会用一个「用户查询 模型润色」的最小案例把 fastapi-mcp 挂载、工具声明、Base URL 指向 TaoToken、curl 验证 MCP 端点连通性这几步完整走一遍配置片段可以直接复制。核心检索词先明确fastapi-mcp 改造 FastAPI 为 MCP 服务、MCP 服务 Base URL 配置、智能体工具调用。这三个词会贯穿全文你在搜索时也能对应到具体步骤。2. TaoToken 前置准备Key、Base URL 与 fastapi-mcp 安装在动代码之前先把两件事做完拿到 TaoToken 的 API Key以及把 fastapi-mcp 装进项目环境。TaoToken 的 Key 在控制台的 API Keys 页面创建地址是 https://taotoken.net/api-keys 创建后复制保存后面写进环境变量。Base URL 统一用 https://taotoken.net/api 注意这个地址不带任何查询参数OpenAI 兼容客户端直接填这个即可。安装 fastapi-mcp 有两种方式用 uv 的项目推荐uv add fastapi-mcp传统 pip 环境用pip install fastapi-mcp装完之后确认版本fastapi-mcp 的 API 在不同小版本间有过调整建议锁一个较新的版本pip show fastapi-mcp接下来准备环境变量。我习惯用.env加 python-dotenv你也可以直接 export。关键是三个值TaoToken 的 Key、Base URL、以及你要用的 Model ID。Model ID 按你实际开通的模型填比如常见的对话模型标识。写进.envTAOTOKEN_API_KEYsk-你的Key TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_MODEL_ID你的模型ID这里要提醒一句Base URL 末尾不要自己加/v1或斜杠TaoToken 的兼容层会按标准路径处理多写反而容易 404。Key 不要硬编码进代码提交到仓库用环境变量或密钥管理服务。如果你后面要用 Claude Code 这类客户端配置里同样填 Base URL Key Model ID 三件套缺一不可。装好之后可以先跑一个最小连通性测试确认 Key 和 Base URL 没问题再进入 fastapi-mcp 的改造。测试用 curlcurl https://taotoken.net/api/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY返回模型列表就说明通道通了。这一步别跳过后面 MCP 工具报错时你能快速判断是通道问题还是代码问题。3. 可复制配置fastapi-mcp 挂载与 Base URL 指向 TaoToken现在进入核心改造。假设你有一个现成的 FastAPI 应用里面已经有一个/query端点做数据查询。我们要做的是挂载 fastapi-mcp把端点暴露成 MCP 工具并让工具内部调用模型时走 TaoToken。先看主应用文件main.pyimport os from fastapi import FastAPI from fastapi_mcp import FastApiMCP from dotenv import load_dotenv load_dotenv() app FastAPI(titleDemo API for MCP) app.get(/query, operation_idquery_data, tags[public]) async def query_data(keyword: str): return {keyword: keyword, items: [fresult-{keyword}-1, fresult-{keyword}-2]} mcp FastApiMCP( app, nameDemo API MCP, include_tags[public], ) mcp.mount() if __name__ __main__: import uvicorn uvicorn.run(main:app, host0.0.0.0, port8000, reloadTrue)这里用include_tags[public]只暴露打了 public 标签的端点避免把管理类接口也暴露出去。operation_id会变成 MCP 工具名智能体侧看到的就是query_data。挂载后 MCP 端点默认在/mcp也就是http://127.0.0.1:8000/mcp。接下来是工具内部调用模型的部分。新建llm_client.py把 Base URL 指向 TaoTokenimport os from openai import OpenAI client OpenAI( api_keyos.getenv(TAOTOKEN_API_KEY), base_urlos.getenv(TAOTOKEN_BASE_URL, https://taotoken.net/api), ) def polish(text: str) - str: resp client.chat.completions.create( modelos.getenv(TAOTOKEN_MODEL_ID), messages[ {role: system, content: 你是一个文本润色助手只返回润色后的结果。}, {role: user, content: text}, ], temperature0.3, ) return resp.choices[0].message.content然后在 FastAPI 里加一个调用它的端点同样打上 public 标签from llm_client import polish app.post(/polish, operation_idpolish_text, tags[public]) async def polish_text(payload: dict): text payload.get(text, ) return {result: polish(text)}这样智能体通过 MCP 调用polish_text时模型请求就走 TaoToken 的 Base URLKey 也统一从环境变量取。如果你用 Cline MCP 或 Claude Code 连接配置里同样写 Base URL Key Model ID。Cline 的 MCP 配置片段{ mcpServers: { demo-api-mcp: { command: mcp-proxy, args: [http://127.0.0.1:8000/mcp] } } }Claude Code 的 settings 里如果要走 TaoTokenBase URL 填https://taotoken.net/apiKey 填你的 TaoToken KeyModel ID 填对应模型。Codex 的auth.json同理三件套齐全才能正常鉴权。这里不展开每个客户端的完整文件核心是记住Base URL、Key、Model ID 一个都不能少且 Base URL 统一指向 TaoToken。4. 验证请求curl 测 MCP 端点与智能体调用结果配置写完先别急着接智能体用 curl 把 MCP 端点连通性测一遍。fastapi-mcp 挂载后MCP 走的是 SSE 或 streamable HTTP直接 GET 可能返回 405正确做法是发一个初始化请求。先确认服务起来了curl -i http://127.0.0.1:8000/mcp如果返回 405 或 400说明端点存在但方法不对这是正常的。接着用 mcp-proxy 或支持 MCP 的客户端连接。用 mcp-proxy 做本地转发测试mcp-proxy http://127.0.0.1:8000/mcp它会列出可用的工具你应该能看到query_data和polish_text。这一步能列出工具说明 fastapi-mcp 扫描和暴露都成功了。再验证工具内部调用 TaoToken 是否通。直接调/polish端点curl -X POST http://127.0.0.1:8000/polish \ -H Content-Type: application/json \ -d {text:这个功能很好用}返回类似{result:这个功能非常实用}就说明 Base URL 和 Key 都生效了。如果返回 401检查TAOTOKEN_API_KEY是否加载如果返回 404检查 Base URL 是否多写了路径如果报reading choices通常是模型返回结构异常或 Model ID 填错。智能体侧调用示例以支持 MCP 的客户端为例连接后让它调用polish_text传入一段文本观察返回。成功时你会看到工具调用记录里出现polish_text并且结果来自 TaoToken 通道。实测下来最容易出问题的是环境变量没被 uvicorn 进程读到尤其是用reloadTrue时改完.env要重启进程。验证模型本身是否可用可以直接用模型对话页面测一下地址是 https://taotoken.net/models 确认 Model ID 和通道都正常再回到 MCP 链路排查。5. 本篇常见错排查401、local proxy failed 与 reading choices改造过程中有几类报错反复出现我按真实遇到的顺序列一下方便你对照。第一类401 Unauthorized。出现在工具调用模型时说明 TaoToken Key 没传进去。检查.env是否被load_dotenv()加载检查 uvicorn 启动目录是否和.env同级。用os.getenv(TAOTOKEN_API_KEY)打印一下如果是 None就是加载问题。另外 Key 前后有空格也会导致 401复制时注意。第二类local proxy failed。这个多出现在 mcp-proxy 连接阶段通常是 MCP 端点地址写错或者服务没监听在 127.0.0.1。确认uvicorn的 host 是0.0.0.0或127.0.0.1端口和配置一致。如果用了容器注意端口映射。还有一种情况是 mcp-proxy 版本和 fastapi-mcp 的协议版本不匹配升级 mcp-proxy 到较新版本。第三类reading choices 报错。这是 OpenAI 兼容客户端解析响应时找不到choices字段常见原因是 Base URL 指向了非兼容端点或者 Model ID 不存在导致返回了错误结构。确认 Base URL 是https://taotoken.net/apiModel ID 是你实际开通的。如果返回体里是error字段先看错误信息再改代码。第四类OAuth 相关报错。如果你用的客户端要求 OAuth 流程而 TaoToken 走的是 API Key 鉴权配置里不要开 OAuth 模式直接用 Key。Claude Code 或 Codex 的配置里如果混了 OAuth 字段删掉只保留 Base URL、Key、Model ID。第五类工具列表为空。mcp-proxy 连上了但看不到工具检查include_tags或include_operations是否过滤太狠。fastapi-mcp 的过滤是贪婪匹配include_operations和include_tags同时用时匹配任一即包含。如果你只写了include_tags[public]但端点没打标签就不会被暴露。排障时建议按链路分段先 curl 测 TaoToken 通道再 curl 测 FastAPI 端点再用 mcp-proxy 测 MCP 工具列表最后接智能体。分段定位比一次性全链路调试快得多。接入文档在 https://taotoken.net/doc 遇到鉴权和路径问题可以先翻一遍。6. 语义一致 CTA把统一通道用起来走到这里你的 FastAPI 服务已经能通过 fastapi-mcp 暴露成 MCP 工具智能体侧可以按需调用模型请求也统一走了 TaoToken 的 Base URL。后续如果你要长期跑编码类或 Agent 类任务可以考虑 Coding Plan地址是 https://taotoken.net/coding-plan 适合需要稳定通道和统一计费的场景。如果只是验证模型或临时调试用模型对话页面更快https://taotoken.net/models 。Key 管理在控制台 https://taotoken.net/console API Keys 页面 https://taotoken.net/api-keys 。接入细节和参数说明看文档 https://taotoken.net/doc 。实际用下来fastapi-mcp 最大的价值是让你不用为每个端点手写 MCP 工具声明改一处 Base URL 就能把整条模型调用链切到统一通道。你可以在llm_client.py里把 Base URL 抽成配置未来换通道只改环境变量。智能体侧的工具增删也变成配置行为不用动智能体核心代码。这套组合跑通之后再扩展新工具就是加一个 FastAPI 端点、打个标签、重启服务的事。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PICO Neo3移动VR场景性能优化实战:从帧时间账单到稳定72帧 2026/10/2 15:48:08

PICO Neo3移动VR场景性能优化实战:从帧时间账单到稳定72帧

写这篇之前,先把背景交代清楚:这个“把风格化村庄塞进 PICO Neo3”的系列,前面四篇分别处理了场景搭建、交互逻辑、手柄定位和 UI 框架。前四篇收尾时,工程里已经有了一个看起来像模像样的村庄:小房子、石头路、木栅栏…

阅读更多 →
硬件测试工程师的六大核心能力:从故障检测到设计守门 2026/10/2 15:48:07

硬件测试工程师的六大核心能力:从故障检测到设计守门

1. 硬件测试不是“通电看灯亮”,而是系统性故障预演很多人刚入行时以为硬件测试就是拿万用表测测电压、示波器看看波形,插上电,灯亮了——“OK,过!”我带过的三届应届生里,有七成在入职前三个月都卡在这个认…

阅读更多 →
55873生态:混合模型×四层智能体×安全策略编排的AI落地全解 2026/10/2 15:48:07

55873生态:混合模型×四层智能体×安全策略编排的AI落地全解

先亮个底:这个题目里的“55873 生态”,不是某个开源仓库的代号,也不是哪家云厂商的套餐编号。它是一套完整的内部体系编号—— 5 代表五个核心业务域, 5873 是我这边项目的迭代版本号,里面包含“613 混合模型 四层…

阅读更多 →
Anymaker汉化补丁实操指南:从版本匹配到界面全中文 2026/10/2 15:48:07

Anymaker汉化补丁实操指南:从版本匹配到界面全中文

先交代一个背景:前几天有位玩3D打印的朋友找我,说他在官网下载了Anymaker切片软件,打开以后界面全是英文,打印参数看得头皮发麻。他怀疑是自己下载错了版本,到处找中文包,但搜了一圈,信息七零八…

阅读更多 →
AI日报盘点:智能体训练、并发实战与AI创作工具应用指南 2026/10/2 15:48:07

AI日报盘点:智能体训练、并发实战与AI创作工具应用指南

今天的AI资讯日报,信息量比平时大不少。先是DeepSeek公开了智能体训练的新方法,紧接着“AI Agent怎么扛并发”这个话题又被翻出来热议,工具侧则是视频修复、短剧工作流、编程辅助各种更新扎堆。我花了一上午把这些热点捋了一遍,也…

阅读更多 →
PostGIS实战教程(四)叠加分析、几何修复、简化聚合+生产避坑大全 2026/10/2 15:47:54

PostGIS实战教程(四)叠加分析、几何修复、简化聚合+生产避坑大全

PostGIS实战教程(四)叠加分析、几何修复、简化聚合生产避坑大全系列专栏:PostGIS从入门到生产实战📖 开篇导语 到了项目后期,经常遇到多边形合并、区域裁剪、几何顶点太多前端卡顿、导入的面存在自相交无效几何问题。本…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉