成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超實用!Dify快速接入本地MCP服務

人工智能
Dify 調用 MCP 服務主要依靠的是 HTTP 地址和 MCP 協議,對于用戶來說他面向的是大模型,對于程序來說是大模型調用了 MCP 服務,所以大模型端也就是 MCP 的客戶端。我們會調用本地 MCP 服務了,那么問題來了,如何調用通用的 MCP 服務呢?


Dify 可以通過插件實現 MCP 服務調用,而被調用的 MCP 服務基本可以分為以下兩類:

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

本地 MCP 服務指的是本地通過 Java 或其他語言實現的 MCP 服務器端。

當你會用 Dify 調用本地 MCP 服務,也就意味著你會使用 Dify 調用通用 MCP 服務了,因為實現步驟和原理基本都是一樣。

一、什么是MCP?

MCP 是 Model Context Protocol,模型上下文協議,它是由 Anthropic(Claude 大模型母公司)提出的開放協議,用于大模型連接外部“數據源”的一種協議。

它可以通俗的理解為 Java 界的 Spring Cloud Openfeign,只不過 Openfeign 是用于微服務通訊的,而 MCP 用于大模型通訊的,但它們都是為了通訊獲取某項數據的一種機制,如下圖所示:

圖片圖片

圖片

二、為什么需要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世界建立了“通用語言”,讓模型、數據和工具能高效協作,最終釋放大模型的全部潛力。

三、MCP組成和執行流程

MCP 架構分為以下 3 部分:

  • 客戶端:大模型應用(如 DeepSeek、ChatGPT)發起 MCP 協議請求。
  • 服務器端:服務器端響應客戶端的請求,并查詢自己的業務實現請求處理和結果返回。

運行流程

  1. 用戶提問 LLM。
  2. LLM 查詢 MCP 服務列表。
  3. 找到需要調用 MCP 服務,調用 MCP 服務器端。
  4. MCP 服務器接收到指令。
  5. 調用對應工具(如數據庫)執行。
  6. 返回結果給 LLM。

四、編寫本地MCP服務

接下來,我們使用 Spring AI 來實現本地 MCP 服務器端,它的主要實現步驟如下:

  • 添加 MCP Server 依賴。
  • 設置 MCP 配置信息。
  • 編寫 MCP Server 服務代碼。
  • 將 MCP Server 進行暴露設置。

關鍵實現代碼如下。

4.1 添加 MCP Server 依賴

<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服務代碼

編寫天氣預報查詢偽代碼:

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
publicclass WeatherService {

    @Tool(description = "根據城市名稱獲取天氣預報")
    public String getWeatherByCity(String city) {
        Map<String, String> mockData = Map.of(
            "西安", "晴天",
            "北京", "小雨",
            "上海", "大雨"
        );
        return mockData.getOrDefault(city, "抱歉:未查詢到對應城市!");
    }

}

4.4 將服務暴露出去

@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}

這樣 MCP Server 就編寫完成了。

5.Dify調用本地MCP

Dify 調用 MCP 主要步驟如下:

  • 安裝 MCP 插件。
  • 配置 MCP 服務 HTTP 地址。
  • 配置 Agent 相關信息。
  • 運行測試。

具體配置如下。

5.1 安裝 MCP 插件

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

圖片圖片

圖片

MCP SSE 選裝,非必須,可以為后續 Agent 提供 MCP 工具列表,方便 LLM 正確理解和調用工具。

5.2 配置 MCP 服務地址

Dify 只支持 HTTP 協議的 MCP 服務調用,它的配置格式如下:

{
  "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 格式也支持:

{
  "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 服務呢?


責任編輯:武曉燕 來源: 磊哥和Java
相關推薦

2025-06-12 10:27:02

2025-05-27 00:15:07

2025-06-06 00:00:00

JavaHTTPMCP

2023-05-05 17:11:11

前端Mousetrap方式

2023-11-02 10:14:50

TinykeysWeb應用

2014-06-06 14:11:17

AnySDK

2019-04-26 13:25:06

服務器開發工具

2025-02-14 09:10:47

2025-03-13 03:00:00

DockerAgentic工具

2009-12-18 16:10:08

WSUS服務器詳細配置

2025-03-27 08:19:53

2020-08-31 08:25:06

Python時間模塊開發

2022-09-28 09:43:35

服務限流

2022-09-28 07:18:34

服務限流部署

2011-10-21 07:42:46

服務器中小企業購買

2011-10-28 09:32:50

服務器監控軟件監控服務器

2025-01-07 09:00:00

2022-07-11 09:36:38

SpringJava開發

2023-01-29 09:18:14

ScrollendJavaScript事件

2022-07-29 09:01:20

Chrome試源代碼調試技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人深夜福利在线观看 | 午夜免费在线 | 四色永久 | 久久精品成人 | 国产91久久久久久 | 欧美男人的天堂 | 天天操夜夜艹 | 91精品www | 99色在线| 亚洲免费网 | 999视频 | 中文字幕亚洲精品 | 色频 | 亚洲精品欧美一区二区三区 | 免费午夜视频在线观看 | 国产一区二区三区在线免费观看 | 日韩欧美电影在线 | 天天天天操 | 日批的视频 | 国产免费视频 | 久久久国产一区二区三区 | 欧美日韩亚洲国产 | 伊人看片 | 中文久久 | 久久99精品久久久久子伦 | 国产成人在线一区二区 | 亚洲免费观看视频 | 午夜视频精品 | 日韩三区| h网站在线观看 | 日韩国产欧美在线观看 | 天天躁日日躁xxxxaaaa | 国产欧美日韩一区 | 免费啪啪 | 一区二区三区精品在线视频 | 亚洲一一在线 | 免费啪啪 | 狠狠色综合久久丁香婷婷 | 午夜精品一区二区三区免费视频 | 亚洲国产精品人人爽夜夜爽 | 精品久久香蕉国产线看观看亚洲 |