偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

超實(shí)用!Dify快速接入本地MCP服務(wù)

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


Dify 可以通過插件實(shí)現(xiàn) MCP 服務(wù)調(diào)用,而被調(diào)用的 MCP 服務(wù)基本可以分為以下兩類:

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

本地 MCP 服務(wù)指的是本地通過 Java 或其他語言實(shí)現(xiàn)的 MCP 服務(wù)器端。

當(dāng)你會用 Dify 調(diào)用本地 MCP 服務(wù),也就意味著你會使用 Dify 調(diào)用通用 MCP 服務(wù)了,因為實(shí)現(xiàn)步驟和原理基本都是一樣。

一、什么是MCP?

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

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

圖片圖片

圖片

二、為什么需要MCP?

MCP 存在的意義是它解決了大模型時代最關(guān)鍵的三個問題:數(shù)據(jù)孤島、開發(fā)低效和生態(tài)碎片化等問題。

1.打破數(shù)據(jù)孤島,讓AI“連接萬物”

大模型本身無法直接訪問實(shí)時數(shù)據(jù)或本地資源(如數(shù)據(jù)庫、文件系統(tǒng)),傳統(tǒng)方式需要手動復(fù)制粘貼或定制接口。MCP 通過標(biāo)準(zhǔn)化協(xié)議,讓大模型像“插USB”一樣直接調(diào)用外部工具和數(shù)據(jù)源,例如:

  • 查天氣時自動調(diào)用氣象 API,無需手動輸入數(shù)據(jù)。
  • 分析企業(yè)數(shù)據(jù)時直接連接內(nèi)部數(shù)據(jù)庫,避免信息割裂。

2.降低開發(fā)成本,一次適配所有場景

在之前每個大模型(如 DeepSeek、ChatGPT)需要為每個工具單獨(dú)開發(fā)接口(Function Calling),導(dǎo)致重復(fù)勞動,MCP 通過統(tǒng)一協(xié)議:

  • 開發(fā)者只需寫一次 MCP 服務(wù)端,所有兼容 MCP 的模型都能調(diào)用。
  • 用戶無需關(guān)心技術(shù)細(xì)節(jié),大模型可直接操作本地文件、設(shè)計軟件等。

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

  • 安全性:MCP 內(nèi)置權(quán)限控制和加密機(jī)制,比直接開放數(shù)據(jù)庫更安全。
  • 生態(tài)統(tǒng)一:類似 USB 接口,MCP 讓不同廠商的工具能“即插即用”,避免生態(tài)分裂。

4.推動AIAgent的進(jìn)化

MCP 讓大模型從“被動應(yīng)答”變?yōu)椤爸鲃诱{(diào)用工具”,例如:

  • 自動抓取網(wǎng)頁新聞補(bǔ)充實(shí)時知識。
  • 打開 Idea 編寫一個“Hello World”的代碼。

MCP 的誕生,相當(dāng)于為AI世界建立了“通用語言”,讓模型、數(shù)據(jù)和工具能高效協(xié)作,最終釋放大模型的全部潛力。

三、MCP組成和執(zhí)行流程

MCP 架構(gòu)分為以下 3 部分:

  • 客戶端:大模型應(yīng)用(如 DeepSeek、ChatGPT)發(fā)起 MCP 協(xié)議請求。
  • 服務(wù)器端:服務(wù)器端響應(yīng)客戶端的請求,并查詢自己的業(yè)務(wù)實(shí)現(xiàn)請求處理和結(jié)果返回。

運(yùn)行流程

  1. 用戶提問 LLM。
  2. LLM 查詢 MCP 服務(wù)列表。
  3. 找到需要調(diào)用 MCP 服務(wù),調(diào)用 MCP 服務(wù)器端。
  4. MCP 服務(wù)器接收到指令。
  5. 調(diào)用對應(yīng)工具(如數(shù)據(jù)庫)執(zhí)行。
  6. 返回結(jié)果給 LLM。

四、編寫本地MCP服務(wù)

接下來,我們使用 Spring AI 來實(shí)現(xiàn)本地 MCP 服務(wù)器端,它的主要實(shí)現(xiàn)步驟如下:

  • 添加 MCP Server 依賴。
  • 設(shè)置 MCP 配置信息。
  • 編寫 MCP Server 服務(wù)代碼。
  • 將 MCP Server 進(jìn)行暴露設(shè)置。

關(guān)鍵實(shí)現(xiàn)代碼如下。

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 依賴有三種類型:

  • 標(biāo)準(zhǔn)輸入/輸出 (STDIO):spring-ai-starter-mcp-server
  • Spring MVC****(服務(wù)器發(fā)送的事件):spring-ai-starter-mcp-server-webmvc
  • Spring WebFlux(響應(yīng)式 SSE):spring-ai-starter-mcp-server-webflux

4.2 設(shè)置 MCP 配置信息

MCP Server 包含以下配置信息:

配置項

描述

默認(rèn)值

enabled

啟用/禁用 MCP 服務(wù)器

TRUE

stdio

啟用/禁用 stdio 傳輸

FALSE

name

用于標(biāo)識的服務(wù)器名稱

mcp-server

version

服務(wù)器版本

1.0.0

type

服務(wù)器類型 (SYNC/ASYNC)

SYNC

resource-change-notification

啟用資源更改通知

TRUE

prompt-change-notification

啟用提示更改通知

TRUE

tool-change-notification

啟用工具更改通知

TRUE

tool-response-mime-type

(可選)每個工具名稱的響應(yīng) MIME 類型。例如,將 mime 類型與工具名稱相關(guān)聯(lián)spring.ai.mcp.server.tool-response-mime-type.generateImage=image/pngimage/pnggenerateImage()

-

sse-message-endpoint

Web 傳輸?shù)?SSE 終端節(jié)點(diǎn)路徑

/mcp/message

其中 MCP Server 又分為以下兩種類型。

服務(wù)器類型

  • 同步服務(wù)器:默認(rèn)服務(wù)器類型,它專為應(yīng)用程序中的簡單請求-響應(yīng)模式而設(shè)計。要啟用此服務(wù)器類型,請在您的配置中設(shè)置。 激活后,它會自動處理同步工具規(guī)格的配置,spring.ai.mcp.server.type=SYNC。
  • 異步服務(wù)器:異步服務(wù)器實(shí)現(xiàn)使用非阻塞作并針對非阻塞作進(jìn)行了優(yōu)化。要啟用此服務(wù)器類型,請使用配置您的應(yīng)用程序。此服務(wù)器類型會自動設(shè)置具有內(nèi)置 Project Reactor 支持的異步工具規(guī)范,spring.ai.mcp.server.type=ASYNC。

4.3 編寫MCPServer服務(wù)代碼

編寫天氣預(yù)報查詢偽代碼:

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

import java.util.Map;

@Service
publicclass WeatherService {

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

}

4.4 將服務(wù)暴露出去

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

這樣 MCP Server 就編寫完成了。

5.Dify調(diào)用本地MCP

Dify 調(diào)用 MCP 主要步驟如下:

  • 安裝 MCP 插件。
  • 配置 MCP 服務(wù) HTTP 地址。
  • 配置 Agent 相關(guān)信息。
  • 運(yùn)行測試。

具體配置如下。

5.1 安裝 MCP 插件

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

圖片圖片

圖片

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

5.2 配置 MCP 服務(wù)地址

Dify 只支持 HTTP 協(xié)議的 MCP 服務(wù)調(diào)用,它的配置格式如下:

{
  "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 服務(wù),或者是以下 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 調(diào)用

我們創(chuàng)建的是一個 ChatFlow,執(zhí)行效果如下:

圖片圖片

圖片

執(zhí)行符合預(yù)期。

小結(jié)

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


責(zé)任編輯:武曉燕 來源: 磊哥和Java
相關(guān)推薦

2025-06-12 10:27:02

2025-05-27 00:15:07

2025-06-06 00:00:00

JavaHTTPMCP

2025-06-27 00:00:00

Dify 1.5.0AI 開發(fā)者人工智能

2023-11-02 10:14:50

TinykeysWeb應(yīng)用

2023-05-05 17:11:11

前端Mousetrap方式

2025-03-13 03:00:00

DockerAgentic工具

2025-06-19 03:30:00

智能體DifyMCP

2014-06-06 14:11:17

AnySDK

2025-03-27 08:19:53

2019-04-26 13:25:06

服務(wù)器開發(fā)工具

2025-04-14 00:40:00

2025-06-26 08:42:34

2025-02-14 09:10:47

2009-12-18 16:10:08

WSUS服務(wù)器詳細(xì)配置

2020-08-31 08:25:06

Python時間模塊開發(fā)

2025-04-14 00:22:00

2025-04-11 08:45:00

2011-10-21 07:42:46

服務(wù)器中小企業(yè)購買

2011-10-28 09:32:50

服務(wù)器監(jiān)控軟件監(jiān)控服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號