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

Dify 快速上手 MCP!Java 搭建 MCP Server 接入 Dify详细实战攻略

近期,MCP协议在AI领域热度飙升,成为众多开发者和行业人士热议的焦点。下文先介绍MCP究竟是什么?再详细讲下 Dify + DeepSeek + Java开发 MCP server 实战。

一、MCP的基本概念

MCP,全称为模型上下文协议(Model Context Protocol),是由Anthropic推出的开放标准协议。其核心目标,是打破大型语言模型(LLMs)与外部数据源、工具之间的交互壁垒,实现高效、无缝的连接。

想象一下,在AI的世界里,MCP就像是一个万能适配器。它赋予智能模型如同使用USB接口般的便捷性,让模型能够轻松适配各类设备与服务,极大地拓展了AI的应用边界。

官网链接

https://modelcontextprotocol.io/introduction,想要深入了解MCP的朋友,可以前往官网查阅更多详细信息。

二、MCP的核心定义

从协议本质来看,MCP致力于统一应用程序为大语言模型提供上下文的模式。如果将其类比到日常生活中的设备,MCP恰似AI应用领域的USB-C接口

我们知道,USB-C接口凭借标准化设计,实现了设备与众多外设(如鼠标、键盘、音响、硬盘等)的快速、稳定连接。而MCP同样以标准化的连接方式,助力AI模型自如对接多元数据源与工具,让AI模型不再“孤立无援”。

三、MCP的实际应用价值

简而言之,MCP就是AI调用服务的“智能连接器”。通过这一协议,AI模型与各类数据源、工具间的连接变得简单高效。

无论是调用天气API获取实时气象数据,还是实现数据库的高效查询,亦或是对接其他外部服务,MCP都能以标准化路径,帮助AI模型轻松完成任务。这使得AI应用的开发与落地更加灵活、便捷,为AI技术的广泛应用提供了强大助力。

Spring MCP Server

Spring AI 刚好就有 MCP Server Boot Starter 模块,直接拿来用就行了:

https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html

Spring MCP Server 提供了三种不同的模式:

  • Standard Input/Output (STDIO) 

   spring-ai-starter-mcp-server(适合简单的本地开发和单进程通信)

  • Spring MVC (Server-Sent Events) 

   spring-ai-starter-mcp-server-webmvc(适合传统的基于 Servlet 的 Web 应用,支持同步模式)

  • Spring WebFlux (Reactive SSE) 

   spring-ai-starter-mcp-server-webflux(适合高性能、高并发的响应式应用,支持异步模式)

用Java创建MCP服务

创建MCP服务不用从头开始,Spring官方有现成的例子,我们拿来改一下就行了。

下载代码:

https://github.com/spring-projects/spring-ai-examples

找到starter-webmvc-server项目:

1、打开项目后,我们先运行 McpServerApplication.java

2、MCP服务运行成功。

3、添加自己的MCP服务

好了,现在我们可以添加我们自己的MCP服务了。

我们新增一个BIService类,在类上标注@Service注解,然后新增getProjectInfoByCustomerName和getProjectInfoByContractNum方法,模拟从数据库中查询项目信息。

注意,要让大模型能识别方法,必须在方法名上面添加@Tool注解。

@Tool注解的关键信息如下:

• name工具的名称。如果未提供,则使用方法名称。AI 模型使用此名称来识别调用该工具的工具。因此,同一个类中不允许有两个同名的工具。对于特定的聊天请求,该名称在模型可用的所有工具中必须是唯一的。

• description:工具的描述,模型可以通过该描述了解何时以及如何调用该工具。如果未提供,则方法名称将用作工具描述。但是,强烈建议提供详细的描述,因为这对于模型理解工具的用途及其使用方法至关重要。如果描述不充分,可能会导致模型在应该使用工具时不使用它,或者错误地使用它。

• returnDirect:工具结果应直接返回给客户端还是传递回模型。有关更多详细信息,请参阅直接返回。

• resultConverter:ToolCallResultConverter用于将工具调用的结果转换为可String object发送回 AI 模型的实现。更多详情,请参阅结果转换。

强烈建议仔细填写description内容。

最后我们还要在McpServerApplication类中,提供一个ToolCallbackProvider。

4、配置Dify MCP客户端

要测试我们的MCP服务还需要一个MCP客户端,Dify刚好有MCP客户端的插件,我们来安装一下。

打开Dify的插件页面,搜索MCP,安装Agent 策略(支持 MCP 工具)和 MCP SSE / StreamableHTTP插件。

5、新建一个空白ChatFlow流程

在模型下拉框中选个你喜欢的大模型,由于我们是直接调用MCP服务,大模型的作用其实就是帮我们选择具体的工具和提取参数,没必要用推理能力,用了推理大模型反而会影响选择工具的准确性。

所以,我这里没有选DeepSeek推理大模型,我选的是豆包大模型。

工具列表选择插件里的“获取MCP工具列表”:

点击“获取MCP工具列表”工具,点击“授权”按钮,添加MCP服务的连接信息:

6、MCP 服务配置

先测试自己本地代码的MCPserver是否正常

正常后再Dify 做配置

6、MCP 服务配置后进行指令配置

接下来是配置的重点了。首先把“Agent”节点连接到“开始节点”和“直接回复节点”中间:

指令栏填写:

指令的重点就是先让大模型分析用户输入的内容(sys.query),然后告诉大模型什么情况下要调用什么工具,把工具的名称告诉大模型,最好能给出几个例子,让大模型更好的理解。

最后让大模型优化输出格式,比如用表格输出。

测试看效果

全部设置好之后,整个工作流就三个节点,现在可以点预览按钮测试了:

最后

通过这个例子,我们创建了一个MCP服务,并通过Dify客户端成功调用。

用Java写MCP服务,我们只需要在Spring AI项目的基础上添加自己的Service,然后在Service里添加业务数据查询的工具就行了。

这样我们就能实现AI业务数据查询(问数)的功能啦!

如果对文章感兴趣请关注我,如果觉得有收获打个赏哈,定期发布最详细的MCP集成Dify的实战教程!

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

相关文章:

  • vue中列表filter方法的作用
  • 深入探讨redis:哨兵模式
  • linux下jenkins部署安装使用
  • 上肢康复机器人设计与临床应用研究
  • 达梦数据库线上体验:高度兼容Oracle语法
  • 家电行业数字化实践案例 | 易趋携手某知名家电集团打造数字化项目管理系统
  • 如何看待镍钯金PCB在当代工业制造中的地位和应用?
  • Python 数据库编程
  • Java 04 API
  • 【信息系统项目管理师】第12章:项目质量管理 - 26个经典题目及详解
  • Agent_Attention线性注意力推导
  • ubuntu terminal 查看opencv 版本,或者其他相关库或者包
  • 【LUT技术专题】DnLUT代码解读
  • UniVLA-香港大学-单系统带导航-2025.5.9-开源
  • 通过两个列表构建字典(python极其详细)
  • Redis哨兵(Sentinel)模式详解:构建高可用Redis架构
  • Oracle RAC ADG备库版本降级方案(19.20 → 19.7)
  • 大模型预训练、微调、强化学习、评估指导实践
  • 学习黑客 TELNET 来龙去脉
  • 5.2.4 wpf中MultiBinding的使用方法
  • 宝塔+fastadmin:给项目添加定时任务
  • Spring Boot 使用 jasypt配置明文密码加密
  • 第6章 C控制语句:循环
  • 攻防世界-题目名称-文件包含
  • MySQL 库的操作 -- 字符集和校验规则,库的增删查改,数据库的备份和还原
  • Java IO流操作
  • Prosys OPC:引领工业互联的OPC UA先锋
  • 游戏引擎学习第296天:层的雾效和透明度
  • 基于Spring Boot + Vue的教师工作量管理系统设计与实现
  • 监控易一体化运维:解锁工单管理效能,为运维工作提速