解鎖MCP:AI大模型的萬能工具箱

摘要:MCP(Model Context Protocol,模型上下文協議)是由Anthropic開源發布的一項技術,旨在作為AI大模型與外部數據和工具之間溝通的“通用語言”。它通過標準化協議,讓大模型能夠自動調用外部工具完成任務,提升效率和靈活性。MCP整合了Function call標準,降低了開發成本,適用于復雜任務處理。其應用廣泛,包括智能問答、編程輔助和辦公自動化等場景,未來有望拓展至更多領域并推動AI生態系統的發展。

一、MCP 是什么

MCP,即 Model Context Protocol,模型上下文協議 ,是由 Claude 的母公司 Anthropic 于 2024 年 11 月開源發布的一項技術。簡單來說,MCP 是 AI 大模型的標準化工具箱,也可以把它想象成 AI 大模型和外部數據、工具之間溝通的 “通用語言” 或者 “萬能插座”。

在日常工作和學習中,我們經常需要與瀏覽器、文件、數據庫和代碼倉庫等外部工具進行交互。在傳統方式中,我們需要手動截圖或復制文本,再將其粘貼到 AI 窗口中進行對話。而 MCP 通過標準化的協議,自動化了這一步驟,讓大模型可以利用這些工具與外界互動,獲取信息并且完成具體任務。

MCP 服務充當 AI 和外部工具之間的橋梁,能夠自動替代人類訪問和操作這些外部工具。每個 MCP 服務(也稱為 MCP Server)都專注于特定的任務。比如有的負責讀寫瀏覽器、有的負責讀寫本地文件、有的操作 Git 倉庫等等 。MCP Server 通常就是運行在本地的一段 Node.js 或者 Python 程序。大模型通過操作系統的標準輸入輸出(stdio),也就是我們常說的輸入與輸出通道,來調用某個 MCP Server,它的消息格式是 JSON,這是一種常用的數據交換格式。MCP Server 在接收到請求后,會通過自身的代碼功能,或者使用 API 請求,訪問外部工具,完成任務。

二、MCP 的技術原理

MCP 技術原理的核心,在于建立大模型與外部工具之間的有效溝通橋梁。當我們向搭載 MCP 技術的大模型提出任務請求時,這個請求就像一顆投入湖面的石子,引發一系列有序的連鎖反應。

大模型首先會通過操作系統標準輸入通道(stdio)調用 MCP Server。這個過程就好比你在電腦操作系統中,通過特定的指令調用某個應用程序。而大模型使用的 “指令”,是遵循特定 JSON 結構的消息格式 ,這就像是它們之間溝通的 “密碼本”,確保信息傳遞的準確性。

MCP Server 收到請求后,就如同接到任務的 “執行者”,會根據自身的功能,利用代碼功能或者向外部工具發送 API 請求,進而訪問這些工具來完成任務。比如,若大模型需要獲取某個網頁的內容,它就會調用負責網頁訪問的 MCP Server,MCP Server 再通過網頁抓取相關的代碼或 API,從互聯網上獲取網頁內容,并將結果返回給大模型。

MCP 在技術原理上的一大創新,是整合了 Function call 標準。在 MCP 出現之前,不同大模型的 Function call 標準就像不同國家的語言,各有各的規則,導致大模型與外部工具之間的交互十分不便。而 MCP 就像是一個強大的 “翻譯官”,將這些不同的標準整合為一個統一的協議,讓幾乎所有的大模型都能按照這個標準與外部工具進行交互 。這不僅降低了開發成本,還極大地提高了大模型與外部工具協作的效率和靈活性,使得大模型在處理各種任務時更加得心應手。

三、MCP 的安裝與配置

下面,我將以在 AI 編程工具 Cursor 上配置 MCP 為例,為大家進行詳細的操作演示。

3.1 升級 Cursor 至最新版本

首先,打開 Cursor,點擊界面中的設置按鈕 ,進入設置頁面。在設置頁面中找到 “Beta features” 選項,在這里將 Cursor 升級為最新版本。這一步非常關鍵,因為新版本通常會修復一些舊版本的問題,并且可能會對 MCP 功能進行優化和完善,確保我們能夠順利地使用 MCP 的各項功能。

3.2 創建配置文件

完成版本升級后,點擊 MCP 配置選項。當前 MCP 是通過文件方式進行配置的,所以我們需要在根目錄下創建一個名為 “.cursor” 的文件夾,然后在該文件夾內再創建一個后綴名為.json 的文件,用于存放 MCP 的配置信息 。這個.json 文件就像是一個 “指令集”,告訴 Cursor 如何與 MCP Server 進行交互。

3.3 復制代碼并完成配置

接下來,打開 GitHub 網站,注冊賬號后,在搜索欄中輸入 “MCP(Model Context Protocol Servers)”,找到對應的頁面。以配置 GitHub 為例,點擊進入 GitHub 相關頁面后,向下滑動頁面找到 “NPX” 部分,這里會展示一段代碼,這段代碼就是我們配置 MCP Server 的關鍵信息。復制這段代碼,并將其粘貼到剛才在 Cursor 中新建的.json 文件中 。粘貼完成后,根據實際需求,可能還需要對代碼中的一些參數進行修改,比如一些需要填寫個人密鑰、token 的地方,要替換成自己的相關信息,以確保 MCP Server 能夠正常運行并與 Cursor 進行安全通信。

完成上述步驟后,重啟 Cursor。再次打開 Cursor 時,如果看到 MCP 配置相關位置顯示綠色指示燈亮起,那就表示 Cursor 已成功識別 MCP Server,MCP 配置成功 。如果指示燈未亮,或者顯示異常,那就需要仔細檢查之前的操作步驟,比如配置文件中的代碼是否復制正確、參數修改是否無誤等,也可以查看相關的日志信息來定位問題所在。

四、MCP 的應用案例

4.1 智能問答系統

以某智能客服為例,當用戶咨詢 “我想了解最近一個月內北京地區銷量最高的產品是哪款” 時,智能客服背后的大模型通過 MCP 調用數據庫查詢工具,直接從企業的銷售數據庫中獲取相關數據,精準地回答用戶問題 。而在以往,可能需要人工先從數據庫中導出數據,再進行分析,最后才能回復用戶,整個過程繁瑣且耗時。通過 MCP,智能問答系統的響應速度大幅提升,準確率也得到了保障,為用戶提供了更加高效、準確的服務體驗 。

4.2 編程輔助

在軟件開發過程中,開發人員使用搭載 MCP 技術的編程工具,如前面提到的 Cursor。當需要實現一個復雜的功能,比如在一個電商項目中創建用戶訂單管理模塊時,開發人員只需在 Cursor 中輸入自然語言描述,如 “創建一個用戶訂單管理模塊,包含訂單的創建、查詢、修改和刪除功能,數據庫使用 MySQL” 。Cursor 利用 MCP 調用相關的代碼生成工具、數據庫連接工具等,自動生成基礎代碼框架,并幫助開發人員完成數據庫表結構設計、SQL 語句編寫等工作,極大地提高了開發效率,減少了開發過程中的錯誤,讓開發人員能夠更加專注于業務邏輯的實現 。

4.3 辦公自動化

在辦公場景中,MCP 同樣發揮著重要作用。例如,在處理一份月度銷售報告時,員工可以通過自然語言指令,讓辦公軟件利用 MCP 自動從多個數據源,如 Excel 銷售數據文件、CRM 系統中的客戶數據等,提取相關信息,進行數據整合和分析,最后自動生成報告文檔 。以前,員工可能需要花費大量時間手動復制粘貼數據,進行格式調整和數據分析,現在借助 MCP,這些繁瑣的操作可以在短時間內自動完成,辦公效率得到了顯著提升 。

五、MCP 與 Function call 的區別

MCP 和 Function call 雖然都涉及大模型與外部工具的交互,但它們在多個方面存在明顯區別 。

從功能角度來看,Function call 本質上是大模型調用外部函數或 API 的一種機制,是大模型自身能力的直接擴展 。比如 GPT-4 可以利用 Function call 直接生成結構化的函數調用請求,查詢天氣、計算數值等操作 。而 MCP 則更側重于提供一個標準化的協議,它像是一個 “萬能適配器”,解決的是大模型與各種外部工具、數據源之間的兼容性問題,讓不同的模型和工具能夠高效地互操作 。

在實現方式上,Function call 通常與特定的大模型緊密綁定,依賴于模型廠商的特定實現 。不同的大模型在 Function call 的實現方式和接口上可能各不相同,缺乏統一的標準,這就導致開發者在使用時需要針對不同模型進行大量的適配工作 。而 MCP 則遵循統一的標準協議,如 JSON-RPC 2.0,開發者按照這個標準開發一次接口,就可以被多個大模型調用,大大降低了開發成本和復雜性 。

從應用場景來看,Function call 適用于處理簡單、低延遲的任務,比如實時翻譯、情感分析、查詢實時天氣等,能夠在模型推理過程中快速調用,高效地完成任務 。而 MCP 更適合復雜、異步的任務,例如企業內部系統的跨平臺數據整合,將 CRM、ERP 等系統封裝為 MCP Server,供多個 Agent 安全調用,實現復雜的數據交互和業務流程 。

簡而言之,MCP 解決的是 “如何讓 AI 連接萬物” 的通用性問題,而 Function call 解決的是 “如何讓 AI 快速執行特定操作” 的效率問題 。二者并不是相互替代的關系,而是互補協作,共同推動 AI 從單純的對話交互向自動化任務執行邁進,在不同的場景下發揮各自的優勢,為 AI 應用的發展提供強大的支持 。

六、MCP 的發展趨勢與代碼案例

6.1?發展趨勢

隨著人工智能技術的飛速發展,MCP 作為連接大模型與外部工具的關鍵技術,其未來發展趨勢備受關注 。

在技術層面,MCP 有望實現更加智能化的任務處理。通過不斷優化算法和模型,MCP 將能夠更精準地理解用戶需求,自動調用最合適的外部工具和數據源,實現任務的高效執行 。例如,在智能寫作場景中,MCP 不僅能幫助作者查詢資料、校對語法,還能根據文章的風格和主題,自動生成相關的案例和引用,提升文章的質量和專業性 。

在應用領域,MCP 將進一步拓展其邊界。除了現有的辦公、編程、問答等場景,MCP 還將深入到醫療、金融、教育等更多垂直領域 。在醫療領域,醫生可以借助 MCP 調用患者的病歷數據、醫學影像資料以及最新的醫學研究成果,為診斷和治療提供更全面的支持 ;在金融領域,MCP 可以幫助投資者快速分析市場數據、評估投資風險,制定更合理的投資策略 。

從生態建設角度來看,MCP 將促進形成更加開放和繁榮的 AI 生態系統。越來越多的開發者和企業將基于 MCP 開發各種創新應用和服務,不同的大模型、工具和數據源之間將實現更緊密的協作和共享 。這將推動 AI 技術的普及和應用,為各行各業的數字化轉型提供強大的動力 。

當然,MCP 的發展也面臨一些挑戰。例如,如何確保數據的安全和隱私,如何解決不同系統之間的兼容性問題,以及如何應對可能出現的技術壟斷等 。但隨著技術的不斷進步和相關標準的完善,這些問題有望逐步得到解決 。可以預見,MCP 將在未來的 AI 發展中扮演越來越重要的角色,為我們的生活和工作帶來更多的便利和創新 。

6.2 經典代碼案例及解釋

1. 客戶端連接到MCP服務器(SSE方式)
async def connect_to_sse_server(self, server_url: str):"""連接到使用SSE傳輸的MCP服務器"""self._streams_context = sse_client(url=server_url)streams = await self._streams_context.__aenter__()self._session_context = ClientSession(*streams)self.session = await self._session_context.__aenter__()await self.session.initialize()response = await self.session.list_tools()tools = response.toolsprint("\n已連接到服務器,可用工具:", [tool.name for tool in tools])

解釋:這段代碼展示了客戶端如何通過SSE(Server-Sent Events)方式連接到MCP服務器。它首先創建一個SSE客戶端上下文,然后進入上下文獲取數據流,接著創建客戶端會話并初始化。最后,它列出服務器支持的工具,驗證連接是否成功。

2. 定義一個MCP工具(天氣查詢)
@mcp.tool()
async def get_weather(city: str, unit: Literal["celsius", "fahrenheit"] = "celsius") -> str:"""獲取城市實時天氣信息"""# 模擬天氣查詢邏輯weather_info = f"{city}: 晴 25°C, 濕度45%, 東南風3級"return weather_info

解釋:這是一個簡單的MCP工具定義,用于獲取指定城市的天氣信息。它使用@mcp.tool()裝飾器將函數注冊為MCP工具,函數參數和返回值類型都明確指定,便于客戶端調用時傳遞參數和處理返回結果。

3. 啟動MCP服務器(SSE方式)
if __name__ == "__main__":mcp_server = mcp._mcp_serverstarlette_app = create_starlette_app(mcp_server, debug=True)uvicorn.run(starlette_app, host="0.0.0.0", port=8020)

解釋:這段代碼展示了如何啟動一個基于SSE的MCP服務器。它首先創建一個MCP服務器實例,然后通過create_starlette_app函數將其包裝為一個Starlette應用,最后使用uvicorn運行該應用,監聽指定的主機和端口。

七、總結與展望

7.1 文章總結

MCP 作為連接大模型與外部工具的創新技術,為人工智能的應用和發展開辟了新的道路。它以其獨特的標準化協議,打破了大模型與外部世界之間的壁壘,實現了高效、靈活的數據交互和任務執行,在智能問答、編程輔助、辦公自動化等多個領域展現出了巨大的應用價值和潛力 。

隨著技術的不斷演進,MCP 有望在未來進一步拓展其應用邊界,為更多行業帶來智能化的解決方案。同時,我們也期待更多的開發者能夠關注和探索 MCP 技術,共同推動人工智能生態系統的繁榮發展 。如果你對人工智能技術充滿熱情,不妨深入了解 MCP,開啟你的創新之旅,說不定下一個基于 MCP 的創新應用就將由你創造!

7.2 關鍵字解釋

  1. MCP (Model Context Protocol):模型上下文協議,用于標準化AI大模型與外部工具之間的交互。

  2. Function call:大模型調用外部函數或API的機制,與MCP不同,它通常依賴于特定模型的實現。

  3. SSE (Server-Sent Events):一種服務器推送技術,允許服務器向客戶端發送實時消息,常用于MCP的網絡傳輸。

  4. stdio:標準輸入輸出,用于在同一臺服務器上實現MCP客戶端與服務器之間的通信。

  5. JSON-RPC 2.0:一種基于JSON的RPC協議,MCP遵循該協議進行數據交換。

  6. Agent:在AI領域,指能夠自主執行任務的智能體,MCP常用于連接和管理Agent的工具。

  7. API:應用程序接口,MCP Server通過API與外部工具交互。

  8. Cursor:一個支持MCP的AI編程工具,可用于代碼生成和項目管理。

  9. OpenAI:一個知名的人工智能研究實驗室,其模型常與MCP結合使用。

  10. Anthropic:MCP的開發者,也是Claude大模型的母公司。

部分圖片素材來源:

1、https://zhuanlan.zhihu.com/p/32350404993

2、100 行代碼的 MCP 服務,打造一個簡易的“智能化運維”平臺-騰訊云開發者社區-騰訊云

相關文章素材:?

  1. MCP學習筆記:詳細介紹了MCP的概念、發展過程、架構及實際應用案例。

  2. 100 行代碼的 MCP 服務,打造一個簡易的“智能化運維”平臺:通過具體代碼示例展示了如何快速搭建一個基于MCP的服務。

?

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

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

相關文章

nginx性能調優與深度監控

目錄 nginx性能調優 更改進程數與連接數 進程數 連接數 靜態緩存功能設置 日志切割 配置網頁壓縮 nginx 的深度監控 GoAccess 簡介 GoAccess安裝 ?編輯 配置中文環境 GOAccess生成中文報告 測試訪問 nginx vts 簡介 nginx vts 安裝 nginx配置開啟vts 測試訪問…

【時時三省】Python 語言----牛客網刷題筆記

目錄 1,常用函數 1,input() 2,map() 3,split() 4,range() 5, 切片 6,列表推導式 山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省 1,常用函數 1,input() 該函數遇到 換行停止接收,返回類型為字符串 2,map() 該函數出鏡率較高,目的是將一個可迭…

docker compose yml 啟動的容器中,如何使用linux環境變量賦值

在 Docker Compose 中,可以通過環境變量(${VAR} 或 $VAR)來動態配置容器。以下是幾種常見的使用方式 - 使用 env_file 加載變量文件 可以單獨定義一個環境變量文件(如 app.env),然后在 docker-compose.y…

深入解析Kafka JVM堆內存:優化策略與監控實踐

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「storms…

git常用操作命令

本文介紹git常用的操作命令,供大家參考。 1、開始 # 初始化本地git git init# 在初始化的目錄中,創建readme.txt,添加到git庫中 git add readme.txt git commit -m "寫了一個readme.txt文件"2、版本回退 2.1、git reset git lo…

解鎖 MCP 中的 JSON-RPC:跨平臺通信的奧秘

你好,我是 shengjk1,多年大廠經驗,努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注!你會有如下收益: 了解大廠經驗擁有和大廠相匹配的技術等希望看什么,評論或者私信告訴我! 文章目錄 零、 背景一、RPC vs HTTP1.1 什么是RPC1.2 為什么需要 RPC?1.3 RPC 解決了什么…

【Redis】第1節|Redis服務搭建

一、Redis 基礎概念 核心功能 內存數據庫,支持持久化(RDB/AOF)、主從復制、哨兵高可用、集群分片。常用場景:緩存、分布式鎖、消息隊列、計數器、排行榜等。 安裝環境 依賴 GCC 環境(C語言編譯)&#xff0…

GitLab-CI簡介

概述 持續集成(CI)和 持續交付(CD) 是一種流行的軟件開發實踐,每次提交都通過自動化的構建(測試、編譯、發布)來驗證,從而盡早的發現錯誤。 持續集成實現了DevOps, 使開發人員和運維人員從繁瑣的工作中解…

FFmpeg解碼器配置指南:為什么--enable-decoders不能單獨使用?

FFmpeg解碼器配置指南 在FFmpeg的編譯配置過程中,許多開發者會遇到關于解碼器配置的困惑。特別是--enable-decoders這個選項,很多人誤以為啟用它就能自動包含所有解碼器。本文將深入解析FFmpeg解碼器配置的機制,并通過實際測試展示正確的配置…

C++多態與虛函數

C++多態與虛函數詳解 多態(Polymorphism)是 C++ 面向對象編程的重要特性,通過統一的接口實現不同的行為。虛函數(Virtual Function)是實現運行時多態的核心機制。以下從多態的構成條件、意義、析構函數的虛函數化、純虛函數和抽象類,以及虛函數表的底層實現依次介紹。 1.…

游戲引擎學習第313天:回到 Z 層級的工作

回顧并為今天的內容定下基調 昨天我們新增了每個元素級別的排序功能,并且采用了一種我們認為挺有意思的方法。原本計劃采用一個更復雜的實現方式,但在中途實現的過程中,突然意識到其實有個更簡單的做法,于是我們就改用了這個簡單…

ODBC簡介

ODBC(Open Database Connectivity)是一個由 Microsoft 制定的標準接口,允許不同的應用程序通過統一的方式訪問各種數據庫系統。 🧠 簡單理解: ODBC 就像是 “翻譯官”,在應用程序(如 Excel、Py…

RK3588 buildroot QT 懸浮顯示(OSD)

概述 主要介紹在rockchip rk3588 buildroot中 運行QT程序。需要結合之前的文檔:認識DRM顯示系統、buildroot中QT開發指導、以及如何集成QT庫到3588板子上。 場景:在linux開發中,需要使用QT開發程序,做OSD顯示。(如下圖顯示,顯示器播放視頻,QT頁面懸浮于視頻上方,顯示…

sockaddr_in

在網絡編程中&#xff0c;sockaddr_in 結構體是用于表示 IPv4 地址的套接字地址結構。它定義在 <netinet/in.h> 頭文件中&#xff0c;是 sockaddr 結構體的一個特化版本&#xff0c;專門用于處理 IPv4 地址。 下面是 sockaddr_in 結構體的典型定義&#xff1a; struct …

有銅半孔工藝的制造難點與工藝優化

技術難點剖析 有銅半孔工藝在制造過程中面臨多重挑戰&#xff0c;主要集中在材料加工精度、孔壁完整性及良率控制三個方面&#xff1a; 銅層翹起與毛刺殘留 半孔成型時&#xff0c;銑刀高速切割可能導致孔壁銅層被拉扯&#xff0c;產生翹起或殘留銅屑&#xff0c;影響導電性能…

云原生安全:網絡協議TCP詳解

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 &#xff08;注&#xff1a;文末附可視化流程圖與專有名詞說明表&#xff09; 1. 基礎概念 TCP&#xff08;Transmission Control Protocol&#xff09;是…

Dify中的Extension插件開發例子:以neko為例

本文使用Dify v1.0.0-beta.1版本。以neko為例&#xff0c;介紹Dify中的Extension插件開發例子。需要說明的是Dify官方要求Python≥3.12&#xff0c;但發現本地PyCharm調試Python≥3.12有問題&#xff0c;就采用的Python 3.11版本。 一.Extension插件項目創建 1.填寫插件信息 …

Linux中logger命令的使用方法詳解

文章目錄 一、基礎語法二、核心功能選項三、?設施與優先級對照?1. 常用設施&#xff08;Facility&#xff09;2. 優先級&#xff08;Priority&#xff09;從低到高&#xff1a;3. 組合示例? 四、典型使用場景1. 記錄簡單消息2. 帶標簽和優先級3. 記錄命令輸出4. 發送到遠程服…

【圖論 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+

本文涉及知道點 C圖論 C并集查找 預計2025年5月29號 7:00發布 P3671 [USACO17OPEN] Where’s Bessie? S 題目描述 Farmer John 一直以精通技術而聞名&#xff0c;他正在測試他的新型無人機搭載的奶牛定位相機。這款相機據說可以拍攝他的田地并自動確定奶牛的位置。不幸的是…

《軟件工程》第 13 章 - 軟件維護

知識思維導圖 13.1 軟件維護與進化的概念 1. 核心概念 軟件維護&#xff1a;軟件交付使用后&#xff0c;為糾正錯誤、改善性能或其他屬性而進行的修改過程軟件進化&#xff1a;隨著時間推移&#xff0c;軟件系統為適應環境變化和用戶需求而不斷演變的過程 2. 維護類型&#…