游乐游手机版
首页/AI教程/文章详情

Dify Agent 调用 Fastapi MCP Server 实战:从环境搭建到功能实现完整教程

时间:2026-06-23 14:50
FastAPI借助fastapi_mcp库可同时承载HTTP接口和MCP服务。在Dify平台配置ChatflowAgent后,成功调用该MCPServer实现工具调用。但测试显示Agent有时未展示响应结果,需进一步优化交互与反馈机制。

先说核心结论:FastAPI 框架能够非常灵活地同时承载 HTTP RESTful 接口与 MCP Server,实现方式极为简洁高效。下面直接提供完整代码与详细配置流程。

FastAPI 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 方案更为合适。

\

Dify 安装与部署详解

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 中配置大模型及 Agent

配置大模型

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

\

\

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

\

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

\

在 Dify 中配置 Ollama 大模型的具体操作如下:

\

Dify 安装 MCP 相关插件

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

\

\

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

\

配置 API Key 授权信息:

\

\

配置内容模板如下:

{
    "server_name": {
        "url": "https://192.168.43.78:8000/mcp",
        "headers": {
            "Content-Type": "application/json",
            "Authorization": "123456"
        },
        "timeout": 50,
        "sse_read_timeout": 50
    }
}

Dify 创建 Chatflow 流程

创建应用时选择 Chatflow 类型,然后输入应用名称和描述信息。

\

\

添加 Agent 节点:

\

Agent 节点的详细配置:

\

\

\

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

\

\

Dify Chatflow 中调用 MCP Server 验证

在 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。待项目顺利上线后,再整理一篇生产环境中的实战经验总结。

来源:https://cloud.tencent.com.cn/developer/article/2695211
上一篇多AI交叉验证比单模型多次采样更可靠的基础认知 下一篇全面详解MCP与Skills协议、原语与使用方式完整教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软Copilot插件安装全流程:浏览器与扩展市场配置
AI教程 · 2026-07-01

微软Copilot插件安装全流程:浏览器与扩展市场配置

围绕MicrosoftCopilot在浏览器、编辑器和扩展市场中的安装与配置,梳理账号准备、安装步骤、权限检查、常见故障及安全使用边界,适合新手快速完成AI办公工具部署。

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置
AI教程 · 2026-07-01

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置

围绕Copilot类AI办公工具的Docker部署流程,说明镜像选择、拉取校验、端口映射、数据目录挂载、环境变量配置、更新回滚与常见故障处理。

微软Copilot API密钥注册获取与国内网络配置
AI教程 · 2026-07-01

微软Copilot API密钥注册获取与国内网络配置

围绕MicrosoftCopilot相关接口接入流程,梳理账号准备、Azure资源创建、密钥获取、环境变量配置、国内网络连通性优化、常见报错处理与安全管理要点。

微软Copilot Linux部署:环境准备到后台运行全流程
AI教程 · 2026-07-01

微软Copilot Linux部署:环境准备到后台运行全流程

MicrosoftCopilot不适合按本地模型方式安装,Linux服务器更常见的是部署企业入口或集成服务。流程需完成账号授权、运行环境、服务配置、反向代理、进程守护与日志监控,并注意数据权限、访问控制和合规边界。

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤
AI教程 · 2026-07-01

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤

MicrosoftCopilot在Mac上可通过网页应用、Edge侧边栏或Microsoft365组件使用,AppleSilicon与Intel机型重点在系统版本、浏览器、账号授权和隐私设置。