
來源 | Datawhale
作者 | 王熠明、同濟子豪兄
1.MCP介紹
1.1 大語言模型 VS 智慧體Agent?
大語言模型,例如 DeepSeek,如果不能聯網、不能操作外部工具,只能是聊天機器人。除了聊天沒什麼可做的。
而一旦大語言模型能操作工具,例如:聯網/地圖/查天氣/函式/外掛/API 介面/程式碼直譯器/機械臂/靈巧手,它就升級成為智慧體 Agent,能更好地幫助人類。今年爆火的 Manus 就是這樣的智慧體。
眾多大佬、創業公司,都在 All In 押注 AI 智慧體賽道。
也有不少爆款的智慧體產品,比如 Coze、Manus、Dify。
1.2 以前的智慧體是怎麼實現的?
在以前,如果想讓大模型呼叫外部工具,需要透過寫大段提示詞的方法,實現“Function Call”。
比如在 openai 中這是一個用於處理客戶訂單配送日期查詢的工具呼叫邏輯設計。以下是關鍵點解讀:
一、工具功能解析
-
核心用途 -
函式名 get_delivery_date 明確用於查詢訂單的配送日期(預計送達時間)。 -
觸發場景:當用戶詢問包裹狀態(如“我的包裹到哪裡了?”或“預計何時送達?”)時自動呼叫。 -
引數設計 -
必需引數:僅需提供 order_id(字串型別),無需其他欄位。 -
邏輯合理性:訂單ID是唯一標識,足以關聯物流資訊(如快遞單號、配送進度等)。 -
技術實現要求 -
開發者需在後端實現該函式,透過 order_id 關聯資料庫或物流API獲取即時配送狀態(如預計送達時間、當前物流節點等)。
二、客服對話流程示例
假設使用者提問:“Hi, can you tell me the delivery date for my order?”
助手應執行以下步驟:
-
識別意圖:使用者明確要求“delivery date”,符合工具呼叫條件。 -
引數提取:需引導使用者提供 order_id(因訊息中未直接包含該資訊):
“Sure! Please provide your order ID so I can check the delivery schedule.”
-
工具呼叫:獲得 order_id 後,後臺執行 get_delivery_date(order_id="XXX")。 -
返回結果:向用戶展示函式返回的配送日期(如 “您的訂單預計在2025年6月25日18:00前送達”)。 tools = [ {"type": "function","function": {"name": "get_delivery_date","description": "Get the delivery date for a customer's order. Call this whenever you need to know the delivery date, for example when a customer asks 'Where is my package'","parameters": {"type": "object","properties": {"order_id": {"type": "string","description": "The customer's order ID.", }, },"required": ["order_id"],"additionalProperties": False, }, } }]messages = [ {"role": "system", "content": "You are a helpful customer support assistant. Use the supplied tools to assist the user."}, {"role": "user", "content": "Hi, can you tell me the delivery date for my order?"}]response = openai.chat.completions.create( model="gpt-4o", messages=messages, tools=tools,)
1.3 靠大段提示詞的方法實現的 Function Call 有什麼問題?
對開發者(你)來說:
-
要寫一大段複雜提示詞,程式設計師的語文水平一般都比較捉急 -
面對相同的函式和工具,每個開發者都需要重新從頭造輪子,按照自己想要的模型回覆格式重新撰寫、除錯提示詞
對軟體廠商來說(百度地圖)來說:
-
百度地圖釋出的大模型工具呼叫介面,和高德地圖釋出介面,可能完全不一樣。 -
沒有統一的市場和生態,只能各自為戰,各自找開發者接各自的大模型。
對大模型廠商(DeepSeek)來說:
-
各家廠商訓練出的智慧體大模型,任務編排能力參差不齊,標準不一致。
每個軟體都要定製開發不同的大模型呼叫模板。
1.4 秦王掃六合:MCP協議

Anthropic 公司(就是釋出 Claude 大模型的公司),在 2024 年 11 月,釋出了 Model Context Protocol 協議,簡稱 MCP。
MCP 協議就像 Type-C 擴充套件塢,讓海量的軟體和工具,能夠插在大語言模型上,供大模型呼叫。
MCP 協議是連線【大模型(客戶端)】和【各種工具應用(服務端)】的統一介面。

1.5 幾個 MCP 的應用案例
1. 呼叫Unity的MCP介面,讓AI自己開發遊戲。
https://www.bilibili.com/video/BV1kzoWYXECJ
2. 呼叫Blender的MCP介面,讓AI自己3D建模。
https://www.bilibili.com/video/BV1pHQNYREAX
3. 呼叫百度地圖的MCP介面,讓AI自己聯網,查路況,導航。
https://www.bilibili.com/video/BV1dbdxY5EUP
4. 呼叫 Playwright 的MCP介面,讓 AI 自己操作網頁。(後面的保姆級教程講的就是這個)
只要“擴充套件塢”上插的“工具”夠多,每個人都能幾分鐘,搭積木手搓出,類似 Manus 的智慧體
1.6 MCP 解決的核心問題:統一了大模型呼叫工具的方法
MCP 為【大模型】與【外部資料和工具】的【無縫整合】提供了標準化協議和平臺。
不需要使用者寫提示詞。
極大降低了大模型呼叫外部海量工具、軟體、介面的難度。

Unity 和百度地圖,看上去截然不同的軟體,但都可以讓大模型按照相同的協議去呼叫各自的功能。AI 一眼就知道有哪些工具,每個工具是什麼含義。
點點滑鼠,就可以把同一個大模型,掛載到不同的軟體和工具上。

在上圖中,上方代表 MCP 客戶端軟體,比如 Cusor、Claude Desktop,下方代表 MCP 服務端,比如海量的軟體和 API 介面。
1.7 用 HTTP 協議做類比
MCP 客戶端軟體(例如 Cursor)就相當於瀏覽器。
智慧體就相當於網站或者 APP。
mcp.so 這樣的 MCP 廣場,就相當於 App Store 或者 Hao123。
不同的瀏覽器,用相同的 HTTP 協議,就可以訪問海量的網站。
不同的大模型,用相同的 MCP 協議,就可以呼叫海量的外部工具。
網際網路催生出搜尋、社交、外賣、打車、導航、外賣等無數巨頭。
MCP 同樣可能催生出繁榮的智慧體生態。
類比網際網路的 HTTP 協議,所有的智慧體都值得用 MCP 重新做一遍。

1.8 MCP協議的通訊雙方

MCP Host:人類電腦上安裝的客戶端軟體,一般是 Dify、Cursor、Claude Desktop、Cherry Studio、Cline,軟體裡帶了大語言模型。
MCP Server:各種軟體和工具的 MCP 介面,比如: 百度地圖、高德地圖、遊戲開發軟體 Unity、三維建模軟體 Blender、瀏覽器爬蟲軟體 Playwrights、聊天軟體 Slack。儘管不同軟體有不同的功能,但都是以 MCP 規範寫成的 server 檔案,大模型一眼就知道有哪些工具,每個工具是什麼含義。
有一些 MCP Server 是可以聯網的,比如百度地圖、高德地圖。而有一些 MCP Server只進行本地操作,比如 Unity 遊戲開發、Blender 三維建模、Playwright 瀏覽器操作。

1.9 MCP 的 Host、Client、Server 是什麼關係?
Host 就是 Dify、Cursor、Cline、CherryStudio 等 MCP 客戶端軟體。

如果你同時配置了多個 MCP 服務,比如百度地圖、Unity、Blender 等。每個 MCP 服務需要對應 Host 中的一個 Client 來一對一通訊。Client 被包含在 Host 中。

1.10 大模型是怎麼知道有哪些工具可以呼叫,每個工具是做什麼的?
每個支援 MCP 的軟體,都有一個 MCP Server 檔案,裡面列出了所有支援呼叫的函式,函式註釋裡的內容是給 AI 看的,告訴 AI 這個函式是做什麼用的。
MCP Server 檔案就是給 AI 看的工具說明書。
例如百度地圖 MCP 案例:
https://github.com/baidu-maps/mcp/blob/main/src/baidu-map/python/src/mcp_server_baidu_maps/map.py
每個以@mcp.tool()開頭的函式,都是一個百度地圖支援 MCP 呼叫的功能。


你也可以按照這個規範,自己開發 MCP Server,讓你自己的軟體支援 MCP 協議,讓 AI 能呼叫你軟體中的功能。
1.11 參考資料
幾張圖片來自公眾號:西二旗生活指北
1.1-1.10 的這部分教程引自 Datawhale 成員同濟子豪兄的《跟同濟子豪兄一起學MCP》知識庫
知識庫地址:https://zihao-ai.feishu.cn/wiki/RlrhwgNqLiW7VYkNnvscHxZjngh
2. Dify MCP 外掛介紹
2.1 Dify 外掛介紹

在 v1.0.0 之前,Dify 平臺面臨一個關鍵挑戰:模型和工具與主平臺高度耦合,新增功能需要修改主倉庫程式碼,限制了開發效率和創新。為此,Dify團隊重構了 Dify 底層架構,引入了全新的外掛機制,帶來了以下四大優勢:
-
元件外掛化:外掛與主平臺解耦,模型和工具以外掛形式獨立執行,支援單獨更新與升級。新模型的適配不再依賴於 Dify 平臺的整體版本升級,使用者只需單獨更新相關外掛,無需擔心繫統維護和相容性問題。新工具的開發和分享將更加高效,支援接入各類成熟的軟體解決方案和工具創新。 -
開發者友好:外掛遵循統一的開發規範和介面標準,配備遠端除錯、程式碼示例和 API 文件的工具鏈,幫助外掛開發者快速上手。 -
熱插拔設計:支援外掛的動態擴充套件與靈活使用,確保系統高效執行。 -
多種分發機制:
Dify Marketplace:作為外掛聚合、分發與管理平臺,為所有 Dify 使用者提供豐富的外掛選擇。外掛開發者可將開發好的外掛包提交至 Dify Plugins 倉庫,透過 Dify 官方的程式碼和隱私政策稽核後即可上架 Marketplace。Dify Marketplace 現共有 120+ 個外掛,其中包括:
模型:OpenAI o1 系列(o1、o3-mini 等)、Gemini 2.0 系列、DeepSeek-R1 及其供應商,包括矽基流動、OpenRouter、Ollama、Azure AI Foundry、Nvidia Catalog 等。工具:Perplexity、Discord、Slack、Firecrawl、Jina AI、Stability、ComfyUI、Telegraph 等。更多外掛盡在 Dify Marketplace。請透過外掛幫助文件檢視如何將開發好的外掛釋出至 Marketplace。
Dify 外掛幫助文件 >> https://docs.dify.ai/zh-hans/plugins/introduction
2.2 Dify MCP外掛

在 Dify 的豐富外掛市場中也提供了一個好用的 MCP SEE 外掛,方便我們將 SEE MCP 服務放在我們的工作流中。讓 AI 擁有更加強大的能力。
2.3 下載 MCP SSE / StreamableHTTP 外掛

2.4 MCP SSE / StreamableHTTP 用法介紹
在已安裝的外掛列表中找到 MCP SSE,然後點選去授權。

使用下面的結構進行配置即可。
{"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"}}}
本次教程不教大家部署 SSE 傳輸的 MCP Server,直接連線託管的 MCP 伺服器。
3. MCP 國內平臺及應用服務
3.1 國內的 MCP 平臺
MCP 目前國外的平臺較多,國內比較頭部的 MCP 平臺目前是(20250622)魔搭社群。

3.2 如何使用魔搭社群 MCP 廣場?
案例一:12306 MCP
比如我們選擇了 12306 的 mcp 應用,點選連結即可生成一個由魔搭社群託管的 SSE 地址。

{"mcpServers":{"12306-mcp":{"type":"sse","url":"https://mcp.api-inference.modelscope.net/ids/sse"}}}
拿到 sse 地址即可實現個人配置。
我們點選到工具測試選單,可以看到 MCP 具備的工具能力,可以瞭解到這個 MCP 具有哪些應用方式。

這裡我們再嘗試另一個,力扣的 MCP
案例二: 力扣 MCP
力扣是一個演算法練習的平臺,比如你想學習一些程式語言,做一些小練習就可以到力扣上試試。

同樣的我們也能得到對應的 SSE 地址。

大家注意哦,這次我們用的是魔搭託管的MCP服務。也就是會有Hosted的字樣,如果是local的需要大家本地部署。這裡本地部署我們就不過多介紹了,學有餘力的小夥伴可以自行嘗試。

3.3 國內支援MCP的產品
案例三:高德地圖MCP
一、高德MCP介紹
在高德地圖的加成下可以快速完成與地圖相關的大模型任務。


二、高德MCP申請
-
註冊一個高德開發者賬號 -
註冊認證地址:https://console.amap.com/dev/id/phone
-
建立新應用
進入【應用管理】,點選頁面右上角【建立新應用】,填寫表單即可建立新的應用。

-
建立 Key
進入【應用管理】,在我的應用中選擇需要建立 Key 的應用,點選【新增 Key】,表單中的服務平臺選擇【Web 服務】。

獲取 Key

建立成功後,可獲取 Key 和安全金鑰。
獲取到的 sse 配置如下
{"mcpServers": {"amap-amap-sse": {"url": "https://mcp.amap.com/sse?key=您在高德官網上申請的key" } }}
案例四:智譜搜尋MCP
智譜 AI 的介紹咱們在之前和大家說過,這裡我們展示一下搜尋的 MCP。


獲取 Key 的方式和大模型一致,這裡就不贅述啦。大家貼上 key 即可。
{"mcpServers":{"zhipu-web-search-sse":{"url":"https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization=YOUR API Key"}}}
目前支援 MCP 的介面越來越多,將來會有更多更好用的 MCP 出現。這裡距離了一些方便大家學習和使用哦。
4. 保姆級教程:搭建 MCP 智慧體
4.1 先搭建一個 Dify 適配 MCP 配置的智慧體
這裡我們需要做的是先配好 MCP SSE / StreamableHTTP 外掛。如何配置呢之前給大家看過啦。這裡我們寫一個智慧體輔助我們修改從魔搭社群獲取的連結~

prompt 如下:
你需要將使用者輸入的mcp 配置json 轉為目標json,或是使用者直接輸入 url 或是使用者輸入url 和使用者名稱,都需要以目標json的結構返回。例如使用者輸入:{"mcpServers":{"12306-mcp":{"type":"sse","url":"https://mcp.api-inference.modelscope.net/123/sse"}}}返回json:{"12306-mcp":{"url":"https://mcp.api-inference.modelscope.net/123/sse","headers":{},"timeout":60,"sse_read_timeout":300},}
我們拿 12306 的 MCP 配置測試一下:

看上去還是挺簡單的。
4.2 測試MCP配置

搞定後會出現這樣的字樣~

4.3 第一個 MCP 應用搭建

目前支援 MCP 的應有有如上圖所示的三種,因為需要 agent 支撐。我們製作一個 Agent 應用。

你叫“火車俠”,是12306-MCP專屬AI助理,專注於鐵路出行服務。你的核心任務是: 呼叫MCP工具時先獲取工具列表,在選擇12306-MCP來回答。需要了解清楚本MCP如何使用。查詢車票、規劃行程,提供最優推薦。


大模型對話介面

MCP呼叫截圖

真即時刻表
大模型返回結果,確實是準確無誤的,比直接用 app 查方便,也很適合老人用!
Thought: 現在我已經獲取了明天(2025-06-23)銀川到中衛的所有火車車次資訊,包括車次型別、出發到達時間、歷時以及各座位型別的餘票情況。資訊完整且無需進一步補充,接下來需要將結果整理成自然語言回答使用者。Action:2025年6月23日銀川到中衛的火車車次資訊如下(按出發時間排序):K195次:01:15銀川站發車,03:28抵達中衛站,歷時2小時13分。硬座24.5元(有票)、硬臥70.5元(剩餘18張)、軟臥108.5元(剩餘4張)、無座24.5元(有票)。Z311次:03:52銀川站發車,06:47抵達中衛站,歷時2小時55分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(剩餘19張)、無座24.5元(有票)。K1087次:06:10銀川站發車,08:37抵達中衛站,歷時2小時27分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(有票)、無座24.5元(有票)。2635次:06:22銀川站發車,09:12抵達中衛站,歷時2小時50分。硬座21.5元(有票)、硬臥67.5元(有票)、軟臥105.5元(有票)、無座21.5元(有票)。7511次:06:41銀川站發車,10:36抵達中衛站,歷時3小時55分。硬座18.5元(有票)、無座18.5元(有票)。C8221次(城際):06:57銀川站發車,08:12抵達中衛南站,歷時1小時15分。二等座37元(有票)、一等座60元(有票)、商務座112元(剩餘10張)。7531次:07:17銀川站發車,15:38抵達中衛站,歷時8小時21分。硬座46.5元(有票)、無座46.5元(有票)。D8953次(動車):07:48銀川站發車,09:03抵達中衛南站,歷時1小時15分。二等座65元(有票)、一等座104元(有票)、無座65元(有票)。D2749次(動車):08:12銀川站發車,09:27抵達中衛南站,歷時1小時15分。二等座65元(有票)、一等座104元(有票)、無座65元(有票)。D8941次(動車):08:35銀川站發車,09:50抵達中衛南站,歷時1小時15分。二等座82元(有票)、一等座131元(有票)、無座82元(有票)。C8209次(城際):08:40銀川站發車,10:01抵達中衛南站,歷時1小時21分。二等座51元(有票)、一等座82元(有票)、無座51元(有票)。D2763次(動車):10:00銀川站發車,11:21抵達中衛南站,歷時1小時21分。二等座82元(有票)、一等座131元(有票)、無座82元(有票)。D8933次(動車):12:05銀川站發車,13:29抵達中衛南站,歷時1小時24分。二等座82元(有票)、一等座131元(有票)、無座82元(有票)。D2767次(動車):13:47銀川站發車,15:08抵達中衛南站,歷時1小時21分。二等座82元(有票)、一等座131元(有票)、無座82元(有票)。C8211次(城際):14:45銀川站發車,16:06抵達中衛南站,歷時1小時21分。二等座65元(有票)、一等座104元(有票)、無座65元(有票)。K41次:15:13銀川站發車,18:10抵達中衛站,歷時2小時57分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(剩餘5張)、無座24.5元(有票)。D8945次(動車):15:55銀川站發車,17:10抵達中衛南站,歷時1小時15分。二等座82元(有票)、一等座131元(有票)、無座82元(有票)。C8213次(城際):18:30銀川站發車,19:51抵達中衛南站,歷時1小時21分。二等座51元(有票)、一等座82元(有票)、無座51元(有票)。D8937次(動車):19:22銀川站發車,20:37抵達中衛南站,歷時1小時15分。二等座74元(有票)、一等座119元(有票)、無座74元(有票)。K1517次:19:52銀川站發車,22:49抵達中衛站,歷時2小時57分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(剩餘7張)、無座24.5元(有票)。T303次:20:26銀川站發車,23:03抵達中衛站,歷時2小時37分。硬座24.5元(有票)、硬臥70.5元(剩餘1張)、軟臥無票、無座24.5元(有票)。K359次:20:35銀川站發車,23:32抵達中衛站,歷時2小時57分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(有票)、無座24.5元(有票)。C8207次(城際):21:00銀川站發車,22:27抵達中衛南站,歷時1小時27分。二等座56元(有票)、一等座89元(有票)、無座56元(有票)。K1295次:21:31銀川站發車,次日00:13抵達中衛站,歷時2小時42分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(有票)、無座24.5元(有票)。K815次:22:40銀川站發車,次日01:20抵達中衛站,歷時2小時40分。硬座24.5元(有票)、硬臥70.5元(有票)、軟臥108.5元(有票)、無座24.5元(有票)。注:部分車次(如7534次)為途徑靈武、寧東等站的區間車,已過濾僅保留銀川站發車的直達車次。您可根據出行時間和預算選擇合適車次,建議透過12306 App或官網即時查詢餘票併購票。
deepseek R1 和 V3 效果似乎不好,我後面換了豆包的 doubao seed 1.6 250615 模型,效果會更好一些。
後續會出 MCP 工作流實踐 和 工作流轉換 MCP 介紹,大家可以持續關注。
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群
關於我們
MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

掃描二維碼新增小助手微信
關於我們
