MCP(Model Context Protocol)是什么?一文看懂 – AI百科知識(shí)
Model Context Protocol (MCP) 是 Anthropic 推出的開放協(xié)議,旨在統(tǒng)一大型語言模型 (LLM) 與外部數(shù)據(jù)源和工具之間的通信。它如同 AI 應(yīng)用的“USB-C 接口”,提供標(biāo)準(zhǔn)化的接口,使 LLM 能夠靈活地訪問和交互各種數(shù)據(jù)與服務(wù),從而促進(jìn) AI 的廣泛應(yīng)用和生態(tài)發(fā)展。
想要了解 Model Context Protocol(MCP)嗎?它是由前沿人工智能公司 Anthropic 于 2024 年推出的一項(xiàng)開放協(xié)議。MCP 的目標(biāo)是統(tǒng)一大型語言模型(LLM)與外部世界——各種數(shù)據(jù)源和工具——的溝通方式。設(shè)想一下,如果 AI 應(yīng)用也有一個(gè)“通用接口”,能夠像 USB-C 一樣方便地連接不同的設(shè)備,那會(huì)怎樣?MCP 正是為此而生,它為 AI 模型提供了一個(gè)標(biāo)準(zhǔn)化的“接口”,讓它們可以輕松訪問和調(diào)用各種數(shù)據(jù)和服務(wù),極大地推動(dòng)了 AI 技術(shù)的普及和應(yīng)用。
MCP 是什么?
MCP 是一種由 Anthropic 提出的開放協(xié)議,它定義了 LLM 與外部數(shù)據(jù)源和工具交互的標(biāo)準(zhǔn)。通過提供統(tǒng)一的接口,MCP 使得 LLM 能夠靈活地訪問和利用各種數(shù)據(jù)和服務(wù)。
背景故事
隨著 LLM 在人工智能領(lǐng)域的崛起,它們展現(xiàn)出了強(qiáng)大的能力,比如理解自然語言、生成文本、編寫代碼以及解決復(fù)雜問題。然而,LLM 的知識(shí)通常局限于它們所接受訓(xùn)練的數(shù)據(jù),這些數(shù)據(jù)是靜態(tài)的,并且停留在某個(gè)特定的時(shí)間點(diǎn)。這意味著 LLM 無法獲取實(shí)時(shí)的信息,也無法直接訪問和操作外部的私有數(shù)據(jù)源或工具。為了彌補(bǔ)這些不足,開發(fā)者需要將 LLM 與各種外部數(shù)據(jù)源(例如數(shù)據(jù)庫、API、文件系統(tǒng))和工具(例如計(jì)算器、代碼執(zhí)行環(huán)境、專業(yè)軟件)集成。傳統(tǒng)的集成方式,往往需要針對(duì)每個(gè)特定的數(shù)據(jù)源或工具進(jìn)行定制化的接口開發(fā),這不僅耗時(shí)費(fèi)力,而且成本高昂。
舉例來說,如果一個(gè)應(yīng)用需要 LLM 同時(shí)訪問數(shù)據(jù)庫、調(diào)用外部 API 并讀取本地文件,開發(fā)者可能需要編寫三套不同的接口代碼,分別處理不同的認(rèn)證授權(quán)機(jī)制、數(shù)據(jù)格式和通信協(xié)議。這種“點(diǎn)對(duì)點(diǎn)”的集成模式,就像“M×N 問題”一樣,即 M 個(gè)模型需要與 N 個(gè)工具集成,理論上需要 M×N 個(gè)連接器,導(dǎo)致系統(tǒng)變得復(fù)雜且難以維護(hù)。
這種定制化的集成方式也帶來了安全風(fēng)險(xiǎn),比如數(shù)據(jù)泄露、未經(jīng)授權(quán)的訪問和惡意代碼執(zhí)行等,因?yàn)槊看涡碌募啥伎赡芤胄碌陌踩┒础R虼耍袠I(yè)亟需一種標(biāo)準(zhǔn)化的、統(tǒng)一的協(xié)議來簡化 LLM 與外部世界的連接,降低集成的復(fù)雜度和成本,并提高系統(tǒng)的安全性和可維護(hù)性。
起源
Anthropic 將 MCP 設(shè)計(jì)為一個(gè)開放標(biāo)準(zhǔn),積極推動(dòng)其成為行業(yè)規(guī)范,鼓勵(lì)社區(qū)參與和貢獻(xiàn),而非將其局限于單一廠商的技術(shù)棧。從最初發(fā)布開始,MCP 提供了詳細(xì)的規(guī)范文檔、軟件開發(fā)工具包(SDK)以及一系列參考實(shí)現(xiàn),幫助開發(fā)者快速上手并參與到 MCP 生態(tài)的建設(shè)中。Anthropic 的這一舉措得到了業(yè)界的積極響應(yīng),包括 Block(前身為 Square)和 Apollo 在內(nèi)的公司在其發(fā)布初期就將其集成到自身的系統(tǒng)中,而 Zed、Replit、Codeium 和 Sourcegraph 等開發(fā)者工具提供商也開始與 MCP 合作,增強(qiáng)其平臺(tái)的功能。MCP 的推出,標(biāo)志著 LLM 應(yīng)用開發(fā)進(jìn)入了一個(gè)新的階段,通過提供一種通用的“語言”和“接口”,極大地簡化了 AI 模型與外部環(huán)境的交互,為構(gòu)建更強(qiáng)大、更智能、更易于集成的 AI 應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ)。
MCP 的核心目標(biāo)
簡化集成流程
通過統(tǒng)一的協(xié)議規(guī)范,減少開發(fā)者需要編寫的定制化代碼量,從而簡化集成流程。
提升開發(fā)效率
開發(fā)者可以復(fù)用已有的 MCP 服務(wù)器實(shí)現(xiàn),或者基于標(biāo)準(zhǔn)快速開發(fā)新的 MCP 服務(wù)器,加快 AI 應(yīng)用的開發(fā)周期。
增強(qiáng)安全性,MCP 規(guī)范中包含了安全相關(guān)的考量,比如基于 OAuth 2.1 的授權(quán)機(jī)制,有助于構(gòu)建更安全的 AI 應(yīng)用。
促進(jìn)生態(tài)發(fā)展
通過開放標(biāo)準(zhǔn)和社區(qū)協(xié)作,鼓勵(lì)更多的開發(fā)者和組織參與到 MCP 生態(tài)的建設(shè)中,開發(fā)出更多功能豐富、用途各異的 MCP 服務(wù)器,豐富 AI 模型的能力邊界,推動(dòng) AI 技術(shù)的廣泛應(yīng)用和創(chuàng)新。
MCP 的形象比喻——“AI 應(yīng)用的 USB-C 接口”
Model Context Protocol (MCP) 被其創(chuàng)造者 Anthropic 以及業(yè)界廣泛比喻為 “AI 應(yīng)用的 USB-C 接口”。這個(gè)比喻生動(dòng)地揭示了 MCP 在 AI 生態(tài)系統(tǒng)中的核心作用和價(jià)值。正如 USB-C 接口通過其標(biāo)準(zhǔn)化、可逆、多功能的特性,極大地簡化了各種電子設(shè)備(如筆記本電腦、智能手機(jī)、平板電腦、外圍設(shè)備等)之間的連接和數(shù)據(jù)傳輸,取代了以往多種不同且互不兼容的接口(如 USB-A、Micro-USB、HDMI、VGA 等)
在 MCP 出現(xiàn)之前,AI 模型(尤其是大型語言模型)與外部世界的連接往往是零散的、定制化的,每個(gè)新的集成都需要開發(fā)特定的適配器和接口,就像在 USB-C 普及之前,用戶需要為不同的設(shè)備準(zhǔn)備不同的線纜和轉(zhuǎn)換器一樣不便。
MCP 的出現(xiàn),如同為 AI 世界引入了 USB-C 標(biāo)準(zhǔn),允許 AI 模型通過一種通用的協(xié)議去“即插即用”地訪問各種 MCP 服務(wù)器(這些服務(wù)器封裝了對(duì)特定數(shù)據(jù)或工具的訪問能力)。正如 USB-C 接口能支持?jǐn)?shù)據(jù)傳輸、視頻輸出、電力輸送等多種功能,MCP 也支持資源訪問、工具調(diào)用、提示管理、啟發(fā)式交互等多種核心功能,能適應(yīng)多樣化的 AI 應(yīng)用場景。深刻地說明了 MCP 在推動(dòng) AI 技術(shù)普及和應(yīng)用創(chuàng)新方面所具有的潛力,有望成為連接 AI 模型與現(xiàn)實(shí)世界的關(guān)鍵橋梁。
MCP 的核心組件
Host(宿主)
Host 是用戶與 AI 模型進(jìn)行交互的界面或應(yīng)用程序。它負(fù)責(zé)接收用戶的輸入(例如問題、指令),并將這些輸入傳遞給 AI 模型進(jìn)行處理。Host 也負(fù)責(zé)展示 AI 模型生成的回復(fù)或執(zhí)行操作的結(jié)果給用戶。在 MCP 的交互流程中,Host 扮演著協(xié)調(diào)者的角色,理解用戶意圖,決定何時(shí)以及如何調(diào)用 MCP Client 來獲取外部數(shù)據(jù)或執(zhí)行工具操作。
一個(gè)典型的 Host 例子是 Claude Desktop 應(yīng)用程序,用戶可以在其中直接與 Claude 模型對(duì)話,通過 MCP 訪問本地文件系統(tǒng)或網(wǎng)絡(luò)資源。Host 需要能管理 MCP Client 的生命周期,處理與用戶交互相關(guān)的邏輯,例如權(quán)限請(qǐng)求、錯(cuò)誤提示等。
Client(客戶端)
MCP Client 是 Host 與 MCP Server 之間的橋梁。它負(fù)責(zé)與一個(gè)或多個(gè) MCP Server 建立連接,將 AI 模型的請(qǐng)求(例如,獲取特定資源、調(diào)用某個(gè)工具)封裝成符合 MCP 規(guī)范的請(qǐng)求消息發(fā)送給相應(yīng)的 Server。Client 也負(fù)責(zé)接收來自 Server 的響應(yīng)消息,將結(jié)果返回給 Host 或直接傳遞給 AI 模型。MCP Client 需要實(shí)現(xiàn) MCP 協(xié)議規(guī)范,包括消息的編碼解碼、傳輸協(xié)議(如 HTTP、WebSockets、gRPC 或 stdio)的處理、以及必要的安全機(jī)制(如 OAuth 2.1 認(rèn)證)。在某些實(shí)現(xiàn)中,MCP Client 可能內(nèi)置于 Host 應(yīng)用程序中,或者作為一個(gè)的庫被 Host 調(diào)用。
Server(服務(wù)器)
MCP Server 是實(shí)際提供數(shù)據(jù)或執(zhí)行工具操作的組件。每個(gè) MCP Server 封裝了對(duì)特定數(shù)據(jù)源(如數(shù)據(jù)庫、文件系統(tǒng)、API)或工具(如代碼解釋器、計(jì)算器、專業(yè)軟件)的訪問能力。當(dāng) MCP Server 收到來自 Client 的請(qǐng)求后,會(huì)根據(jù)請(qǐng)求的類型和參數(shù),執(zhí)行相應(yīng)的操作(例如,查詢數(shù)據(jù)庫、讀取文件、調(diào)用外部 API),將結(jié)果封裝成符合 MCP 規(guī)范的響應(yīng)消息返回給 Client。MCP Server 也需要實(shí)現(xiàn) MCP 協(xié)議規(guī)范,對(duì)外暴露其支持的能力(Capabilities),例如提供了哪些資源、哪些工具、以及哪些提示模板。開發(fā)者可以根據(jù) MCP 規(guī)范開發(fā)自定義的 MCP Server,以擴(kuò)展 AI 模型的能力。
這種三組件架構(gòu)清晰地將用戶交互、協(xié)議通信和具體功能實(shí)現(xiàn)分離開來,使 MCP 系統(tǒng)具有很好的模塊化和可擴(kuò)展性。Host 專注于用戶界面和體驗(yàn),Client 處理協(xié)議層面的通信,Server 提供具體的業(yè)務(wù)邏輯和數(shù)據(jù)訪問能力。
MCP 的交互流程示例
為了更好地理解 MCP 架構(gòu)中 Host、Client 和 Server 三個(gè)組件是如何協(xié)同工作的,我們可以通過一個(gè)具體的交互示例來說明。
假設(shè)用戶在 Claude Desktop(Host)中提出了一個(gè)問題:“我桌面上有哪些文檔?”。以下是處理這個(gè)請(qǐng)求的典型 MCP 交互流程:
- 用戶輸入 (User Input):用戶在 Claude Desktop 的界面中輸入問題“我桌面上有哪些文檔?”并發(fā)送。Host(Claude Desktop)接收到這個(gè)用戶請(qǐng)求。
- Host 處理 (Host Processing):Host 將用戶的原始問題傳遞給其內(nèi)部的 AI 模型(例如 Claude 模型)進(jìn)行分析和理解。AI 模型需要判斷這個(gè)問題是否需要訪問外部資源或工具來獲取答案。
- 模型分析 (Model Analysis):AI 模型分析問題后,識(shí)別出用戶意圖是獲取本地文件系統(tǒng)信息。模型決定需要調(diào)用一個(gè)能訪問文件系統(tǒng)的外部工具。在 MCP 框架下,這意味著模型會(huì)生成一個(gè)請(qǐng)求,指示需要調(diào)用一個(gè)特定的 MCP Tool(例如,一個(gè)封裝了文件系統(tǒng)瀏覽能力的 MCP Server 提供的工具)。
- Client 請(qǐng)求 (Client Request):Host 內(nèi)部的 MCP Client 接收到 AI 模型發(fā)出的調(diào)用外部工具的指令。MCP Client 會(huì)根據(jù)指令,查找預(yù)先配置好的、能提供文件系統(tǒng)訪問服務(wù)的 MCP Server。然后,Client 會(huì)按照 MCP 協(xié)議規(guī)范,將模型的請(qǐng)求(例如,請(qǐng)求列出用戶桌面上的文件)封裝成一個(gè)標(biāo)準(zhǔn)的 MCP 請(qǐng)求消息,通過指定的傳輸方式(例如 HTTP、WebSockets 或 stdio)發(fā)送給目標(biāo) MCP Server。
- Server 執(zhí)行 (Server Execution):目標(biāo) MCP Server(例如,一個(gè)專門的文件系統(tǒng) MCP Server)接收到來自 Client 的請(qǐng)求。Server 解析請(qǐng)求,驗(yàn)證權(quán)限(如果需要),然后執(zhí)行相應(yīng)的操作——在這個(gè)例子中,就是掃描用戶指定的桌面目錄,獲取文件列表。執(zhí)行完畢后,MCP Server 將獲取到的文檔列表(例如,一個(gè)包含文件名、路徑等信息的 JSON 對(duì)象)封裝成一個(gè)標(biāo)準(zhǔn)的 MCP 響應(yīng)消息,通過相同的傳輸方式返回給 MCP Client。
- 模型響應(yīng) (Model Response):MCP Client 接收到來自 MCP Server 的響應(yīng),將其中的結(jié)果數(shù)據(jù)(即桌面文檔列表)提取出來,傳遞給 AI 模型。AI 模型接收到這些上下文信息后,結(jié)合原始問題,生成一個(gè)自然語言的回復(fù),例如“您桌面上有以下文檔:report.docx, budget.xlsx, image.png”。
- Host 展示 (Host Display):Host(Claude Desktop)接收到 AI 模型生成的最終回復(fù),將其在用戶界面上展示給用戶。
MCP 的核心功能
Resource(資源)
Resource 功能允許 MCP Server 向 AI 模型提供只讀的上下文信息或數(shù)據(jù)。這些資源可以是靜態(tài)數(shù)據(jù),也可以是動(dòng)態(tài)生成的數(shù)據(jù)。例如,一個(gè) MCP Server 可以提供對(duì)公司內(nèi)部知識(shí)庫的訪問,或者提供實(shí)時(shí)股票行情數(shù)據(jù)。AI 模型可以通過 MCP Client 請(qǐng)求這些資源,獲取完成任務(wù)所需的信息。
Resource 的設(shè)計(jì)強(qiáng)調(diào)只讀性,確保了數(shù)據(jù)源的安全性,防止 AI 模型意外修改原始數(shù)據(jù)。MCP 規(guī)范定義了資源發(fā)現(xiàn)、訂閱和通知等機(jī)制,使模型能有效地獲取和利用這些外部信息。
Prompt(提示)
Prompt 功能允許 MCP Server 提供預(yù)置的提示模板。模板可以幫助 AI 模型生成特定格式或內(nèi)容的輸出,或者引導(dǎo)模型以特定的方式執(zhí)行任務(wù)。例如,一個(gè) MCP Server 可以提供用于生成特定類型郵件的提示模板,或者用于代碼生成的模板。
通過使用標(biāo)準(zhǔn)化的提示模板,可以提高模型輸出的質(zhì)量和一致性,減少在應(yīng)用程序中硬編碼提示的需求。MCP 允許服務(wù)器聲明其提供的提示模板,客戶端可以查詢并使用這些模板。
Tool(工具)
Tool 功能是 MCP 的核心特性之一,允許 AI 模型調(diào)用外部的 API 或工具來執(zhí)行具體的操作。工具可以執(zhí)行各種任務(wù),例如執(zhí)行計(jì)算、查詢數(shù)據(jù)庫、發(fā)送郵件、控制外部設(shè)備等。MCP Server 可以聲明提供的工具,包括工具的名稱、描述、參數(shù)列表和預(yù)期的輸出格式。AI 模型在分析用戶請(qǐng)求后,如果判斷需要調(diào)用某個(gè)工具,可以通過 MCP Client 向相應(yīng)的 Server 發(fā)送工具調(diào)用請(qǐng)求。Server 執(zhí)行工具并返回結(jié)果,模型再根據(jù)結(jié)果生成回復(fù)。Tool 功能極大地?cái)U(kuò)展了 AI 模型的能力邊界,不再局限于文本生成,能與現(xiàn)實(shí)世界進(jìn)行更深入的交互。
Elicitation(啟發(fā))
Elicitation 允許 MCP Server 在交互過程中主動(dòng)向用戶請(qǐng)求更多信息或澄清模糊的輸入。在傳統(tǒng)的交互模式中,如果模型或工具需要額外的信息才能繼續(xù)執(zhí)行任務(wù),只能返回一個(gè)錯(cuò)誤或提示用戶重新提問。
Elicitation 提供了一種更結(jié)構(gòu)化的方式來處理這種情況。當(dāng) Server 端(通過 LLM 分析)發(fā)現(xiàn)當(dāng)前請(qǐng)求缺少必要參數(shù)或意圖不明確時(shí),可以返回一個(gè) elicitationRequest,其中包含需要用戶提供的信息的描述或表單。Host 接收到這個(gè)請(qǐng)求后,可以向用戶展示相應(yīng)的界面(例如,一個(gè)包含輸入框的表單),收集用戶輸入,然后通過 continueElicitation 請(qǐng)求將信息發(fā)送回 Server。使交互更加靈活和智能,能處理更復(fù)雜的、需要多輪對(duì)話才能完成的任務(wù),例如交互式表單填寫、用戶意圖澄清等。
Structured Output(結(jié)構(gòu)化輸出)
Structured Output 功能要求 MCP Server 以結(jié)構(gòu)化的格式(例如 JSON)返回工具調(diào)用的結(jié)果。與返回非結(jié)構(gòu)化的文本相比,結(jié)構(gòu)化的輸出更易于 AI 模型解析和理解。MCP 規(guī)范支持為工具的輸出定義 JSON Schema,使模型可以預(yù)期返回?cái)?shù)據(jù)的結(jié)構(gòu)和類型,更準(zhǔn)確地進(jìn)行后續(xù)處理。
例如,一個(gè)查詢天氣的工具可能會(huì)返回一個(gè)包含溫度、濕度、風(fēng)速等字段的 JSON 對(duì)象,而不是一段描述天氣的自然語言文本。
這種結(jié)構(gòu)化的輸出提高了模型處理結(jié)果的效率,增強(qiáng)了系統(tǒng)的可靠性和可維護(hù)性。
最新的 MCP 規(guī)范(如 2025-06-18 版本)進(jìn)一步強(qiáng)化了對(duì)結(jié)構(gòu)化內(nèi)容和輸出模式的支持,引入了類型化、經(jīng)過驗(yàn)證的結(jié)果以及靈活的 Schema 哲學(xué)和 MIME 類型清晰度。
MCP 的特點(diǎn)
靈活性
MCP 支持多種傳輸協(xié)議和通信方式。雖然 MCP 規(guī)范本身是于傳輸層的,明確支持包括 Streamable HTTP、WebSockets、gRPC 以及 stdio(標(biāo)準(zhǔn)輸入輸出,常用于本地進(jìn)程間通信)在內(nèi)的多種通信機(jī)制。多樣性使得 MCP 可以適應(yīng)不同的部署環(huán)境和性能要求。
例如,對(duì)于需要低延遲、雙向?qū)崟r(shí)通信的場景,WebSockets 或 gRPC 可能是更好的選擇;對(duì)于簡單的本地工具調(diào)用,stdio 更為輕量級(jí)和便捷。Streamable HTTP 允許以流式方式傳輸數(shù)據(jù),適用于處理大量數(shù)據(jù)或需要逐步展示結(jié)果的場景。
擴(kuò)展性
協(xié)議本身定義了一套核心的消息類型和交互模式,但同時(shí)也允許通過擴(kuò)展(Extensions)來引入新的功能或特性。MCP 使用基于能力協(xié)商(Capability Negotiation)的機(jī)制,客戶端和服務(wù)器在初始化連接時(shí)會(huì)聲明各自支持的功能(Capabilities)。如果雙方都支持某個(gè)擴(kuò)展功能,那么就可以在會(huì)話中使用該功能。機(jī)制確保了協(xié)議的向前兼容性和向后兼容性,新的功能可以在不破壞現(xiàn)有實(shí)現(xiàn)的基礎(chǔ)上逐步引入。
模塊化設(shè)計(jì)
MCP Server 是輕量級(jí)的程序,每個(gè) Server 只負(fù)責(zé)暴露特定的功能或數(shù)據(jù)源。使開發(fā)者可以按需開發(fā)和部署 MCP Server,構(gòu)建一個(gè)分布式的、可組合的 AI 能力網(wǎng)絡(luò)。
例如,一個(gè)公司可以開發(fā)一個(gè)專門訪問內(nèi)部 CRM 系統(tǒng)的 MCP Server,另一個(gè)團(tuán)隊(duì)可以開發(fā)一個(gè)連接特定數(shù)據(jù)庫的 MCP Server。
AI 應(yīng)用(Host)可以通過 MCP Client 動(dòng)態(tài)發(fā)現(xiàn)和使用這些 Server 提供的功能,像搭積木一樣組合出復(fù)雜的應(yīng)用。
開放性和社區(qū)驅(qū)動(dòng)
作為一個(gè)開放協(xié)議,MCP 鼓勵(lì)社區(qū)參與和貢獻(xiàn),意味著會(huì)有更多的開發(fā)者為其開發(fā)新的 MCP Server、Client 庫、工具和文檔。能更快地響應(yīng)市場需求,催生出更多創(chuàng)新的應(yīng)用場景。
MCP 的安全機(jī)制
基于 OAuth 2.1 的安全機(jī)制
Model Context Protocol (MCP) 在安全方面采取基于 OAuth 2.1 授權(quán)框架。OAuth 2.1 是 OAuth 2.0 的演進(jìn)版本,整合了 OAuth 2.0 最佳實(shí)踐和安全建議,提供更強(qiáng)大、更易用的授權(quán)解決方案。在 MCP 的交互流程中,當(dāng) MCP Client 需要訪問受保護(hù)的 MCP Server(即提供敏感數(shù)據(jù)或執(zhí)行敏感操作的 Server)時(shí),需要進(jìn)行 OAuth 2.1 認(rèn)證和授權(quán)。意味著 Client 需要先從授權(quán)服務(wù)器(Authorization Server)獲取一個(gè)訪問令牌(Access Token),然后在向 MCP Server 發(fā)起請(qǐng)求時(shí)攜帶該令牌。MCP Server 會(huì)驗(yàn)證令牌的有效性(例如,通過 introspection endpoint 或 JWKS endpoint 驗(yàn)證簽名和有效期),檢查令牌是否包含執(zhí)行所請(qǐng)求操作所需的權(quán)限(scopes)。
MCP 規(guī)范特別強(qiáng)調(diào)了 OAuth 2.1 中的一些關(guān)鍵安全特性,如 PKCE (Proof Key for Code Exchange) 用于防止授權(quán)碼攔截攻擊,以及 令牌受眾綁定 (Token Audience Binding – RFC 8707) 用于確保訪問令牌僅能被預(yù)期的 MCP Server 使用。有效地防止了令牌的跨服務(wù)器濫用,提升了整體系統(tǒng)的安全性。
安全最佳實(shí)踐
Model Context Protocol (MCP) 的生態(tài)系統(tǒng)強(qiáng)調(diào)了一系列安全最佳實(shí)踐,確保在日益復(fù)雜的 AI 應(yīng)用場景中維護(hù)數(shù)據(jù)安全、隱私和系統(tǒng)完整性。
- MCP 服務(wù)器安全加固與部署實(shí)踐:部署 MCP 服務(wù)器時(shí),應(yīng)遵循最小權(quán)限原則,僅開放必要的服務(wù)和端口。操作系統(tǒng)應(yīng)進(jìn)行加固,并考慮使用安全增強(qiáng)工具。所有傳入的輸入(如用戶提示、工具參數(shù))必須進(jìn)行嚴(yán)格的驗(yàn)證和凈化,以防止常見的 Web 攻擊,如提示注入 (prompt injection) 和參數(shù)污染。對(duì)于本地運(yùn)行的 MCP 服務(wù)器,建議將其運(yùn)行在容器(如 Docker,以非 root 用戶運(yùn)行)或虛擬機(jī)中,以實(shí)現(xiàn)與主機(jī)系統(tǒng)的隔離。網(wǎng)絡(luò)訪問控制也應(yīng)嚴(yán)格配置,避免將 MCP 服務(wù)器直接暴露在公共互聯(lián)網(wǎng),優(yōu)先使用 localhost 或私有子網(wǎng)進(jìn)行綁定。
- MCP 客戶端與工具交互安全:MCP 客戶端應(yīng)基于 MCP 對(duì) OAuth 2.1 的支持,使用短期、范圍受限的令牌進(jìn)行認(rèn)證。所有交互都應(yīng)進(jìn)行身份驗(yàn)證。在工具設(shè)計(jì)方面,應(yīng)為每個(gè) Tool 提供清晰的元數(shù)據(jù),包括其功能描述、輸入?yún)?shù)、預(yù)期輸出以及可能產(chǎn)生的副作用。對(duì)于可能修改數(shù)據(jù)或產(chǎn)生重大影響的工具,應(yīng)使用如
readOnlyHint和destructiveHint這樣的注解進(jìn)行明確標(biāo)記,幫助運(yùn)行時(shí)環(huán)境采取適當(dāng)?shù)陌踩胧?/li> - 憑證和密鑰管理:是基本要求,絕對(duì)避免在配置文件中硬編碼憑證或 API 密鑰。應(yīng)使用環(huán)境變量或?qū)iT的密鑰管理服務(wù)來存儲(chǔ)和訪問敏感信息,定期輪換密鑰。
- 啟用詳細(xì)日志記錄與監(jiān)控:對(duì)于事后審計(jì)、異常行為檢測(cè)和安全調(diào)查至關(guān)重要。應(yīng)配置 MCP 服務(wù)器和客戶端記錄所有操作日志,包括請(qǐng)求、響應(yīng)、錯(cuò)誤以及用戶交互。特別地,記錄所有發(fā)送給 AI 模型的提示 (prompts) 有助于檢測(cè)和防范提示注入攻擊。
- 建立 MCP Server 的治理流程:組織應(yīng)建立一個(gè)正式的審批流程,用于將新的 MCP Server 添加到環(huán)境中,包括安全審查和源代碼驗(yàn)證。維護(hù)一個(gè)已批準(zhǔn)的 MCP Server 清單,考慮建立一個(gè)內(nèi)部審查過的 MCP Server 倉庫,降低引入惡意或存在漏洞的 Server 的風(fēng)險(xiǎn)。
MCP 的行業(yè)應(yīng)用情況
Model Context Protocol (MCP) 自推出以來,迅速獲得了業(yè)界的廣泛關(guān)注和積極采用。Anthropic 作為 MCP 的發(fā)起者,在其產(chǎn)品線中率先集成和支持 MCP,例如在其 Claude Desktop 應(yīng)用和 Claude 模型中。
OpenAI 在 2025 年初宣布在其 Agents SDK、ChatGPT 桌面應(yīng)用和 Responses API 中支持 MCP,
微軟 (Microsoft) 積極參與 MCP 生態(tài),推出了 Playwright-MCP 服務(wù)器,使 AI 代理能像人類一樣瀏覽網(wǎng)頁并與網(wǎng)站交互。
Google 在產(chǎn)品中采用 MCP。
Docker 推出了 MCP Toolkit,通過提供一鍵部署、包含超過 100 個(gè)安全 MCP 服務(wù)器的目錄等功能,簡化了 MCP 服務(wù)器的部署和管理。
MCP 的應(yīng)用案例
金融科技領(lǐng)域應(yīng)用
在金融科技(FinTech)領(lǐng)域,幫助金融機(jī)構(gòu)和科技公司構(gòu)建更智能、更高效的解決方案。例如,可以用 MCP 將 LLM 連接到實(shí)時(shí)的市場數(shù)據(jù)源、客戶數(shù)據(jù)庫、風(fēng)險(xiǎn)評(píng)估模型以及交易執(zhí)行系統(tǒng)。
- 智能投顧:MCP 可以使 AI 投顧系統(tǒng)實(shí)時(shí)獲取最新的股票價(jià)格、財(cái)經(jīng)新聞、公司財(cái)報(bào)等信息(通過 Resource 功能),分析客戶的風(fēng)險(xiǎn)偏好和投資目標(biāo)(可能通過 Elicitation 功能與用戶交互),然后調(diào)用交易執(zhí)行工具(Tool 功能)為客戶提供個(gè)性化的投資建議并執(zhí)行交易。
- 反欺詐分析:通過連接各種數(shù)據(jù)源(如交易記錄、用戶行為日志、黑名單數(shù)據(jù)庫),LLM 可以輔助識(shí)別可疑交易模式。
- 客戶服務(wù):MCP 可以使機(jī)器人能回答常見問題,能查詢用戶的賬戶信息(在獲得授權(quán)后)、處理簡單的業(yè)務(wù)請(qǐng)求(如轉(zhuǎn)賬、賬單查詢),提供個(gè)性化的理財(cái)建議。通過 MCP 的標(biāo)準(zhǔn)化接口,金融機(jī)構(gòu)可以更安全、更便捷地利用 LLM 的強(qiáng)大能力,確保數(shù)據(jù)的安全性和合規(guī)性。
醫(yī)療健康領(lǐng)域應(yīng)用
在醫(yī)療健康領(lǐng)域,MCP 有潛力革新患者護(hù)理、醫(yī)學(xué)研究和醫(yī)療管理。LLM 可以通過 MCP 連接到電子健康記錄 (EHR) 系統(tǒng)、醫(yī)學(xué)文獻(xiàn)數(shù)據(jù)庫、醫(yī)學(xué)影像分析工具以及患者監(jiān)測(cè)設(shè)備。
- 臨床決策支持:醫(yī)生可以向 AI 助手描述患者的癥狀和病史,AI 助手通過 MCP 查詢相關(guān)的醫(yī)學(xué)知識(shí)庫(Resource)、最新的臨床指南(Resource),調(diào)用診斷輔助工具(Tool),為醫(yī)生提供診斷建議和治療方案參考。MCP 的 Elicitation 功能可以用于在診斷過程中向醫(yī)生詢問更多細(xì)節(jié),或確認(rèn)關(guān)鍵信息。
- 個(gè)性化醫(yī)療:MCP 可以幫助整合患者的基因組數(shù)據(jù)、生活習(xí)慣數(shù)據(jù)等,為患者提供定制化的健康管理建議和疾病預(yù)防方案。
- 醫(yī)學(xué)研究:MCP 可以加速文獻(xiàn)綜述過程,幫助研究人員快速從海量文獻(xiàn)中提取關(guān)鍵信息,或者輔助分析臨床試驗(yàn)數(shù)據(jù)。
- 患者監(jiān)護(hù)系統(tǒng):通過連接可穿戴設(shè)備和傳感器數(shù)據(jù),實(shí)時(shí)分析患者的健康狀況,在出現(xiàn)異常時(shí)及時(shí)預(yù)警。MCP 的安全機(jī)制,特別是基于 OAuth 2.1 的授權(quán),對(duì)于處理敏感的醫(yī)療數(shù)據(jù)至關(guān)重要,可以確保只有經(jīng)過授權(quán)的用戶和應(yīng)用才能訪問患者信息。
科技行業(yè)應(yīng)用
在科技行業(yè),MCP 的應(yīng)用幾乎可以滲透到軟件開發(fā)生命周期的各個(gè)環(huán)節(jié)以及各種技術(shù)驅(qū)動(dòng)的產(chǎn)品和服務(wù)中。
- 軟件開發(fā):集成開發(fā)環(huán)境 (IDE) 可以用 MCP 將 LLM 的強(qiáng)大編碼能力與本地開發(fā)環(huán)境、版本控制系統(tǒng)(如 Git MCP Server)、調(diào)試工具、API 文檔等無縫集成。開發(fā)者可以通過自然語言指令讓 AI 助手編寫代碼、解釋代碼、生成測(cè)試用例、查找并修復(fù) bug,部署應(yīng)用。例如,開發(fā)者可以問:“在我的當(dāng)前分支上運(yùn)行測(cè)試,并總結(jié)失敗的原因”,AI 助手可以通過 MCP 調(diào)用 Git 工具獲取代碼,調(diào)用測(cè)試工具執(zhí)行測(cè)試,然后分析日志并生成報(bào)告。
- IT 運(yùn)維與支持:AI 運(yùn)維助手可以連接到監(jiān)控系統(tǒng)、日志服務(wù)器、配置管理數(shù)據(jù)庫 (CMDB) 等,通過自然語言交互幫助運(yùn)維人員診斷問題、執(zhí)行維護(hù)任務(wù)、自動(dòng)化故障排除流程。例如,AI 助手可以根據(jù)警報(bào)信息,自動(dòng)查詢相關(guān)服務(wù)器的日志(通過 MCP Server 提供的日志查詢工具),分析錯(cuò)誤原因,建議修復(fù)方案。
- 技術(shù)文檔助手:幫助用戶快速找到所需的技術(shù)信息,或者根據(jù)用戶需求生成代碼片段和配置示例。科技公司可以用 MCP 將其內(nèi)部的知識(shí)庫、API 服務(wù)等封裝成 MCP Server,供內(nèi)部員工或外部開發(fā)者通過 LLM 方便地訪問和使用,提高工作效率和創(chuàng)新能力。
MCP 的最新協(xié)議更新日志
- 移除 JSON-RPC 批處理支持:為了簡化規(guī)范并避免歧義,特別是在實(shí)現(xiàn)
Streamable HTTP傳輸時(shí),未發(fā)現(xiàn)批處理的實(shí)際需求,且 JSON-RPC 的通知/響應(yīng)模型難以滿足實(shí)時(shí)性和并發(fā)調(diào)用需求,因此移除此功能。 - 增強(qiáng)工具調(diào)用結(jié)果,新增結(jié)構(gòu)化輸出功能:引入了
outputSchema和structuredContent字段。這一改進(jìn)旨在不破壞現(xiàn)有content結(jié)構(gòu)的前提下,為簡單的 JSON 輸出場景提供一個(gè)輕量級(jí)、可驗(yàn)證的格式化通道。對(duì)于提升與不受信任服務(wù)器交互時(shí)的數(shù)據(jù)安全性與可靠性尤為重要,使客戶端可以更精確地解析和驗(yàn)證來自工具的響應(yīng)。例如,一個(gè)網(wǎng)絡(luò)設(shè)備狀態(tài)檢索工具可以定義一個(gè)包含設(shè)備 ID、狀態(tài)、運(yùn)行時(shí)間等字段的輸出模式,確保返回?cái)?shù)據(jù)的結(jié)構(gòu)化和可驗(yàn)證性。 - 將 MCP 服務(wù)器歸類為 OAuth 資源服務(wù)器:并添加受保護(hù)資源元數(shù)據(jù)(遵循 RFC 9728)以便發(fā)現(xiàn)對(duì)應(yīng)的授權(quán)服務(wù)器。有助于客戶端自動(dòng)發(fā)現(xiàn)授權(quán)服務(wù)器,避免濫用訪問令牌,提升整體安全性與部署一致性。
- 要求 MCP 客戶端實(shí)現(xiàn)遵循 RFC 8707 的 Resource Indicators:以防止惡意服務(wù)器獲取訪問令牌。通過在授權(quán)請(qǐng)求和令牌請(qǐng)求中包含
resource參數(shù),客戶端可以明確指定令牌所針對(duì)的目標(biāo) MCP 服務(wù)器,增強(qiáng)了 OAuth 2.0 授權(quán)的安全性。 - 支持 “Elicitation” 功能:允許服務(wù)器在交互過程中向用戶動(dòng)態(tài)請(qǐng)求額外信息。MCP 此前缺乏標(biāo)準(zhǔn)化的方式來支持這種運(yùn)行時(shí)交互,開發(fā)者往往需要依賴多步驟工具調(diào)用或自定義協(xié)議。Elicitation 機(jī)制的引入,為工作流中的確認(rèn)、澄清、登錄跳轉(zhuǎn)等場景提供了結(jié)構(gòu)化的輸入機(jī)制,完善了模型、用戶與服務(wù)器三者之間的雙向交互閉環(huán)。例如,在執(zhí)行一個(gè)刪除操作前,服務(wù)器可以通過 elicitation 請(qǐng)求用戶確認(rèn);或者在需要用戶特定信息(如時(shí)區(qū)、組織名稱)時(shí),動(dòng)態(tài)向客戶端發(fā)起請(qǐng)求。
- 工具調(diào)用結(jié)果中新增資源鏈接(Resource Links)類型:為了支持工具返回對(duì)外部或大型資源的引用,不是直接嵌入其內(nèi)容,引入了新的
ResourceLink類型。解決了在交互流中直接嵌入內(nèi)容不可行或效率低下的場景需求,例如延遲加載、處理大文件或臨時(shí)資源。 - 澄清安全注意事項(xiàng)及最佳實(shí)踐:在授權(quán)規(guī)范中增加了相關(guān)說明,新增了“安全最佳實(shí)踐”頁面,指導(dǎo)開發(fā)者構(gòu)建更安全的 MCP 應(yīng)用。
MCP 的發(fā)展前景
Model Context Protocol (MCP) 作為標(biāo)準(zhǔn)化 AI 模型與外部系統(tǒng)和數(shù)據(jù)源交互的開放協(xié)議,未來發(fā)展將聚焦于推動(dòng)更廣泛的行業(yè)標(biāo)準(zhǔn)化、持續(xù)增強(qiáng)核心功能與安全性,以及不斷擴(kuò)展其生態(tài)系統(tǒng)和提升互操作性。隨著人工智能技術(shù)的飛速發(fā)展和應(yīng)用場景的不斷深化,MCP 致力于解決當(dāng)前 AI 集成面臨的碎片化、復(fù)雜性和安全隱患等挑戰(zhàn),為構(gòu)建更強(qiáng)大、更可靠、更易于集成的 AI 應(yīng)用提供堅(jiān)實(shí)的基礎(chǔ)。社區(qū)和開發(fā)者正積極推動(dòng) MCP 的演進(jìn),適應(yīng)日益增長的需求和不斷變化的技術(shù)格局。

粵公網(wǎng)安備 44011502001135號(hào)