【AI智能體】Dify 開發與集成MCP服務實戰操作詳解

目錄

一、前言

二、Dify 介紹

2.1 Dify是什么

2.2?MCP 介紹

2.2.1 什么是MCP

2.2.2 MCP核心特性

2.3 Dify中開發與使用MCP介紹

2.3.1 MCP Server開發與使用

2.4?dify 開發MCP Server優勢

三、Dify開發與集成MCP操作過程

3.1?Dify MCP 插件說明

3.2 安裝mcp-server插件

3.3 創建新應用

3.3.1 工作流開始節點增加輸入變量

3.3.2 增加和配置大模型節點

3.3.3 效果測試

3.4 mcp-server發布與使用

3.5?配置MCP 發現工具

3.6 創建智能體應用

3.6.1 創建智能體

3.6.2 配置提示詞

3.6.3 引用 mcp服務發現工具

3.6.4 效果測試

四、客戶端集成使用Dify MCP服務

4.1?魔塔平臺集成MCP

4.2?VSCode集成MCP服務

五、寫在文末


一、前言

MCP ,即模型上下文協議(Model Context Protocol, MCP),由 Anthropic 公司(Claude 大模型母公司)在 2024 年 11 月推出的開放協議,旨在標準化大型語言模型與外部數據源和工具之間的交互方式。MCP 被形象地比喻為 AI 領域的"USB-C 接口",因為它提供了連接各類服務的統一框架。從而增強模型的實時交互和任務執行能力。Dify提供了一套完整的工具鏈,支持從提示詞工程(Prompt Engineering)到應用發布的全流程,而且基于Dify平臺,應用開發者可以定制化自己的企業MCP服務,通過暴露Endpoint之后,應用中就可以方便的進行集成使用,從而大大減少開發MCP的過程,本篇將詳細結束如何基于Dify開發MCP服務并集成使用。

二、Dify 介紹

2.1 Dify是什么

Dify 是一個開源的大模型應用開發平臺,旨在幫助開發者快速構建、部署和管理基于大型語言模型(LLM)的 AI 應用。它提供了一套完整的工具鏈,支持從提示詞工程(Prompt Engineering)到應用發布的全流程,適用于企業級 AI 解決方案和個人開發者項目。

官網入口:Dify: Production-Ready AI Agent Builder

中文站入口:Dify:企業級 AI Agent 開發平臺

2.2?MCP 介紹

2.2.1 什么是MCP

MCP ,即模型上下文協議(Model Context Protocol, MCP),由 Anthropic 公司(Claude 大模型母公司)在 2024 年 11 月推出的開放協議,旨在標準化大型語言模型與外部數據源和工具之間的交互方式。MCP 被形象地比喻為 AI 領域的"USB-C 接口",因為它提供了連接各類服務的統一框架。從而增強模型的實時交互和任務執行能力。

2.2.2 MCP核心特性

MCP 具備如下核心特點:

  • 標準化集成

    • MCP統一了不同AI模型(如Claude、GPT等)與外部工具(如數據庫、API、瀏覽器等)的交互方式,避免了傳統定制化API開發的重復勞動

  • 雙向通信

    • 不同于傳統AI只能被動接收數據,MCP支持AI主動檢索信息并執行操作(如更新數據庫、觸發工作流),實現真正的“代理式AI”

  • 動態上下文管理

    • MCP允許AI在會話中持續攜帶上下文信息(如用戶偏好、歷史記錄),使多步驟任務(如“查詢天氣→推薦行程→預訂酒店”)能自動串聯執行

  • 安全與靈活性

    • MCP支持本地或云端部署,通過OAuth 2.1認證和數據沙箱機制保障敏感信息的安全訪問

2.3 Dify中開發與使用MCP介紹

在 Dify 中,對于MCP可以分MCP Server的開發和MCP服務的集成兩部分,這兩種分別對應到實際應用中兩種不同的使用場景。

2.3.1 MCP Server開發與使用

mcp-server 插件由 Dify 社區貢獻,是一款擴展類型的插件,在dify的插件市場中通過mcp關鍵字可以搜到。

安裝該插件后,可將任何 Dify 應用轉換為兼容 MCP 的服務器端點,供外部 MCP 客戶端直接訪問。在實際業務中,其完整的開發使用流程如下:

  • 將 Dify 作為 MCP 工具暴露:
    • 將你的 Dify 應用程序轉變為單個 MCP 工具,Cursor、Claude Desktop、Cline、Windsurf 甚至其他 Dify 實例等客戶端都可調用
  • 利用 Dify Endpoint :
    • 創建應用程序端點后,將獲得 MCP 客戶端可以用來連接的唯一 URL。
  • 運行 MCP 服務:
    • 該插件會自動在 Dify 的插件環境中啟動 HTTP 服務,通過 HTTP 和 SSE 協議處理來自 MCP 客戶端的請求。這涵蓋了從協議握手到功能發現以及工具執行的所有內容。
  • 應用集成:
    • 比如在其他的客戶端工具,像魔搭、Cursor、VSCode等就可以直接訪問該端點進行使用,或者在程序中集成使用。

2.4?dify 開發MCP Server優勢

在 Dify 平臺上開發 MCP(Model Context Protocol)Server 具有顯著優勢,特別是在構建靈活、可擴展的 AI 智能體應用方面。以下是其主要優勢:

1)標準化接口,提升開發效率

  • 統一交互協議:MCP 提供標準化的客戶端-服務器通信協議,使得 Dify 可以無縫集成各類外部工具(如數據庫、API、文件系統等),無需為每個工具單獨適配接口。

  • 拖拽式編排:Dify 的可視化工作流編輯器結合 MCP Server,開發者只需簡單拖拽即可完成功能集成,大幅降低開發門檻。

2)靈活擴展,支持多場景應用

  • 動態工具發現:MCP Server 支持動態發現新工具,Dify 應用可自動識別并使用新增功能,無需重新部署。

  • 跨平臺兼容:MCP Server 可對接多種 AI 客戶端(如 Claude Desktop、Cursor IDE),一套 MCP 服務可同時支持 Dify 和其他 AI 平臺。

3)高效數據流轉,增強 AI 能力

  • RAG(檢索增強生成)優化:通過 MCP Server,Dify 可輕松接入企業知識庫、數據庫等,提升 AI 生成內容的準確性和實時性。

  • 自動化任務執行:結合 Zapier 等 MCP 服務,Dify 可實現跨應用自動化(如自動發送郵件、更新 CRM 數據),提高業務效率。

4)安全與解耦設計

  • 數據本地化:MCP Server 可在企業 VPC 內獨立部署,確保敏感數據不外流。

  • 解耦架構:MCP 服務與 Dify 應用解耦,更新工具只需修改 MCP Server,無需調整 Dify 主程序。

5)生態整合 & 社區支持

  • 豐富插件市場:Dify 提供 MCP 相關插件(如 MCP SSEZapier MCP),簡化集成流程。

  • 活躍開發者社區:GitHub 上有大量開源 MCP Server 實現(如 Python SDK、Node.js 版本),加速自定義開發。

Dify 開發 MCP Server 的核心優勢在于 標準化、靈活性、高效集成和低成本運維,特別適合企業級 AI 智能體應用的快速構建。無論是自動化任務、知識庫增強,還是多工具協同,Dify + MCP 的組合都能提供強大支持,推動 AI 應用的規模化落地。

三、Dify開發與集成MCP操作過程

接下來我們通過實際操作演示如何在Dify中開發MCP Server并進行集成使用。

3.1?Dify MCP 插件說明

mcp-server插件,可以將我們在Dify上面構建的應用直接發布成為一個符合MCP標準的服務端點

這款由Dify社區貢獻的Extension插件,安裝后能夠讓你的任何Dify應用變身為MCP Server,允許外部兼容MCP協議的客戶端直接訪問,這為Dify 應用的集成和共享提供了極大的便利。插件的核心功能如下:

  1. 將MCP應用暴露為MCP工具

    1. 它能將你的整個Dify應用(無論簡單或復雜)抽象成一個單一的MCP工具,外邊外部MCP客戶端(如cursor、cline、甚至dify自身)發現和調用。

  2. 利用Dify Endpoint功能生成訪問入口

    1. 當你為應用創建Endpoint之后,會得到一個專屬的URL,外部MCP客戶端可以通過這個URL直接連接到你的應用。

  3. 提供標準的MCP服務

    1. 插件會在Dify環境中自動運行一個HTTP服務,該服務基于HTTP和SSE協議,能夠高效處理外部MCP客戶端的請求,包括協議握手、能力發現(告訴客戶端做什么)以及實際的工具調用。

3.2 安裝mcp-server插件

如下,通過主頁右上角的插件按鈕,進入dify插件市場,搜索MCP相關插件,找到該插件并點擊安裝即可(安裝過程會根據網絡情況不同而有一定耗時)

等待安裝完成之后,在個人的插件列表頁面就能看到了

3.3 創建新應用

mcp-server配置的時候需要關聯一個具體的應用,先創建一個新的應用,這里使用工作流,如下:

3.3.1 工作流開始節點增加輸入變量

開始節點增加一個輸入參數,作為用戶的輸入

3.3.2 增加和配置大模型節點

增加一個大模型節點,接收來自開始節點用戶的輸入,傳遞到系統提示詞中構成完整的傳遞給大模型的提示詞,這里讓大模型模仿輸入的author的風格寫一首詩,參考下面的配置

大模型節點之后增加一個結束節點,結束節點的輸入變量為大模型的輸出參數

3.3.3 效果測試

點擊右上角的發布更新

然后點擊左側的運行

通過下面的運行結果可以看到工作流配置的是沒問題的

3.4 mcp-server發布與使用

選擇上述安裝完成的mcp-server插件,點擊右側+號

在下面設置API端點的表單中填寫端點名稱,并選擇上一步創的那個工作流配置進去

最下面的那個參數需要重點關注一下,這個參數的格式一般是json格式,參考下面的參數配置進去:

{"name":"poem","description":"模仿輸入的作者風格寫詩歌","inputSchema":{"title":"poem","type":"object","properties":{"author":{"title":"author","description":"作者","type":"string"}},"required":["author"]}
}

參數說明:

  • Properties : 列出應用接收的所有參數及其類型,本示例只有一個參數,author;

  • Description: 用于向MCP Client說明此應用的主要功能,幫助系統在需要的時候自動發現并調用;

  • Required : 聲明調用應用時必須提供的參數。對于聊天類應用(Agent / ChatFlow),參數通常是必須的;

將上面的參數配置到json輸入框中保存,保存配置后,會自動生成Endpoint URL,我們在后續使用的就是GET 后面的那一串URL地址。

3.5?配置MCP 發現工具

在前面的步驟中安裝了插件MCP Server,并關聯了工作流能力,且暴露了端點,相當于是一個公共服務能力,如何在客戶端中發現這個MCP Server并且正確調用呢,這就需要MCP Client的應用中集成mcp的服務發現能力,在dify的工具市場中,需要安裝一個MCP SSE的服務發現工具,主要是配置授權相關信息,如下點擊安裝:

安裝完成后,在下面的工具一欄中可以看到自己安裝的工具列表

將下面的授權配置拷貝進去

如下,拷貝進去之后點擊保存

保存成功,出現右側的已授權效果說明配置成功

3.6 創建智能體應用

該應用可以理解為客戶端應用,將利用MCP的服務發現工具調用上面發布的MCP Server,參考下面的步驟。

3.6.1 創建智能體

新建一個智能體類型的應用

3.6.2 配置提示詞

在輸入編排中添加如下提示詞

調用mcp工具回答用戶問題,先獲取工具列表,再選中可用的工具,最后返回工具結果中的詩歌原文以及解析內容

3.6.3 引用 mcp服務發現工具

在編排界面下面的工具選項中,選擇上一步配置的發現和調用MCP的工具,將其中的兩項能力添加進去

3.6.4 效果測試

當輸入作者的名字時,可以看到大模型會先走本地的工具調用,如果沒有其他問題的話,將會看到如下類似的效果

四、客戶端集成使用Dify MCP服務

基于Dify開發的MCP Server并暴露出來端點之后,除了Dify自身的應用可以使用之外,也可以在其他的客戶端集成使用,接下來在其他客戶端集成使用。

4.1?魔塔平臺集成MCP

在dify上面開發的自定義mcp服務,當sse地址暴露出來之后,就可以在其他的客戶端進行集成和使用了,這里我們在魔塔平臺做一下測試,魔塔入口:ModelScope 魔搭社區

進入魔搭mcp測試頁面:MCP Playground

在彈出的輸入框中填寫名稱,配置前面dify中生成的sse地址

點擊保存配置

配置完成后,在左側的實驗場中就會為你的這個MCP服務生成一些測試用例

在實驗場提供的模擬測試用例中,比如隨機選擇第一個模仿李白的風格寫一首詩,通過輸出結果可以看到,MCP Server的工具已經被觸發調用了

通過上面的操作過程,可以看到mcp-server插件提供了一種非常便捷的方式,能夠將我們自己在dify中構建的應用轉化為MCP Server,提供給內外部各種客戶端調用。這無疑是大大增強了 Dify應用的通用性和集成能力。

盡管目前配置 APP Input Schema的JSON格式還需要一些手動操作,略顯繁瑣,但是相比從0開始搭建服務接口,已經簡化了很多。

4.2?VSCode集成MCP服務

在VSCode中安裝Cline插件,然后在Cline的MCP配置中參照下面的方式進行配置

提一個問題,模擬李白的風格寫一首詩

可以看到效果與魔塔上面的類似,先調用了在Cline中配置的MCP,最后生成了一首詩歌,其他的客戶端工具也是類似,有興趣的同學可以繼續嘗試。

五、寫在文末

本文通過案例操作,詳細介紹了基于Dify配置MCP Server,并發布使用的詳細過程,通過這種方式,可以讓應用開發者更好更專注的面向業務開發,而只需要做簡單的集成即可完成對MCP的服務能力的使用,本篇到此結束,感謝觀看。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90240.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django filter按兩個屬性 去重

在Django中,如果你想基于兩個屬性去重,可以使用distinct()方法并結合annotate()和Count()來實現。這種方法通常用在查詢集中,尤其是在你需要統計基于某些字段的唯一值時。 示例 假設你有一個Person模型,它有兩個字段:f…

PHP高級進階:突破編程邊界,開啟技術新征程

目錄一、PHP 高級函數的深度剖析1.1 回調函數的高級應用1.2 遞歸函數的優化技巧二、面向對象編程的深化2.1 抽象類與接口的實際運用2.2 設計模式在 PHP 中的實現三、PHP 與數據庫交互的高級技術3.1 數據庫連接池的使用3.2 事務處理與數據一致性四、性能優化與調試4.1 代碼性能分…

cx_Freeze python 打包詳解

優點:有時比 PyInstaller 更好處理外部 .pyd做法:安裝 cx_Freezeshpip install cx_Freeze新建 setup.py:pythonfrom cx_Freeze import setup, Executablebuild_exe_options {"packages": ["apscheduler.triggers.interval&qu…

Java字符串不可變性:從安全哲學到性能藝術的完美平衡

目錄 引言 一、什么是String的不可變性? 二、解剖String的“防彈衣”:底層實現機制 1. final的三重防御體系 2. 方法實現的精妙設計 3. 構造函數的防御性編程 三、為什么String必須不可變?設計哲學的五大支柱 1. 字符串常量池&#x…

多服務器批量發布軟件

當需要同時發布程序到多個服務器的時候,常規是通過jekins了但是喜歡了手動檔,直接寫了個簡單批量發布軟件,程序編譯發布后,直接加載配置,選擇對應的服務器,直接電機發布即可,基本可以媲美jekins…

基于.Net Core開源的庫存訂單管理系統

今天給大家推薦一套開源的庫存訂單管理系統。 項目簡介 該項目是基于Asp.Net Core Mvc開發的庫存訂單管理系統,主要實現模塊有倉庫、產品、供應商、客戶、采購訂單、銷售訂單、發貨、收貨等等,該項目是單體架構,技術棧也不是最新的&#xf…

Django學習之旅--第13課:Django模型關系進階與查詢優化實戰

在Django開發中,模型關系設計與查詢性能直接決定了系統的擴展性和效率。當業務場景從簡單的數據存儲升級為復雜的關聯分析(如訂單統計、用戶行為分析)時,基礎的模型關系和查詢方式已無法滿足需求。本節課將深入講解模型關系的高級…

簡單理解現代Web應用架構:從簡單到企業級

在開發Web應用程序時,理解如何構建一個既安全又高效的系統至關重要。本文將通過介紹從簡單的三層架構到復雜的企業級架構的演變過程,幫助您更好地理解這些概念。1. 基礎架構:React Node.js MySQL前端(React)&#xf…

修改 Lucide-React 圖標樣式的方法

修改 Lucide-React 圖標樣式的方法 使用 lucide-react 時&#xff0c;你可以通過多種方式修改圖標的樣式。以下是幾種常用的方法&#xff1a; 1. 通過 className 屬性 import { Home } from lucide-react;function MyComponent() {return <Home className"text-blue-50…

神經架構搜索革命:從動態搜索到高性能LLM的蛻變之路

本文將揭示如何通過神經架構搜索技術&#xff08;NAS&#xff09;自動發現最優網絡結構&#xff0c;并將搜索結果轉化為新一代高性能大型語言模型的核心技術。我們的實驗證明&#xff0c;該方法在同等計算資源下可實現80%的性能飛躍&#xff01;第一部分&#xff1a;神經架構搜…

【LeetCode 熱題 100】78. 子集——(解法三)位運算

Problem: 78. 子集 題目&#xff1a;給你一個整數數組 nums &#xff0c;數組中的元素 互不相同 。返回該數組所有可能的子集&#xff08;冪集&#xff09;。 解集 不能 包含重復的子集。你可以按 任意順序 返回解集。 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1…

XCKU035?1SFVA784C Xilinx FPGA KintexUltraScale AMD

XCKU035?1SFVA784C 屬于 Xilinx Kintex UltraScale 系列&#xff0c;基于領先的 20?nm FinFET 技術制程&#xff0c;旨在為中高端應用提供卓越的性能與功耗平衡。該器件采用 784?ball Fine?pitch BGA&#xff08;SFVA784&#xff09;封裝&#xff0c;速度等級?1&#xff0…

Encore.ts:下一代高性能 TypeScript 后端框架的崛起

在 Node.js 生態系統中&#xff0c;后端框架的選擇直接影響 API 的性能、開發體驗和可維護性。近年來&#xff0c;Elysia.js、Hono、Fastify 等框架憑借各自的優化策略嶄露頭角&#xff0c;而 Encore.ts 則憑借 Rust TypeScript 混合架構&#xff0c;在性能上實現了質的飛躍。…

【IP地址】IP歸屬地查詢驅動企業實時戰略調整

動態市場感知與資源調度優化? IP歸屬地的實時分析為企業提供了市場需求的動態變化圖。 基于實時數據處理框架&#xff0c;企業可將IP歸屬地數據與用戶訪問量、轉化率等指標關聯計算&#xff0c;生成區域市場活躍度熱力圖。 當某區域IP訪問量在1小時內激增300%且停留時長提升至…

[Bug | Cursor] import error: No module named ‘data‘

import error: No module named ‘data’ Folder Structure root folder data folder dataloader.py src folder train.py <- where we try to import the dataloader.pyFailed Script ROOT_DIR Path(__file__).parent.parent os.chdir(ROOT_DIR) print(f"Using root…

#Linux權限管理:從“Permission denied“到系統安全大師

引入 Linux 作為多用戶系統&#xff0c;權限是系統安全的第一道防線。不合理的權限設置可能導致&#xff1a; 敏感文件泄露&#xff08;如數據庫密碼被讀取&#xff09;誤刪核心數據&#xff08;目錄寫權限失控&#xff09;權限漏洞被利用&#xff08;如 SUID 提權攻擊&#…

電腦重置一次對電腦傷害大嗎

在日常使用電腦的過程中&#xff0c;很多用戶或多或少都遇到過系統卡頓、軟件沖突、病毒入侵等問題。當電腦變得“越來越慢”或頻繁出錯時&#xff0c;一些用戶會考慮“重置電腦”&#xff0c;也就是將電腦恢復到出廠設置。但不少人心中也有疑問&#xff1a;重置電腦一次&#…

CSP-J系列【2024】P11229 [CSP-J 2024] 小木棍題解

題目描述小 S 喜歡收集小木棍。在收集了 n 根長度相等的小木棍之后&#xff0c;他閑來無事&#xff0c;便用它們拼起了數字。用小木棍拼每種數字的方法如下圖所示。現在小 S 希望拼出一個正整數&#xff0c;滿足如下條件&#xff1a;拼出這個數恰好使用 n 根小木棍&#xff1b;…

C# 繼承 虛方法

繼承 虛方法 &#xff08;重寫&#xff09; virtual 虛方法的關鍵字 override 重寫的關鍵字 練習&#xff1a; 繼承 繼承&#xff1a;很多類有相似的數據 相同的屬性 相同的方法 也有不同的 這個時候就可以使用繼承 讓多個類去繼承自某個具有相同數據的基類(父類) 這…

Java 堆(優先級隊列)

文章目錄優先級隊列模擬實現優先級隊列向下調整建堆向上調整建堆堆的刪除priorityQueue構造方法大根堆和小根堆的向上調整比較方法擴容面試題堆排序優先級隊列 priorityqueue&#xff1a;底層是一顆完全二叉樹 小根堆&#xff1a;根比左右孩子都小大根堆&#xff1a;根比左右…