当前位置: 首页 > news >正文

FastAPI-MCP构建自定义MCP工具实操指南

一、简介

  • • FastAPI-MCP是一个基于python FastAPI框架开发的开源项目,可以自动识别并暴露FastAPI接口为MCP工具

  • • 拥有FastAPI框架的所有优点,如异步高并发、独立远程部署、OpenAPI文档

  • • 提供SSE、mcp-remote接入方式,支持设置授权访问,适配各种支持MCP协议客户端

  • • FastAPI-MCP开源地址:https://github.com/tadata-org/fastapi_mcp,工作原理参考下图:

    图片

二、安装并启动示例

1. 安装fastapi-mcp

  • • 提前准备好python 3.10+、uv/pip软件环境(此处不做赘述)

  • • 直接一键安装

//安装方式1: 使用uv命令
uv add fastapi-mcp
//安装方式2:使用pip命令
pip install fastapi-mcp

2. 编写示例代码 fastapi-mcp.py,实现两个测试工具

  • • 一个获取当前时间的接口/工具(不需要授权)

  • • 一个模拟获取用户信息的/工具(需要授权)

from datetime import datetimeimport uvicorn
from fastapi import FastAPI, Depends, HTTPException, Header
from fastapi_mcp import FastApiMCPapp = FastAPI()# 授权验证,如果不需要,可以删除
asyncdefverify_token(authorization: str | None = Header(None)):# 这里替换为实际的验证逻辑,比如数据库查询,JWT验证等valid_tokens = {"123456", "abcdef"}  # 示例有效token集合if authorization notin valid_tokens:raise HTTPException(status_code=403, detail="Invalid Token")returnTrue# 注意:要设置添加明确的 operation_id 参数,这会让大模型更容易理解工具的作用
# 编写一个获取当前时间的接口
@app.get("/getCurrentTime", operation_id="get_current_time")
asyncdefget_current_time():return {"current_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}# 编写一个模拟获取用户信息的接口
@app.get("/users/{user_id}", operation_id="get_user_info")
asyncdefget_user_info(user_id: int, is_auth: bool = Depends(verify_token)):  # 验证请求头,需要授权访问# 这里的data可以替换成实际的查询数据库,这里只作为示例返回data = {"user_id": user_id,"name": "小狗狗","sex": "男","birthday": "2002-07-06",}return data# 创建 MCP 服务器实例,绑定到 FastAPI app
mcp = FastApiMCP(app)
# 挂载 MCP 服务器,默认路径是 /mcp(可以修改)
mcp.mount()if __name__ == "__main__":uvicorn.run(app, host="0.0.0.0", port=8000)

3. 启动运行测试用例

python fastapi-mcp.py 

在这里插入图片描述

4. 启动之后,可以直接访问原本FastAPI提供的在线文档、接口等

  • • 在线 Swagger 文档,访问:http://localhost:8000/docs

    在这里插入图片描述

  • • 既是MCP工具,也是正常的API接口,如下使用 Postman 访问示例

    在这里插入图片描述

三、在Cherry Studio中使用FastAPI-MCP服务

下载并安装 Cherry Studio 客户端软件,下载地址:https://www.cherry-ai.com/

在这里插入图片描述

配置使用 FastAPI-MCP 启动后提供的服务,默认MCP服务运行在:http://localhost:8000/mcp,配置如下:

  • • Cherry Studio提供的非常方便的可视化配置界面

在这里插入图片描述

  • • 实际上在其他支持SSE的MCP客户端,可以使用下面配置
{"mcpServers":{"fastapi-mcp":{"name":"fastapi-mcp","type":"sse","description":"","isActive":true,"baseUrl":"http://localhost:8000/mcp","headers":{"Content-Type":"application/json","Authorization":"123456"}}
}
  • • 配置完成后,MCP客户端可以自动请求获取到相关的MCP工具了

在这里插入图片描述

在对话中,使用fastapi-mcp工具

  • • 开启并选择fastapi-mcp工具

在这里插入图片描述

  • • 获取当前时间示例

在这里插入图片描述

  • • 获取用户ID为888888的用户信息

在这里插入图片描述

  • • 可以自动链式调用多个工具,完成复杂任务:帮我看看用户ID为888888的用户多少岁了

在这里插入图片描述

四、总结

  • • FastAPI-MCP工具可以让你开发MCP工具像开发普通接口一样,灵活扩展、适应性强

  • • 使用FastAPI-MCP,可以快速搭建起自己的私有MCP工具集,独立部署、远程访问

http://www.xdnf.cn/news/1052425.html

相关文章:

  • 敏捷开发的特点
  • 【计算机 电脑任务管理器中,性能界面的各项指标的含义及影响】
  • idea2024使用卡顿
  • 《k8s 部署》常见报错类型1
  • 华为OD-2024年E卷-英文输入法[100分] -- python
  • [Java 基础]日期时间
  • 力扣的SQL
  • Spring AI 对话记忆持久化实战-MySQL方案
  • 【分析学】 从确界定理出发——实数系完备定理
  • Proteus8.17仿真51单片机驱动ST7920 LCD12864
  • MyBatisPlus 全面学习路径
  • 《仿盒马》app开发技术分享-- 回收金提现记录查询(端云一体)
  • java 集合 泛型
  • 第2讲、LangChain应用架构与核心组件:构建LLM应用的基石
  • 访问网页的全过程
  • 电脑端应用使用统计工具,精准分析你的习惯
  • wordpress外贸独立站搭建步骤
  • Appium框架下载时卡主的解决办法(ERR_TLS_CERT_ALTNAME_INVALID)
  • kicad运行时出错,_Pnext->_Myproxy = nullptr;访问内存出错解决措施
  • 华为OD机试_2025 B卷_磁盘容量排序(Python,100分)(附详细解题思路)
  • 互联网大厂Java求职面试:AI与大模型技术在电商系统中的架构设计与性能优化
  • ​​信息系统项目管理师-项目整合管理 知识点总结与例题分析​​
  • C++多线程与并发中线程池设计、锁优化
  • Linux入门(十八)read函数
  • 第十六届蓝桥杯国赛(2025)C/C++B组 蓝桥星数字 独家解析
  • Python 基础语法 (4)【适合0基础】
  • 幻休 v3.0.02 | AI趣味呼吸 助眠音乐 冥想音频
  • Java微服务框架技术选型全景报告
  • LangGraph--Agent常见的模式2(并行、数据路由)
  • 链表(C语言)—学习笔记