自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

暴論:2025年,程序員必學(xué)技能就是 MCP 原創(chuàng) 精華

發(fā)布于 2025-4-1 08:19
瀏覽
1收藏

MCP(模型上下文協(xié)議)就像是大模型世界里的“最后一公里”。大膽地說一句,MCP 應(yīng)該是每個程序員在 2025 年必須掌握的知識點。

大模型的功能確實很強(qiáng)大,但它們也有明顯的短板。例如,大模型在數(shù)學(xué)計算方面表現(xiàn)不佳。曾經(jīng)有一個知名的測試,讓大模型比較 9.8 和 9.11 哪個數(shù)更大,大約半年前,大部分大模型都會錯誤地回答 9.8 更小。如今,這種情況已經(jīng)基本得到糾正,這主要得益于 RAG(檢索增強(qiáng)生成)技術(shù)。RAG 的原理與 MCP 有異曲同工之妙,它們都像是一個“外掛程序”,只不過 RAG 掛在了 LLM(大型語言模型)端,而 MCP 掛在了客戶端。

再比如,在大模型具備聯(lián)網(wǎng)功能之前,它無法告訴你實時天氣。大模型在處理推理工作時表現(xiàn)得更為出色,比如做總結(jié)、出報告、寫文章等。這也很合理,畢竟 LLM 的全稱是“大型語言模型”,它在處理語言方面自然更有優(yōu)勢。再看看多模態(tài)模型,比如生圖模型,你讓它畫一幅畫,畫出的是梵高風(fēng)格還是莫奈風(fēng)格,對于很多人來說并不重要,只要畫作好看就行。

總結(jié)來說,大模型更擅長處理推理類的工作,或者說它在處理那些形而上的事物時更為得心應(yīng)手。然而,當(dāng)涉及到特別精細(xì)化的工具化操作,尤其是定制化需求時,大模型的表現(xiàn)就不那么理想了。

1、MCP 機(jī)制剖析

第一、什么是 MCP?

MCP,全稱 Model Context Protocol,是由 Anthropic 在 2024 年 11 月推出的一項創(chuàng)新技術(shù)。Anthropic 是目前公認(rèn)的在代碼生成領(lǐng)域表現(xiàn)最為出色的大模型 Claude 的開發(fā)公司。MCP 作為一個社區(qū)共建的開放協(xié)議,旨在提供一個通用的開放標(biāo)準(zhǔn),用于連接大語言模型(LLM)和外部數(shù)據(jù)及行為。

MCP 的重要性在于它提供了一個標(biāo)準(zhǔn)化的接口,使得大語言模型能夠更高效地與外部世界進(jìn)行交互。這就好比電腦上的 USB 接口或手機(jī)上的 Type-C 接口,無論哪個廠家生產(chǎn)的數(shù)據(jù)線,只要遵循 USB 或 Type-C 標(biāo)準(zhǔn),就能用來充電或傳輸數(shù)據(jù)。同樣,無論哪個硬盤廠商生產(chǎn)的硬盤,只要支持 Type-C 接口,就能連接到電腦上使用。


暴論:2025年,程序員必學(xué)技能就是 MCP-AI.x社區(qū)

再舉一個開發(fā)中的例子,我們通常使用 JSON 格式進(jìn)行接口調(diào)用。JSON 的格式就是一個標(biāo)準(zhǔn),只要數(shù)據(jù)格式符合 JSON 規(guī)范,無論誰來接收數(shù)據(jù),無論使用哪個 JSON 庫,甚至手動解析,只要符合 JSON 格式,數(shù)據(jù)傳輸就能暢通無阻。

Anthropic 通過 MCP 制定了一套標(biāo)準(zhǔn),使得開發(fā)者可以基于這一標(biāo)準(zhǔn)構(gòu)建和連接各種工具和服務(wù)。這不僅簡化了開發(fā)流程,還極大地擴(kuò)展了大語言模型的應(yīng)用場景。通過 MCP,開發(fā)者可以輕松地將 LLM 與各種外部數(shù)據(jù)源和工具集成,從而實現(xiàn)更復(fù)雜、更高效的任務(wù)處理。

第二、MCP 的核心組件

1.MCP 主機(jī)(MCP Hosts)

MCP 主機(jī)是那些希望通過 MCP 訪問數(shù)據(jù)的程序,例如 Claude Desktop、IDE 或其他 AI 工具。目前,像 VsCode 中的 Cline 插件、Cursor、WindSurf 等都支持 MCP,未來支持 MCP 調(diào)用的終端都可以成為 MCP 主機(jī)。甚至,你自己也可以開發(fā)一個客戶端。

2.MCP 客戶端(MCP Clients)

MCP 客戶端是通過協(xié)議與服務(wù)器保持 1:1 連接的程序。主機(jī)和客戶端通常是一起的,客戶端更偏重于編程概念中的解釋??梢灶惐葦?shù)據(jù)庫工具,比如 Navicat 軟件本身可以理解為主機(jī),而一個 Navicat 可以同時連接多個數(shù)據(jù)庫,每連接一個數(shù)據(jù)庫需要一個連接(設(shè)置多個),這些連接可以理解為 MCP 里的客戶端。

3.MCP 服務(wù)器(MCP Servers)

MCP 服務(wù)器是輕量級程序,每個程序通過標(biāo)準(zhǔn)化的模型上下文協(xié)議暴露特定功能。這部分是“最后一公里”的具體實現(xiàn),需要根據(jù)具體需求開發(fā)。例如,如果你想讓 LLM 訪問自研系統(tǒng)的數(shù)據(jù),就需要提供開放接口并供 LLM 使用,這部分就是 MCP 服務(wù)器。

MCP 服務(wù)可以用 Python、JavaScript(NodeJS)、Java 來開發(fā),目前官方已經(jīng)開放了這些語言的 SDK。未來,還會有 Go、Rust、.NET 等語言的 SDK。

4.本地數(shù)據(jù)源(Local Data Sources)

本地數(shù)據(jù)源包括你的計算機(jī)文件、數(shù)據(jù)庫和服務(wù),MCP 服務(wù)器可以安全地訪問這些數(shù)據(jù)源。

5.遠(yuǎn)程服務(wù)(Remote Services)

遠(yuǎn)程服務(wù)是可以通過互聯(lián)網(wǎng)訪問的外部系統(tǒng)(例如,通過 API),MCP 服務(wù)器可以連接到這些服務(wù)。例如,查詢實時天氣時,你的 MCP 服務(wù)器需要去國家氣象局等第三方平臺獲取數(shù)據(jù),這需要 API 調(diào)用。

第三、調(diào)用機(jī)制

MCP 的調(diào)用機(jī)制需要客戶端、MCP 服務(wù)端和 LLM 三方配合。

1.啟動 MCP 服務(wù)

例如,一個查詢天氣的 Spring Boot 應(yīng)用,按照官方標(biāo)準(zhǔn)實現(xiàn)具體的服務(wù)接口,并在本地啟動。

將服務(wù)在客戶端進(jìn)行配置,就像在注冊中心注冊一樣,通常是啟動命令,例如 npx 或 java??蛻舳舜蜷_后,在本地同時啟動 MCP 服務(wù)。

配置文件示例:

{
  "mcpServers": {
    "spring-ai-mcp-weather": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-jar",
        "/Users/fengzheng/model-context-protocol/weather/starter-stdio-server/target/mcp-weather-stdio-server-0.0.1-SNAPSHOT.jar"
      ]
    },
    "brave-search": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-brave-search"
      ],
      "env": {
        "BRAVE_API_KEY": "xxxx"
      },
      "autoApprove": [
        "brave_web_search"
      ]
    }
  }
}

2.調(diào)用流程

暴論:2025年,程序員必學(xué)技能就是 MCP-AI.x社區(qū)

  • 用戶發(fā)送消息:用戶通過客戶端應(yīng)用程序發(fā)送一條消息。
  • 客戶端傳遞消息:客戶端將用戶的消息傳遞給 LLM。
  • LLM 請求工具或數(shù)據(jù):LLM 可能需要額外的工具或數(shù)據(jù)來處理請求,因此向客戶端發(fā)出請求。
  • 客戶端向 MCP 服務(wù)器請求:客戶端根據(jù) LLM 的需求,通過 MCP 協(xié)議向 MCP 服務(wù)器發(fā)送請求。
  • MCP 服務(wù)器訪問數(shù)據(jù)源:MCP 服務(wù)器根據(jù)請求訪問相應(yīng)的數(shù)據(jù)源。
  • 數(shù)據(jù)源返回數(shù)據(jù):數(shù)據(jù)源將所需的數(shù)據(jù)返回給 MCP 服務(wù)器。
  • MCP 服務(wù)器返回工具或數(shù)據(jù):MCP 服務(wù)器將獲取到的工具或數(shù)據(jù)返回給客戶端。
  • 客戶端提供工具或數(shù)據(jù)給 LLM:客戶端將工具或數(shù)據(jù)傳遞給 LLM。
  • LLM 返回處理結(jié)果:LLM 使用提供的工具或數(shù)據(jù)生成處理結(jié)果,并返回給客戶端。
  • 客戶端顯示最終結(jié)果:客戶端將 LLM 的處理結(jié)果展示給用戶。

整個原理其實比較簡單,但通過這種機(jī)制,MCP 能夠極大地擴(kuò)展 LLM 的能力,使其能夠處理更復(fù)雜的任務(wù)。

第四、為什么 MCP 重要?

文章開頭提到,盡管大模型功能強(qiáng)大,但它們也有明顯的短板。而這些短板往往對應(yīng)著一部分用戶的真實需求。例如,有人需要精確的實時天氣信息,這正是大模型的一個短板。有人可能會說,查天氣直接打開一個 APP 不就行了嗎?當(dāng)然可以,但如果能在一個應(yīng)用或終端中直接完成,豈不是更方便,省去了拿起手機(jī)打開 APP 的麻煩。

再比如,在大模型聊天窗口中直接操作本地數(shù)據(jù)庫,現(xiàn)在已經(jīng)有多種 MCP 服務(wù)可以實現(xiàn)這一點。

又比如,想要建立自己的知識庫。假設(shè)我對大模型說:“把我曾經(jīng)寫的關(guān)于 JVM 的文章找出來,并給我匯總成一篇帶目錄結(jié)構(gòu)的文章合集?!?如果沒有 MCP 的輔助,現(xiàn)有的任何大模型客戶端都無法實現(xiàn)這一需求。但有了可以訪問本地文件的 MCP,這個需求就有可能實現(xiàn)。

類似的需求數(shù)不勝數(shù),幾乎每一個現(xiàn)有 APP 的功能都可能成為 MCP 需要支持的功能。

2、MCP、Function Calling、Agent 區(qū)別

說到 MCP,就不得不提到 Function Calling 和 Agent。從表面上看,這三者似乎功能相似,目的也相近,都是為了彌補(bǔ)大模型的短板。

第一、MCP

MCP(Model Context Protocol)是一種開放協(xié)議,旨在提供一個通用的開放標(biāo)準(zhǔn),用于連接大語言模型(LLM)和外部數(shù)據(jù)及行為。MCP 運行在本地(至少目前是),由像 Cursor 這樣的主機(jī)(或統(tǒng)稱為終端)調(diào)用,可以訪問本地資源、個性化的 API 等。

第二、Function Calling

Function Calling 是 AI 模型與外部函數(shù)或服務(wù)交互的一種機(jī)制。在這種模式下,模型生成一個函數(shù)調(diào)用請求,宿主應(yīng)用解析該請求并執(zhí)行相應(yīng)的操作,然后將結(jié)果返回給模型。Function Calling 通常具有以下特點:

同步執(zhí)行:調(diào)用函數(shù)后,程序會等待函數(shù)執(zhí)行完畢并返回結(jié)果,才繼續(xù)執(zhí)行后續(xù)代碼。

緊耦合:模型與函數(shù)或服務(wù)之間的關(guān)系較為緊密,需要在代碼中明確指定。

特定實現(xiàn):函數(shù)調(diào)用的實現(xiàn)方式可能因平臺或服務(wù)提供商而異,缺乏統(tǒng)一標(biāo)準(zhǔn)。

第三、Agent

Agent(智能體)是具備自主行動能力的系統(tǒng),能夠執(zhí)行一系列復(fù)雜的任務(wù),比如前一段時間很火的 Manus。Agent 通常具備以下特征:

自主性:能夠根據(jù)環(huán)境變化和目標(biāo)自主做出決策。

任務(wù)執(zhí)行:能夠執(zhí)行多步驟、多環(huán)節(jié)的任務(wù),往往需要調(diào)用多個工具或服務(wù)。

集成性:通常集成多種功能模塊,如 MCP 和 Function Calling,以實現(xiàn)復(fù)雜的任務(wù)處理。

第四、主要區(qū)別

MCP:作為一種協(xié)議,主要解決模型與外部工具和數(shù)據(jù)源之間的交互問題,提供標(biāo)準(zhǔn)化的接口和通信方式。它非常靈活,只要遵循標(biāo)準(zhǔn),幾乎能實現(xiàn)任何功能。

Function Calling:是模型與特定函數(shù)或服務(wù)交互的具體實現(xiàn)方式,關(guān)注如何在代碼層面實現(xiàn)功能調(diào)用。它需要大模型和特定客戶端緊密綁定,靈活性較低。

Agent:是一個復(fù)雜的系統(tǒng),能夠自主執(zhí)行任務(wù),通常需要結(jié)合 MCP 和 Function Calling 等機(jī)制,以實現(xiàn)復(fù)雜的功能。

通過這些對比,我們可以更清晰地理解 MCP、Function Calling 和 Agent 的功能和應(yīng)用場景。

3、MCP 發(fā)展預(yù)測

隨著 AI 的迅猛發(fā)展,它將在未來生活的各個領(lǐng)域扮演越來越重要的角色,而 MCP(Model Context Protocol)也將順應(yīng)這一趨勢不斷進(jìn)化。以下是對未來可能出現(xiàn)的幾種情況的預(yù)測,其中一些已經(jīng)在逐步成為現(xiàn)實。

第一、超級客戶端的出現(xiàn)

目前,我們?yōu)榱耸褂貌煌墓δ埽枰蜷_各種各樣的 APP。然而,隨著 AI 的普及,未來可能會出現(xiàn)超級客戶端或終端,就像豆包或小愛同學(xué)這樣的智能助手。這些超級客戶端將集成多種工具和服務(wù),為用戶提供統(tǒng)一且無縫的體驗。例如,用戶可以在一個應(yīng)用中輕松訪問本地文件、數(shù)據(jù)庫、瀏覽器以及其他服務(wù),無需頻繁切換不同的 APP,從而大大提高工作效率。

以小愛同學(xué)為例,目前它主要被用于設(shè)置定時提醒和查詢天氣。但如果借助 MCP 的方式,與更多的服務(wù)商進(jìn)行打通,小愛同學(xué)將能夠?qū)崿F(xiàn)更多樣化的需求,為用戶提供更豐富的服務(wù)。

第二、MCP 市場的興起

未來可能會出現(xiàn)類似現(xiàn)在應(yīng)用商店的 MCP 市場。在這個市場中,無論是個人開發(fā)者還是公司,都可以提交自己的 MCP。例如,某短視頻平臺可以提交一個推薦視頻的接口,用戶就可以在一個支持 MCP 的客戶端中直接刷視頻。目前,Cline 插件已經(jīng)具備了 MCP 市場的功能,用戶可以查看并安裝各種開源的 MCP。不過,這一功能還處于初級階段,有時使用起來可能還不夠便捷。

第三、遠(yuǎn)程運行能力的實現(xiàn)

MCP 支持多種通信方式,包括本地的 STDIO 和網(wǎng)絡(luò)上的 HTTP/SSE。當(dāng)需要跨機(jī)器通信時,MCP 可以利用 HTTP/SSE 實現(xiàn)工具的遠(yuǎn)程調(diào)用。這意味著,未來的 MCP 系統(tǒng)將能夠在本地和遠(yuǎn)程環(huán)境中靈活地運行工具,為用戶提供了更廣泛的部署選項。

對于程序員來說,在本地運行 Node、Python、Java 等語言的程序并非難事。然而,對于那些沒有編程經(jīng)驗的人來說,這無疑是一項艱巨的挑戰(zhàn)。因此,如果希望讓更多的人能夠使用 MCP,就必須解決本地啟動服務(wù)的問題,降低使用門檻,使 MCP 更加易于上手和使用。


本文轉(zhuǎn)載自公眾號玄姐聊AGI  作者:玄姐

原文鏈接:??https://mp.weixin.qq.com/s/aH9L_9khY9J1X2Qldge9iQ??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-4-1 09:28:04修改
收藏 1
回復(fù)
舉報
回復(fù)
相關(guān)推薦