来源:互联网 更新时间:2026-06-27 07:20
先说核心结论:FastAPI框架完全可以同时承载HTTP Restful接口和MCP Server,而且实现方式非常简洁。下面直接上代码和配置流程。
代码部分如下所示,关键点在于通过fastapi_mcp库将FastAPI实例挂载为MCP服务,并且可以为每个接口设置明确的operation_id,方便大模型理解工具用途。
from datetime import datetime
import uvicorn
from fastapi import FastAPI, Depends, HTTPException, Header
from fastapi_mcp import FastApiMCP
app = FastAPI()
# 授权验证(如果不需要可以删除)
async def verify_token(authorization: str | None = Header(None)):
valid_tokens = {"123456", "abcdef"}
if authorization not in valid_tokens:
raise HTTPException(status_code=403, detail="Invalid Token")
return True
# 获取当前时间接口
@app.get("/getCurrentTime", operation_id="get_current_time")
async def get_current_time():
return {"current_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
# 获取用户信息接口(需验证token)
@app.get("/users/{user_id}", operation_id="get_user_info")
async def get_user_info(user_id: int, is_auth: bool = Depends(verify_token)):
data = {
"user_id": user_id,
"name": "wangzy",
"sex": "男",
"birthday": "2000-01-01",
}
return data
# 加法接口
@app.post("/add", operation_id="add_two_number")
async def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
# 创建MCP服务器实例并挂载(默认路径/mcp)
mcp = FastApiMCP(app)
mcp.mount()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
用Postman验证HTTP接口,正常返回数据。

Cherry Studio中配置MCP Server(如果开启了认证,需要加上Headers),配置好后可以在工具列表里看到所有HTTP Restful API同时也作为MCP工具暴露出来。


在Cherry Studio中调用MCP Server,效果如下:


需要说明的是,FastAPI的HTTP服务和MCP Server也可以分开独立部署,适合需要物理隔离或不同安全策略的场景。关于Python生态中类似方案,目前大家推荐比较多的是FastAPI+FastApiMCP或FastMCP。因为要同时兼顾HTTP API和MCP服务,所以选择FastApiMCP方案更合适。

Demo环境采用Docker Compose方式部署,详细步骤参照官方文档(https://legacy-docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose)。

克隆Dify仓库代码(当前最新版本为0.15.3):
git clone https://github.com/langgenius/dify.git --branch 0.15.3

启动Dify:

访问Dify:

配置完成后登录Dify页面如下:

在Dify主页找到设置选项,选择【模型供应商】配置,可以配置公有云大模型,也可以配置本地Ollama部署的大模型。


配置Ollama大模型时需要先安装相关插件:

需要注意:当Ollama默认监听127.0.0.1时,Dify容器内无法访问本机回环地址。解决办法是在启动Ollama前通过环境变量设置OLLAMA_HOST,然后启动ollama serve。

在Dify中配置Ollama大模型如下:

在插件市场安装MCP相关的插件后,进入配置页面。


安装完成后插件列表如下:

配置API Key授权:


配置内容模板如下:
{
"server_name": {
"url": "http://192.168.43.78:8000/mcp",
"headers": {
"Content-Type": "application/json",
"Authorization": "123456"
},
"timeout": 50,
"sse_read_timeout": 50
}
}
创建应用时选择Chatflow类型,输入名称和描述。


添加Agent节点:

Agent节点配置:



Agent试运行,可以看到大模型成功调用了之前定义的get_current_time MCP工具。


在Dify工作区找到前面配置的Chatflow【test_mcp_server】,对话框中输入问题,可以看到Agent正常调用了FastAPI启用的MCP Server并返回结果。
需要注意:测试过程中发现大约有一半的概率,Agent会给出“I am thinking about how to help you”的回应,虽然已经调用了MCP拿到了数据,但最终回答没有展示出来。推测可能是提示词或Agent的回复策略问题,后续还需要进一步排查。


这篇文章实现了一个完整的Demo:在Dify平台配置Chatflow的Agent,调用通过FastAPI启动的MCP Server。后续会基于这个Demo在公司内部实践故障诊断相关的自主规划Agent。等项目顺利投产后,再整理一篇生产环境中的实战总结。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
archiveofourown 实战指南:常见用法整理
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
作家助手如何上传自制封面 作家助手如何设置小说的封面
如何在夸克浏览器中开启网页视频的倍速播放功能?
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
全链网:黄金价格因美元的走强及利率担忧而下跌
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
美国市场:股票相对债券的风险溢价正在消失
有寓意的易经网名男生(精选100个)
电视剧《小欢喜》剧情介绍
电影《遁甲门之消失的公主》剧情介绍
动漫《柚木家的四兄弟》剧情介绍
植物娘大战僵尸电脑端与手机端存档转移的方法
网石18禁MMO《RAVEN2:渡鸦》大型更新推出全新职业“军阀”
《梦幻西游》159五开五门怎么搭配-159五开五门常见搭配
卡厄思梦境哀嚎螺旋塔攻略 哀嚎螺旋塔怎么玩
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc