返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

基于Dify平台开发MCP应用简要说明

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 19:18 |阅读模式 打印 上一主题 下一主题

一、MCP原理说明


【Function call的实现逻辑】:


1、在模型API调用时,传递参数tools,其中包含了可用的函数清单;


2、模型分析输入要求以及已知tools后,返回调用工具以及对应的参数;


3、根据工具调用参数调用第三方工具,并获取结果;


4、将执行结果再次提交给模型,获取最终结果;




这里存在的问题在于,步骤3中需要针对不同的工具说明,APP侧编写不同的调用代码,从而降低了通用性。


【MCP的实现逻辑】

关键角色包括:

  • MCP Server,封装外部第三方工具,执行具体的操作,并对外暴露统一接口;

  • MCP client,与MCP Server进行交互(负责实际的工具调用),同时负责调用LLM以及处理LLM结果;

  • LLM,根据工具清单,以及用户问题,判定是否调用工具;


其实现流程如下:


0、基于框架实现MCP Server,其中包含具体的第三方工具调用逻辑;


1、在应用初始化阶段,MCP client通过访问配置的Server地址,获取当前可用工具清单;


2、用户问题以及工具清单提交给LLM;


3、LLM进行逻辑分析,自行判定是否需要调用工具,并输出结果(含是否调用工具声明及具体参数)


4、MCP Client分析模型输出结果:

(1)如果需要调用工具,则根据调用声明,与MCP Server通讯调用工具,拿到执行执行结果,并交由模型进行二次判断;

(2)如果不需要调用工具,则生成结果;


5、经过多轮迭代(可能),最终返回生成结果



相比较Function call方式,通过MCP协议规范定义,这里只需要将工具封装到MCP Server中,剩余调用逻辑按照通用方式统一实现即可。不同的模型,不同的工具,只要按照MCP协议规范定义,就可以进行快速的调用。同时Java、Python等均提供了SDK,进一步对细节进行抽象,降低开发成本。


二、基于dify的MCP实践


1、编写MCP Server


基于fastmcp库编写MCP服务,提供了add()和sub()两个工具,示例代码如下:

fromfastmcpimportFastMCPmcp=FastMCP('demo_server')@mcp.tool()defadd(a,b)->int:returna+b@mcp.tool()defsub(a,b)->int:returna-bif__name__=='__main__':mcp.run(transport="sse",host="0.0.0.0",port=8088)

2、在服务器上将mcp服务启动python demo_server.py

INFO: Started server process [9888]


INFO: Waiting for application startup.


INFO: Application startup complete.


INFO: Uvicorn running on http://0.0.0.0:8088 (Press CTRL+C to quit)


说明:服务可在其他服务器上部署启动,并保证dify主机能够访问目标服务的网络访问即可


3、在Dify平台上对MCP_SSE工具进行授权

(1)在Dify开发平台,选择工具,搜索“mcp”,点击MCP SSE工具,

(2)点击“已授权”按钮

(3)配置MCP服务配置

{"compute_tools": { "url": "http://MCP Server’s IP:8088/sse", "headers": {}, "timeout": 50, "sse_read_timeout": 50}}


说明:这里允许配置多个MCP服务地址


4、通过Dify平台构建MCP应用

(1)创建chatflow应用

(2)创建工作流如下:

(3)核心Agent节点配置内容如下:

其中:

Agent策略选择“支持MCP的Agent”-ReAct

模型选择qwen3-32b,并关闭思考模式(非必须,只是为了响应快一些)

工具列表选择MCP_SSE的两个工具

MCP服务器内容配置如下


{"compute_tools":{"transport":"sse","url": "http://*.*.*.*:8088/sse"}}


指令内容输入如下:


当用户问题需要进行加法、减法计算时,调用compute_tools工具


查询内容直接配置为sys.query变量 即可


5、点击右上角预览按钮,进行功能验证

6、在预览阶段,点击AGENT可查看Agent调用详细日志(很棒的功能)

(1)点击查看策略详情:

(2)共计进行了两轮迭代,点击进一步查看

(3)可查看具体的工作日志

(4)最底层包含了Qwen3的思考过程,以及Add工具的调用过程。


以上,完成了简单的MCP服务部署,以及通过Dify平台进行MCP服务的调用,并进行工具验证以及调用日志查看。除通过MCP Server的方式提供第三方能力调用外,Dify平台本身也提供了工具插件,以及插件开发范式。可根据自身的业务需求进行灵活调用。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ