超实用!Dify快速接入本地MCP服务

Dify 可以通过插件实现 MCP 服务调用,而被调用的 MCP 服务基本可以分为以下两类:

  1. 通用 MCP 服务(非本地 MCP 服务)。
  2. 本地 MCP 服务。

本地 MCP 服务指的是本地通过 Java 或其他语言实现的 MCP 服务器端。

当你会用 Dify 调用本地 MCP 服务,也就意味着你会使用 Dify 调用通用 MCP 服务了,因为实现步骤和原理基本都是一样。

1.什么是MCP?

MCP 是 Model Context Protocol,模型上下文协议,它是由 Anthropic(Claude 大模型母公司)提出的开放协议,用于大模型连接外部"数据源"的一种协议。

它可以通俗的理解为 Java 界的 Spring Cloud Openfeign,只不过 Openfeign 是用于微服务通讯的,而 MCP 用于大模型通讯的,但它们都是为了通讯获取某项数据的一种机制,如下图所示:

2.为什么需要MCP?

MCP 存在的意义是它解决了大模型时代最关键的三个问题:数据孤岛 、开发低效和生态碎片化等问题。

1.打破数据孤岛,让AI"连接万物"

大模型本身无法直接访问实时数据或本地资源(如数据库、文件系统),传统方式需要手动复制粘贴或定制接口。MCP 通过标准化协议,让大模型像"插USB"一样直接调用外部工具和数据源,例如:

  • 查天气时自动调用气象 API,无需手动输入数据。
  • 分析企业数据时直接连接内部数据库,避免信息割裂。

2.降低开发成本,一次适配所有场景

在之前每个大模型(如 DeepSeek、ChatGPT)需要为每个工具单独开发接口(Function Calling),导致重复劳动,MCP 通过统一协议:

  • 开发者只需写一次 MCP 服务端,所有兼容 MCP 的模型都能调用。
  • 用户无需关心技术细节,大模型可直接操作本地文件、设计软件等。

3.提升安全性与互操作性

  • 安全性:MCP 内置权限控制和加密机制,比直接开放数据库更安全。
  • 生态统一:类似 USB 接口,MCP 让不同厂商的工具能"即插即用",避免生态分裂。

4.推动AIAgent的进化

MCP 让大模型从"被动应答"变为"主动调用工具",例如:

  • 自动抓取网页新闻补充实时知识。
  • 打开 Idea 编写一个"Hello World"的代码。

MCP 的诞生,相当于为AI世界建立了"通用语言",让模型、数据和工具能高效协作,最终释放大模型的全部潜力。

3.MCP组成和执行流程

MCP 架构分为以下 3 部分:

  • 客户端:大模型应用(如 DeepSeek、ChatGPT)发起 MCP 协议请求。
  • 服务器端:服务器端响应客户端的请求,并查询自己的业务实现请求处理和结果返回。

运行流程

  1. 用户提问 LLM。
  2. LLM 查询 MCP 服务列表。
  3. 找到需要调用 MCP 服务,调用 MCP 服务器端。
  4. MCP 服务器接收到指令。
  5. 调用对应工具(如数据库)执行。
  6. 返回结果给 LLM。

4.编写本地MCP服务

接下来,我们使用 Spring AI 来实现本地 MCP 服务器端,它的主要实现步骤如下:

  1. 添加 MCP Server 依赖。
  2. 设置 MCP 配置信息。
  3. 编写 MCP Server 服务代码。
  4. 将 MCP Server 进行暴露设置。

关键实现代码如下。

4.1 添加 MCP Server 依赖

xml 复制代码
<dependencies>
  <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
  </dependency>
</dependencies>

<repositories>
  <repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
  </repository>
</repositories>

MCP Server 依赖有三种类型:

  • 标准输入/输出 (STDIO) :spring-ai-starter-mcp-server
  • Spring MVC**(服务器发送的事件)** :spring-ai-starter-mcp-server-webmvc
  • Spring WebFlux(响应式 SSE) :spring-ai-starter-mcp-server-webflux

4.2 设置 MCP 配置信息

MCP Server 包含以下配置信息:

配置项 描述 默认值
enabled 启用/禁用 MCP 服务器 TRUE
stdio 启用/禁用 stdio 传输 FALSE
name 用于标识的服务器名称 mcp-server
version 服务器版本 1.0.0
type 服务器类型 (SYNC/ASYNC) SYNC
resource-change-notification 启用资源更改通知 TRUE
prompt-change-notification 启用提示更改通知 TRUE
tool-change-notification 启用工具更改通知 TRUE
tool-response-mime-type (可选)每个工具名称的响应 MIME 类型。例如,将 mime 类型与工具名称相关联spring.ai.mcp.server.tool-response-mime-type.generateImage=image/pngimage/pnggenerateImage() -
sse-message-endpoint Web 传输的 SSE 终端节点路径 /mcp/message

其中 MCP Server 又分为以下两种类型。

服务器类型
  • 同步服务器:默认服务器类型,它专为应用程序中的简单请求-响应模式而设计。要启用此服务器类型,请在您的配置中设置。 激活后,它会自动处理同步工具规格的配置,spring.ai.mcp.server.type=SYNC。
  • 异步服务器: 异步服务器实现使用非阻塞作并针对非阻塞作进行了优化。要启用此服务器类型,请使用配置您的应用程序。此服务器类型会自动设置具有内置 Project Reactor 支持的异步工具规范,spring.ai.mcp.server.type=ASYNC。

4.3 编写MCPServer服务代码

编写天气预报查询伪代码:

typescript 复制代码
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
public class WeatherService {

    @Tool(description = "根据城市名称获取天气预报")
    public String getWeatherByCity(String city) {
        Map<String, String> mockData = Map.of(
            "西安", "晴天",
            "北京", "小雨",
            "上海", "大雨"
        );
        return mockData.getOrDefault(city, "抱歉:未查询到对应城市!");
    }

}

4.4 将服务暴露出去

scss 复制代码
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}

这样 MCP Server 就编写完成了。

5.Dify调用本地MCP

Dify 调用 MCP 主要步骤如下:

  1. 安装 MCP 插件。
  2. 配置 MCP 服务 HTTP 地址。
  3. 配置 Agent 相关信息。
  4. 运行测试。

具体配置如下。

5.1 安装 MCP 插件

安装 Agent 策略(支持 MCP 工具)如下图所示:

MCP SSE 选装,非必须,可以为后续 Agent 提供 MCP 工具列表,方便 LLM 正确理解和调用工具。

5.2 配置 MCP 服务地址

Dify 只支持 HTTP 协议的 MCP 服务调用,它的配置格式如下:

json 复制代码
{
  "server_name1": {
    "transport": "sse",
    "url": "http://127.0.0.1:8000/sse",
    "headers": {},
    "timeout": 50,
    "sse_read_timeout": 50
  },
  "server_name2": {
    "transport": "sse",
    "url": "http://127.0.0.1:8001/sse"
  },
  "server_name3": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8002/mcp",
    "headers": {},
    "timeout": 50
  },
  "server_name4": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8003/mcp"
  }
}

支持配置多个 MCP 服务,或者是以下 JSON 格式也支持:

json 复制代码
{
  "mcpServers": {
      "server_name1": {
        "transport": "sse",
        "url": "http://127.0.0.1:8000/sse",
        "headers": {},
        "timeout": 50,
        "sse_read_timeout": 50
      },
      "server_name2": {
        "transport": "sse",
        "url": "http://127.0.0.1:8001/sse"
      },
      "server_name3": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8002/mcp",
        "headers": {},
        "timeout": 50
      },
      "server_name4": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8003/mcp"
      }
    }
}

5.3 配置 Agent

Agent 需要配置的项目比较多,首先是 Agent 策略:

然后是 LLM,选择合适的大模型即可,之后配置 MCP 工具和 HTTP 地址,如下图所示:

之后配置指令和查询问题:

5.4 测试 MCP 调用

我们创建的是一个 ChatFlow,执行效果如下:

执行符合预期。

小结

Dify 调用 MCP 服务主要依靠的是 HTTP 地址和 MCP 协议,对于用户来说他面向的是大模型,对于程序来说是大模型调用了 MCP 服务,所以大模型端也就是 MCP 的客户端。我们会调用本地 MCP 服务了,那么问题来了,如何调用通用的 MCP 服务呢?

Dify 可以通过插件实现 MCP 服务调用,而被调用的 MCP 服务基本可以分为以下两类:

  1. 通用 MCP 服务(非本地 MCP 服务)。
  2. 本地 MCP 服务。

本地 MCP 服务指的是本地通过 Java 或其他语言实现的 MCP 服务器端。

当你会用 Dify 调用本地 MCP 服务,也就意味着你会使用 Dify 调用通用 MCP 服务了,因为实现步骤和原理基本都是一样。

1.什么是MCP?

MCP 是 Model Context Protocol,模型上下文协议,它是由 Anthropic(Claude 大模型母公司)提出的开放协议,用于大模型连接外部"数据源"的一种协议。

它可以通俗的理解为 Java 界的 Spring Cloud Openfeign,只不过 Openfeign 是用于微服务通讯的,而 MCP 用于大模型通讯的,但它们都是为了通讯获取某项数据的一种机制,如下图所示:

2.为什么需要MCP?

MCP 存在的意义是它解决了大模型时代最关键的三个问题:数据孤岛 、开发低效和生态碎片化等问题。

1.打破数据孤岛,让AI"连接万物"

大模型本身无法直接访问实时数据或本地资源(如数据库、文件系统),传统方式需要手动复制粘贴或定制接口。MCP 通过标准化协议,让大模型像"插USB"一样直接调用外部工具和数据源,例如:

  • 查天气时自动调用气象 API,无需手动输入数据。
  • 分析企业数据时直接连接内部数据库,避免信息割裂。

2.降低开发成本,一次适配所有场景

在之前每个大模型(如 DeepSeek、ChatGPT)需要为每个工具单独开发接口(Function Calling),导致重复劳动,MCP 通过统一协议:

  • 开发者只需写一次 MCP 服务端,所有兼容 MCP 的模型都能调用。
  • 用户无需关心技术细节,大模型可直接操作本地文件、设计软件等。

3.提升安全性与互操作性

  • 安全性:MCP 内置权限控制和加密机制,比直接开放数据库更安全。
  • 生态统一:类似 USB 接口,MCP 让不同厂商的工具能"即插即用",避免生态分裂。

4.推动AIAgent的进化

MCP 让大模型从"被动应答"变为"主动调用工具",例如:

  • 自动抓取网页新闻补充实时知识。
  • 打开 Idea 编写一个"Hello World"的代码。

MCP 的诞生,相当于为AI世界建立了"通用语言",让模型、数据和工具能高效协作,最终释放大模型的全部潜力。

3.MCP组成和执行流程

MCP 架构分为以下 3 部分:

  • 客户端:大模型应用(如 DeepSeek、ChatGPT)发起 MCP 协议请求。
  • 服务器端:服务器端响应客户端的请求,并查询自己的业务实现请求处理和结果返回。

运行流程

  1. 用户提问 LLM。
  2. LLM 查询 MCP 服务列表。
  3. 找到需要调用 MCP 服务,调用 MCP 服务器端。
  4. MCP 服务器接收到指令。
  5. 调用对应工具(如数据库)执行。
  6. 返回结果给 LLM。

4.编写本地MCP服务

接下来,我们使用 Spring AI 来实现本地 MCP 服务器端,它的主要实现步骤如下:

  1. 添加 MCP Server 依赖。
  2. 设置 MCP 配置信息。
  3. 编写 MCP Server 服务代码。
  4. 将 MCP Server 进行暴露设置。

关键实现代码如下。

4.1 添加 MCP Server 依赖

xml 复制代码
<dependencies>
  <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
  </dependency>
</dependencies>

<repositories>
  <repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
  </repository>
</repositories>

MCP Server 依赖有三种类型:

  • 标准输入/输出 (STDIO) :spring-ai-starter-mcp-server
  • Spring MVC**(服务器发送的事件)** :spring-ai-starter-mcp-server-webmvc
  • Spring WebFlux(响应式 SSE) :spring-ai-starter-mcp-server-webflux

4.2 设置 MCP 配置信息

MCP Server 包含以下配置信息:

配置项 描述 默认值
enabled 启用/禁用 MCP 服务器 TRUE
stdio 启用/禁用 stdio 传输 FALSE
name 用于标识的服务器名称 mcp-server
version 服务器版本 1.0.0
type 服务器类型 (SYNC/ASYNC) SYNC
resource-change-notification 启用资源更改通知 TRUE
prompt-change-notification 启用提示更改通知 TRUE
tool-change-notification 启用工具更改通知 TRUE
tool-response-mime-type (可选)每个工具名称的响应 MIME 类型。例如,将 mime 类型与工具名称相关联spring.ai.mcp.server.tool-response-mime-type.generateImage=image/pngimage/pnggenerateImage() -
sse-message-endpoint Web 传输的 SSE 终端节点路径 /mcp/message

其中 MCP Server 又分为以下两种类型。

服务器类型
  • 同步服务器:默认服务器类型,它专为应用程序中的简单请求-响应模式而设计。要启用此服务器类型,请在您的配置中设置。 激活后,它会自动处理同步工具规格的配置,spring.ai.mcp.server.type=SYNC。
  • 异步服务器: 异步服务器实现使用非阻塞作并针对非阻塞作进行了优化。要启用此服务器类型,请使用配置您的应用程序。此服务器类型会自动设置具有内置 Project Reactor 支持的异步工具规范,spring.ai.mcp.server.type=ASYNC。

4.3 编写MCPServer服务代码

编写天气预报查询伪代码:

typescript 复制代码
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
public class WeatherService {

    @Tool(description = "根据城市名称获取天气预报")
    public String getWeatherByCity(String city) {
        Map<String, String> mockData = Map.of(
            "西安", "晴天",
            "北京", "小雨",
            "上海", "大雨"
        );
        return mockData.getOrDefault(city, "抱歉:未查询到对应城市!");
    }

}

4.4 将服务暴露出去

scss 复制代码
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}

这样 MCP Server 就编写完成了。

5.Dify调用本地MCP

Dify 调用 MCP 主要步骤如下:

  1. 安装 MCP 插件。
  2. 配置 MCP 服务 HTTP 地址。
  3. 配置 Agent 相关信息。
  4. 运行测试。

具体配置如下。

5.1 安装 MCP 插件

安装 Agent 策略(支持 MCP 工具)如下图所示:

MCP SSE 选装,非必须,可以为后续 Agent 提供 MCP 工具列表,方便 LLM 正确理解和调用工具。

5.2 配置 MCP 服务地址

Dify 只支持 HTTP 协议的 MCP 服务调用,它的配置格式如下:

json 复制代码
{
  "server_name1": {
    "transport": "sse",
    "url": "http://127.0.0.1:8000/sse",
    "headers": {},
    "timeout": 50,
    "sse_read_timeout": 50
  },
  "server_name2": {
    "transport": "sse",
    "url": "http://127.0.0.1:8001/sse"
  },
  "server_name3": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8002/mcp",
    "headers": {},
    "timeout": 50
  },
  "server_name4": {
    "transport": "streamable_http",
    "url": "http://127.0.0.1:8003/mcp"
  }
}

支持配置多个 MCP 服务,或者是以下 JSON 格式也支持:

json 复制代码
{
  "mcpServers": {
      "server_name1": {
        "transport": "sse",
        "url": "http://127.0.0.1:8000/sse",
        "headers": {},
        "timeout": 50,
        "sse_read_timeout": 50
      },
      "server_name2": {
        "transport": "sse",
        "url": "http://127.0.0.1:8001/sse"
      },
      "server_name3": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8002/mcp",
        "headers": {},
        "timeout": 50
      },
      "server_name4": {
        "transport": "streamable_http",
        "url": "http://127.0.0.1:8003/mcp"
      }
    }
}

5.3 配置 Agent

Agent 需要配置的项目比较多,首先是 Agent 策略:

然后是 LLM,选择合适的大模型即可,之后配置 MCP 工具和 HTTP 地址,如下图所示:

之后配置指令和查询问题:

5.4 测试 MCP 调用

我们创建的是一个 ChatFlow,执行效果如下:

执行符合预期。

小结

Dify 调用 MCP 服务主要依靠的是 HTTP 地址和 MCP 协议,对于用户来说他面向的是大模型,对于程序来说是大模型调用了 MCP 服务,所以大模型端也就是 MCP 的客户端。我们会调用本地 MCP 服务了,那么问题来了,如何调用通用的 MCP 服务呢?

我们该怎样系统的去转行学习大模型 ?

很多想入行大模型的人苦于现在网上的大模型老课程老教材,学也不是不学也不是, 基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近100余次后,终于把整个AI大模型的学习门槛,降到了最低!

在这个版本当中:

第一您不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程 已经给大家整理并打包,现在将这份 LLM大模型资料 拿出来: 😝有需要的小伙伴,可以 在这 🆓**↓↓↓**

一、大模型经典书籍(免费分享)

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

二、640套大模型报告(免费分享)

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

三、大模型系列视频教程(免费分享)

四、2025最新大模型学习路线(免费分享)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1阶段:启航篇丨极速破界AI新时代

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体。

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调。

L5阶段:专题集丨特训篇 【录播课】

现在将这份 LLM大模型资料 拿出来: 😝有需要的小伙伴,可以 在这 🆓**↓↓↓**

相关推荐
AI大模型2 小时前
大厂LLM应用岗上岸面经:面28家拿offer,拆解“必问考点+避坑指南”
程序员·llm·agent
没用的阿星2 小时前
阿里发布Qwen3-Coder,效果比肩claude 4!
llm
阿星AI工作室2 小时前
扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
llm·agent·产品
小小小小小鹿3 小时前
Ai入门-搭建一个专属的ai学习助手
llm·ai编程
SelectDB3 小时前
Apache Doris Data Agent 解决方案:开启智能运维与数据治理新纪元
github·apache·mcp
月小水长3 小时前
面试了全球首个 AI 全栈高级 IDE CodeBuddy,当场就下了 Offer
面试·程序员
陈随易3 小时前
牛回,速归!VSCode开启AI的野兽模式究竟有多强
前端·后端·程序员
r0ad4 小时前
四大主流AI Agent框架选型梳理
llm·agent
陈佬昔没带相机5 小时前
Dify MCP功能实测,小参数模型竟然全军覆没!
ollama·deepseek·mcp
智泊AI5 小时前
GPU并行计算是什么?GPU并行计算的原理是什么?
llm