【翻譯、轉載】【譯文】模型上下文協議(Model Context Protocol, MCP)簡介

原文地址:

https://michaelwapp.medium.com/model-context-protocol-mcp-an-introduction-guide-25736f3dd672

在人工智能和 AI 驅動應用日新月異的格局中,一種與大型語言模型(LLM)交互的新方式正在興起。隨著 AI 智能體(Agent)的崛起帶來了系統間高效交互的需求,高效的模型交互變得比以往任何時候都更加重要。

模型上下文協議(Model Context Protocol, MCP)是一種新興標準,旨在簡化 AI 模型與外部系統的交互方式,確保基于上下文的響應并實現與各種應用的無縫集成。但 MCP 究竟是什么?為何它在開發者和 AI 愛好者中日益受到關注?

本文將解釋 MCP 是什么,它是如何工作的,以及它為何對 AI 交互的未來至關重要。

在這里插入圖片描述

什么是模型上下文協議?

其核心是,模型上下文協議是一種標準化的方式,讓 AI 系統能夠在對話期間訪問外部信息源。可以將其想象為賦予 AI 模型在需要時**“查找信息或執行操作”**的能力,而不是僅僅依賴其預訓練知識或當前的對話上下文。

想象一下你正在與一個 AI 助手對話。沒有 MCP,AI 只能利用其訓練數據(有知識截止日期)以及你在當前對話中明確告知它的內容。有了 MCP,AI 可以動態地訪問外部信息源——如數據庫、API 或文檔存儲庫——以提供更準確、最新和個性化的響應。

模型上下文協議是 Anthropic 發起的一個開源項目。他們的工作旨在創建一個統一的協議,允許 AI 系統以一致的方式請求和接收外部數據,無論底層實現如何。這種標準化對于構建更可靠、更透明的 AI 助手至關重要,這些助手能夠為用戶提供及時準確的信息。
在這里插入圖片描述

MCP 是如何工作的?

模型上下文協議通過幾個組件之間的結構化通信模式運作:

  • 用戶 (User):與 AI 系統交互的人(例如,通過聊天界面、SaaS 應用程序或任何其他與 AI 通信的方式)。
  • AI 模型 (AI Model):處理用戶查詢的大型語言模型(如 GPT-4、Claude 或其他模型)。
  • MCP 服務器 (MCP Server):一個中間件服務,它解釋模型對額外上下文的請求,并獲取相關信息。
  • 信息源 (Information Sources):提供模型請求信息的外部數據存儲庫、API 或服務。

以下是典型的 MCP 交互流程:

  1. 用戶向 AI 模型發送提示 (prompt)。
  2. 模型處理提示,并確定需要額外的上下文來提供準確的響應。
  3. 模型按照 MCP 格式生成對特定信息的請求。
  4. MCP 服務器接收此請求,對其進行解釋,并查詢適當的信息源。
  5. 信息源將請求的數據返回給 MCP 服務器。
  6. MCP 服務器格式化數據并將其發送回模型。
  7. 模型將這些新信息整合到其上下文中,并為用戶生成響應。

這個過程無縫發生,且通常近乎實時,給人一種 AI 助手知識更淵博、能力更強的印象。

MCP 的技術結構

現在讓我們看看模型上下文協議的底層工作原理:

請求結構

當 AI 模型需要額外的上下文時,它會生成一個結構化的請求,通常包括:

{"queries": [{"provider": "github","query": "the last 10 files changed in the main branch of the example repository","parameters": {"repo_name": "example"}}]
}

在這個例子中,你可以看到:

  • queries: 查詢對象的數組,允許同時發起多個信息請求。
  • provider: 指定使用哪個信息源(在此例中是 “github”,可能指向一個搜索引擎或知識庫)。
  • query: 實際的查詢文本。
  • parameters: 額外的配置選項,例如 repo_name

請注意,這是一個簡化版本,因為 AI 模型使用此上下文請求格式的更復雜版本來查詢外部源。

響應格式

MCP 服務器隨后以模型能夠解釋的標準化格式返回數據:

{"responses": [{"provider": "github","status": "success","results": [{"filename": "app.py","commit_id": "c21100226d66741de8d56fb8351d83e5723a5e32"},{"filename": "requrirements.txt","commit_id": "c21100226d66741de8d56fb8351d83e5723a5e32"},// 更多結果...]}]
}

這種結構化格式確保模型能夠高效地處理和整合新信息。

常見的 MCP 提供者 (Providers)

MCP 實現通常包括幾個標準提供者:

  • 搜索 (Search):從搜索引擎或知識庫檢索相關信息。
  • 文檔 (Document):訪問特定的文檔或內容存儲庫。
  • 數據庫 (Database):查詢結構化數據庫以獲取精確信息。
  • API:與外部服務接口以獲取實時數據。
  • 向量 (Vector):在向量數據庫上執行相似性搜索(對語義匹配很有用)。

每個提供者都有自己的參數和響應格式,但它們都遵循通用的 MCP 結構以保持一致性。

MCP 的好處

模型上下文協議提供了幾個顯著優勢:

1. 克服知識截止日期

LLM 有一個訓練截止日期,此后它們不了解世界事件或新信息。MCP 允許模型訪問最新信息,有效地消除了這一限制。

2. 減少幻覺

通過向模型提供來自可靠來源的事實信息,MCP顯著降低了 AI 響應中出現“幻覺”或捏造信息的可能性。

3. 個性化

MCP 使模型能夠訪問用戶特定信息(在獲得適當權限的情況下),從而實現更個性化的交互,而無需將所有這些信息都包含在對話上下文中。

4. 專業知識

模型可以利用特定領域的知識庫和工具,使其能夠在專業領域提供專家級的響應。

5. 透明度與溯源 (Attribution)

MCP 實現通常包含信息來源的歸屬信息,清楚地表明 AI 的知識來源,從而提高用戶信任度。

真實世界示例

讓我們探討一些實際的 MCP 應用場景:

示例 1:訪問日歷的個人助理

用戶:“我明天有什么會議?”

沒有 MCP 時,AI 可能不得不回答:“我無法訪問您的日歷。”

使用 MCP 時

  1. 模型識別出它需要日歷信息。
  2. 它向日歷提供者生成一個 MCP 請求。
  3. MCP 服務器(通過適當的身份驗證)查詢用戶的日歷。
  4. 日歷數據被返回給模型。
  5. 模型以詳細列表的形式回應用戶的會議安排。

示例 2:訪問文檔的技術支持

用戶:“我該如何解決這個軟件系統的錯誤 FD-123?”

使用 MCP 時

  1. 模型識別出這是一個技術支持問題。
  2. 它生成一個 MCP 請求,以搜索該軟件系統的文檔。
  3. MCP 服務器檢索相關的故障排除指南。
  4. 模型綜合這些信息,形成一個有用的響應,其中可能包括官方文檔的直接引用。

示例 3:獲取實時數據的研究助理

用戶:“mRNA 疫苗技術的最新進展是什么?”

使用 MCP 時

  1. 模型確定它需要超出其訓練數據的當前信息。
  2. 它通過 MCP 查詢一個科學研究數據庫。
  3. MCP 服務器返回最近的論文和發現。
  4. 模型將這些信息綜合成一個全面的摘要,并附帶引文。

實現 MCP:可用資源

對于有興趣在自己項目中實施 MCP 的開發者,有幾個可用的開源資源:

  • MCP 服務器參考實現:MCP 服務器規范的一個標準實現。
  • 官方參考文檔:MCP 的官方文檔。
  • “MCP Hub”:在這里可以找到許多已發布的、可立即使用的 MCP。

安全和隱私考量

雖然 MCP 提供了強大的功能,但它也引發了重要的安全和隱私考量:

  • 訪問控制 (Access Control):MCP 實現必須仔細管理模型可以訪問哪些信息源以及在什么情況下可以訪問。
  • 數據最小化 (Data Minimization):應僅檢索必要的信息并與模型共享。
  • 用戶同意 (User Consent):應告知用戶并在其交互過程中訪問外部數據源時征得其同意。
  • 身份驗證 (Authentication):必須為訪問私有或敏感信息源實施安全的身份驗證機制。
  • 審計追蹤 (Audit Trails):記錄 MCP 請求有助于保持透明度和問責制。

MCP 的未來

模型上下文協議代表著朝著功能更強大、更值得信賴的 AI 系統邁出的重要一步。隨著協議的發展,我們可以期待看到:

  • 標準化 (Standardization):MCP 標準在不同 AI 提供商之間得到更廣泛的采用。
  • 更豐富的提供者生態系統 (Richer Provider Ecosystem):出現更多針對不同類型信息和服務的專業提供者。
  • 增強的推理能力 (Enhanced Reasoning):模型不僅能訪問信息,還能推理應該訪問哪些信息以及如何組合多個來源的信息。
  • 用戶控制 (User Control):提供更精細的用戶控制,讓用戶決定可以訪問哪些信息源以及何時訪問。

結論

模型上下文協議通過打破模型與其所需信息之間的壁壘,正在改變我們與 AI 系統的交互方式。通過為 AI 模型訪問外部信息提供標準化的途徑,MCP 使得 AI 體驗更加準確、最新和個性化。

在下一篇文章中,我們將探討一個模型上下文協議服務器的示例實現。此外,我們還將探討 OpenAI 對模型上下文協議標準的回應(或對應方案)。

對于希望在其 AI 解決方案中實施 MCP 的組織,我們的機構專門開發根據特定業務需求量身定制的 MCP 服務器和集成。我們幫助彌合您組織的知識庫與用戶交互的 AI 系統之間的差距。

無論您是構建需要訪問產品文檔的客戶服務聊天機器人,還是需要最新科學論文的研究助理,或是需要安全訪問公司數據的內部工具,MCP 都提供了使這些交互成為可能的架構。

這篇博文由領先的 AI 集成服務提供商 AVIMBU 撰寫。請訪問我們的網站 avimbu.com,了解更多關于我們如何幫助您的組織實施 MCP 和其他高級 AI 功能的信息。

注意:模型上下文協議是一項快速發展的技術。本文信息截至 2025 年 3 月。有關最新信息,請參閱官方 MCP 規范和文檔。

同時也需要如下貼圖中提到的,mcp迭代非常快,很可能信息就不準確了。官網是最可靠的參考。

參考資料:
在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

[方法論]軟件工程中的軟件架構設計:從理論到實踐的深度解析

文章目錄 軟件架構設計:從理論到實踐的深度解析引言一、軟件架構設計的核心目標體系1.1 質量屬性矩陣1.2 架構權衡藝術 二、架構設計方法論演進2.1 傳統設計范式2.2 現代架構方法論2.3 設計模式演化路徑 三、主流架構風格全景圖3.1 單體架構(Monolithic&…

【win11 】win11 鍵盤測試

我的鍵盤是支持mac和win的,fn tab 就能切換,有可能是用錯了模式,導致 我alt a 就會彈出 win11的 wifi 等菜單控制 鍵盤測試網站 https://keyboard.bmcx.com/ 識別到我按下的是alt

Linux環境部署iview-admin項目

環境:阿里云服務 系統:CentOS7.X系統 1、下載源碼安裝包 wget https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz2、解壓并放入指定目錄 tar -xf node-v14.17.3-linux-x64.tar.xz && mv node-v14.17.3-linux-x64 /usr/local/no…

VSCode常用插件推薦

文章目錄 VSCode常用插件推薦1 Git相關插件2 代碼格式3 AI工具4 語言插件通用工具參考 VSCode常用插件推薦 1 Git相關插件 2 代碼格式 3 AI工具 4 語言插件 通用工具 參考 50 個 VSCode 必裝插件推薦 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg

【Unity】使用XLua進行熱修復

準備工作: (1)將XLua的Tool拖入Asset (2)配置熱修復 (3)運行Genrate Code (4)運行Hotfix Inject In Editor 編寫腳本(注意類上帶有[Hotfix]) [Hot…

javaEE——單例模式

目錄 前言1.概念2. 實現3. 比較和改進總結 前言 本篇文章來介紹單例模式,并講述在保證線程安全的前提下,單例模式的寫法。 1.概念 單例模式是一種設計模式,可以說是寫代碼的一種模板,如果在一些固定的場景下按照設計模式進行寫…

TS 對象類型

給對象添加類型注解 ![在這里插入圖片描述(https://i-blog.csdnimg.cn/direct/6c413992c11142d88106633ec442b905.png) 格式:數據類型名:類型別名 注意:對象類型限制使用分號,如果對象中存在方法就寫成:方法(&#x…

C++類_虛基類

在 C 里,虛基類是用來解決菱形繼承問題的。菱形繼承問題是指當一個派生類從兩個或更多基類派生,而這些基類又從同一個基類派生時,派生類會包含多份間接基類的數據副本,這可能會引發數據冗余和二義性問題。虛基類可以保證在派生類中…

詳細案例,集成算法

以下是一個使用 隨機森林(RF) 和 XGBoost 解決結構化數據分類問題的完整案例(以泰坦尼克號生存預測為例),包含數據處理、建模和結果分析: 案例:泰坦尼克號乘客生存預測 目標:根據乘客…

《C#數據結構與算法》—201線性表

線性表的實現方式 順序表 線性表的順序存儲是指在內存中用一塊地址連續的空間依次存放線性表的數據元素,用這種方式存儲的線性表叫順序表。 特點:表中相鄰的數據元素在內存中存儲位置也相鄰。 順序表接口實現: 方法名參數返回值描述GetLen…

深入解析C++11委托構造函數:消除冗余初始化的利器

一、傳統構造函數的痛點 在C11之前,當多個構造函數需要執行相同的初始化邏輯時,開發者往往面臨兩難選擇: class DataProcessor {std::string dataPath;bool verbose;int bufferSize; public:// 基礎版本DataProcessor(const std::string&am…

LeetCode 熱題 100 189. 輪轉數組

LeetCode 熱題 100 | 189. 輪轉數組 大家好,今天我們來解決一道經典的算法題——輪轉數組。這道題在LeetCode上被標記為中等難度,要求我們將數組中的元素向右輪轉 k 個位置。下面我將詳細講解解題思路,并附上Python代碼實現。 問題描述 給定…

GAEA商業前景和生態系統擴展

GAEA情感坐標系不僅增強了AI對人類情感的理解,也為Web3生態注入了新的活力。通過去中心化的數據存儲和共享,GAEA構建了一個開放透明的數據市場,為AI訓練提供了優質的數據源。同時,貢獻數據的用戶將獲得靈魂積分(SOUL P…

[原創](現代Delphi 12指南):[macOS 64bit App開發]: [2]如何使用跨平臺消息框?

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、…

js逆向繞過指紋識別

??一、兼容性說明?? 官方支持 curl_cffi 明確支持 Windows 平臺,并提供了預編譯的安裝包。其核心功能(如瀏覽器指紋模擬、HTTP/2 支持)在 Windows 上與 Linux/macOS 表現一致。 版本要求 ? Python 3.8 及以上版本(推薦 Pyth…

聊聊對Mysql的理解

目錄 1、Sql介紹 1.1、SQL的分類 1.2、數據庫的三大范式 1.3、數據表的約束 1.4、約束的添加與刪除 2、核心特性 3、主要組件 4、數據結構原理 5、索引失效 6、常用問題 7、優勢與局限 前言 MySQL是一個開源的關系型數據庫管理系統(RDBMS),由瑞典MySQL A…

[HOT 100] 1617. 統計子樹中城市之間最大距離

文章目錄 1. 題目鏈接2. 題目描述3. 題目示例4. 解題思路5. 題解代碼6. 復雜度分析 1. 題目鏈接 1617. 統計子樹中城市之間最大距離 - 力扣(LeetCode) 2. 題目描述 給你 n 個城市,編號為從 1 到 n 。同時給你一個大小為 n-1 的數組 edges &…

接口自動化——參數化

之前有說過,通過pytest測試框架標記參數化功能可以實現數據驅動測試。數據驅動測試使用的文件主要有以下類型: txt 文件 csv 文件excel 文件json 文件yaml 文件.... 本文主要講的就是以上幾種文件類型的讀取和使用 一.txt 文件讀取使用 首先創建一個 …

游戲引擎學習第257天:處理一些 Win32 相關的問題

設定今天的工作計劃 今天我們本來是打算繼續開發性能分析器(Profiler),但在此之前,我們認為有一些問題應該先清理一下。雖然這類事情不是我們最關心的核心內容,但我們覺得現在是時候處理一下了,特別是為了…

實驗三 觸發器及基本時序電路

1.觸發器的分類?各自的特點是什么? 1 、 D 觸發器 特點:只有一個數據輸入端 D ,在時鐘脈沖的觸發沿,輸出 Q 的狀態跟隨輸入端 D 的 狀態變化,即 ,功能直觀,利于理解和感受…