MCP(模型上下文協議)入門教程

MCP(模型上下文協議)入門教程:連接AI與外部世界的萬能插座

1 MCP是什么?

1.1 基本概念

MCP(Model Context Protocol,模型上下文協議)是一個開放協議,專門用于AI模型與外部數據源和工具之間的標準化交互。簡單來說,MCP就像是AI世界的"萬能插座",它定義了一套標準化的接口,讓大語言模型(LLM)能夠安全、高效地訪問和使用外部工具、數據源和能力。該協議由AI公司Anthropic于2024年11月推出,旨在解決AI模型在訪問碎片化外部數據時面臨的難題。

在沒有MCP之前,每個AI應用都需要單獨編寫代碼來連接各種外部工具和數據源,這就像每個電器廠商都生產自己專屬的插座一樣,導致效率低下且兼容性差。有了MCP之后,任何支持MCP協議的AI模型(如Claude、GPT等)都可以無縫連接任何支持MCP協議的工具和服務,大大提高了開發效率和靈活性。

1.2 為什么需要MCP?

MCP主要解決了以下幾個核心問題:

  • 標準化問題:統一了AI模型與外部工具交互的方式,避免了為每個工具單獨開發適配器。

  • 生態碎片化:不同廠商提供的工具和服務可以通過MCP協議被各種AI模型使用,形成了開放的生態系統。

  • 安全性:提供了明確的安全框架,確保用戶對數據訪問和工具執行有完全的控制權。

  • 可組合性:多個MCP服務器可以組合使用,創造出更強大的功能組合。

MCP的價值在于它將工具適配工作從雙向簡化為單向。以前,既要修改模型又要修改工具才能實現集成;現在,只要工具支持MCP協議,任何兼容MCP的模型就都能使用它。這不僅降低了開發成本,也加速了AI應用生態的創新步伐。

2 MCP的核心組件與工作原理

2.1 核心組件

MCP生態系統中有三個核心組件,它們協同工作實現了AI與外部資源的連接:

  • MCP服務器(Server):提供具體工具和能力的一方。例如,一個可以提供計算服務的計算器服務器,一個可以訪問文件系統的文件服務器,或者一個可以查詢數據庫的數據庫服務器。服務器負責向客戶端宣告自己提供哪些工具和資源。

  • MCP客戶端(Client):通常是大模型或智能體,它是使用工具的一方。客戶端發起請求,如"請搜索最新新聞"或"請讀取這個文件"。

  • MCP協議(Protocol):規定客戶端和服務器之間如何通信的標準規則。它基于JSON-RPC 2.0標準,定義了請求和響應的格式,確保雙方能夠相互理解。

表:MCP的三大核心組件對比

組件角色功能示例
MCP服務器能力提供者提供工具、資源和提示模板計算器服務器、文件服務器、數據庫服務器
MCP客戶端能力使用者發起請求并使用服務器提供的功能Claude、GPT、Cursor IDE等AI模型或應用
MCP協議通信規則定義客戶端和服務器之間如何交互JSON-RPC 2.0格式的消息交換

2.2 MCP的工作原理

MCP的工作流程可以概括為以下幾個步驟:

  1. 建立連接:客戶端與服務器之間通過stdio或網絡(socket)方式建立連接。

  2. 能力協商:雙方通過交換初始化信息確認彼此支持的功能特性。

  3. 工具發現:客戶端向服務器請求工具列表,服務器返回自己提供的所有工具及其描述和參數要求。

  4. 工具調用:客戶端選擇需要的工具,按照要求的格式發送請求給服務器。

  5. 執行與返回:服務器執行相應操作并將結果返回給客戶端。

  6. 結果處理:客戶端將結果整合到AI的響應中呈現給用戶。

這個過程類似于一個人走進工具租賃店:首先查看工具清單(工具發現),然后選擇需要的工具并提出使用請求(工具調用),店員使用工具完成操作并返回結果(執行與返回),最后這個人將結果用于自己的工作中(結果處理)。

2.3 MCP提供的三大能力

MCP服務器主要提供三類基本能力,使AI模型能夠與外部世界交互:

  1. 工具(Tools):AI模型可以執行的函數。例如,執行計算、搜索網絡、操作文件等。工具允許AI模型執行實際操作而不僅僅是生成文本。

  2. 資源(Resources):AI模型可以訪問的數據或文件。例如,數據庫記錄、本地文件、API數據等。資源為AI模型提供了上下文信息,增強其回答的準確性和相關性。

  3. 提示模板(Prompts):預定義的提示詞模板和工作流。這些模板可以幫助用戶更有效地與AI交互,標準化常見任務的執行流程。

3 MCP的兩種通信模式

MCP支持兩種主要的通信模式,適用于不同的使用場景:

3.1 Stdio模式(標準輸入輸出)

Stdio模式通過進程間的標準輸入輸出流進行通信,是本地開發和個人使用中最常見的模式。

  • 工作原理:服務器作為一個本地進程啟動,客戶端通過stdin(標準輸入)發送請求,通過stdout(標準輸出)接收響應。

  • 優點:更安全、更簡單,無需處理網絡配置。

  • 缺點:僅限于本地機器使用。

  • 適用場景:個人電腦上的工具集成,如讓AI助手訪問本地文件系統。

3.2 Socket模式(套接字)

Socket模式通過網絡端口進行通信,類似于傳統的Web服務器。

  • 工作原理:服務器綁定到特定端口(如localhost:8000)偵聽請求,客戶端通過網絡連接到這個地址和端口進行通信。

  • 優點:更靈活,允許遠程連接和多客戶端共享。

  • 缺點:需要配置網絡和安全性設置。

  • 適用場景:需要遠程訪問或共享服務的場景,如企業內多個用戶訪問同一個MCP服務器。

表:MCP的兩種通信模式對比

特性Stdio模式Socket模式
通信方式進程間管道(stdin/stdout)網絡(TCP/WebSocket)
運行方式通常由客戶端啟動和管理作為獨立后臺服務運行
連接范圍僅限本地機器可以是本地或遠程機器
安全性高(無開放網絡端口)需要配置防火墻和認證
使用場景個人工具集成遠程訪問或共享服務

在實際應用中,MCP網關的概念被提出來解決多個MCP服務器的集中管理問題。MCP網關作為一個中間層,接收客戶端的請求并將其路由到適當的MCP服務器,簡化了客戶端的配置和管理工作。

4 MCP的實際應用場景

MCP協議的應用范圍非常廣泛,從個人效率工具到企業級系統集成都可以發揮重要作用。以下是一些常見的應用場景:

4.1 個人效率提升

  • 智能文件處理:通過MCP服務器,AI助手可以讀取、分析和總結本地文件的內容,幫助用戶快速獲取文檔要點。

  • 知識管理:集成像Obsidian這樣的筆記工具,讓AI能夠訪問和整理用戶的個人知識庫。

  • 個性化搜索:連接各類搜索API,使AI能夠獲取最新信息而不是僅依賴訓練數據。

  • 日程與郵件管理:通過Gmail和日歷的MCP服務器,AI可以幫忙管理郵件和日程安排。

4.2 云服務與數據分析

  • 云資源管理:微軟推出的Azure MCP Server可以無縫接入多種Azure服務,包括Azure Cosmos DB、Azure Storage和Azure Monitor等核心服務,覆蓋從數據庫查詢到存儲管理再到日志分析等全方位功能。

  • 數據庫操作:Azure Database for PostgreSQL Flexible Server專用服務器支持用戶列出數據庫和表、執行查詢以及修改數據等關鍵任務。

  • 性能監控:DeepFlow推出的eBPF MCP Server可以提供函數級別的精細化性能分析結果,幫助開發者識別代碼性能瓶頸。

4.3 智能體與編程助手

  • 代碼分析與評審:通過MCP服務器,AI編程助手可以訪問代碼庫、執行代碼分析并提供改進建議。

  • 自動化開發流程:在Cursor等AI編程IDE中,MCP可以用于自動化生成提交消息、創建PR等Git工作流。

  • 智能調試:當代碼出現問題時,AI可以通過MCP訪問運行時數據,幫助診斷和解決問題。

4.4 行業特定應用

  • 學術研究:arXiv的MCP服務器可以幫助研究人員獲取科學文章,Docling MCP服務器則能協助解析學術文檔。

  • 電商與消費:值得買科技的"海納"MCP Server提供了商品搜索功能,準確率高達97.2%,為AI應用提供消費信息服務。

  • 基因研究:某基因研究平臺采用MCP協議實現數據分析流水線,使跨機構協作效率提升60%。

這些應用場景展示了MCP協議的強大靈活性和實用性,它幾乎可以應用于任何需要AI與外部系統交互的領域。

5 如何開始使用MCP

5.1 準備工作

要開始使用MCP,你需要準備以下基本環境:

  1. 安裝必要的運行環境

    • Node.js:用于運行基于JavaScript的MCP服務器

    • uv:Python包管理工具,用于安裝Python相關的MCP服務器

  2. 選擇MCP客戶端:支持MCP的客戶端主要包括兩類:

    • AI聊天客戶端:如Claude Desktop、Chatwise、Cherry Studio等

    • AI編程IDE:如Cursor、Windsurf等

5.2 配置MCP服務器的基本步驟

配置MCP服務器通常遵循以下流程:

  1. 獲取MCP服務器:從MCP聚合網站(如mcp.so和smithery.ai)查找需要的MCP服務器。

  2. 獲取必要的API密鑰:許多MCP服務器需要API密鑰才能工作,如OpenAI API密鑰、Google API密鑰等。

  3. 配置客戶端連接MCP服務器

    • 對于Stdio模式的服務器,需要在客戶端配置文件中添加服務器啟動命令和參數

    • 對于Socket模式的服務器,只需要提供服務器URL和必要的認證信息

  4. 測試連接:啟動客戶端并驗證是否成功連接到MCP服務器。

下面是一個典型的MCP配置示例(用于Cursor IDE的配置文件):

json{"mcpServers": {"DeepFlow_Git_Commit_Profile": {"url": "http://$deepflow_controller_ip:20080/mcp","headers": {}}}
}

5.3 簡單示例:創建一個計算器MCP服務器

為了更好地理解MCP的工作原理,讓我們看一個簡單的計算器MCP服務器的示例代碼:

pythonimport json
from mcp.server import Server
from mcp.server.stdio import stdio_server# 創建服務器實例
server = Server("calculator-server")# 提供工具列表
@server.list_tools()
async def list_tools():return [{"name": "add","description": "Add two numbers","inputSchema": {"type": "object","properties": {"a": {"type": "number", "description": "First number"},"b": {"type": "number", "description": "Second number"}},"required": ["a", "b"]}}]# 實現工具功能
@server.call_tool()
async def call_tool(name: str, arguments: dict):if name == "add":result = arguments["a"] + arguments["b"]return [{"type": "text","text": f"The sum of {arguments['a']} and {arguments['b']} is {result}"}]else:raise ValueError(f"Unknown tool: {name}")# 主函數
async def main():async with stdio_server() as (read_stream, write_stream):await server.run(read_stream, write_stream)if __name__ == "__main__":import asyncioasyncio.run(main())

這個簡單的MCP服務器提供了一個加法工具,AI客戶端可以通過MCP協議調用這個工具來執行加法運算。在實際應用中,MCP服務器可以提供更復雜的功能,如數據庫訪問、API調用、文件操作等。

6 安全性與最佳實踐

6.1 MCP的安全原則

MCP設計時考慮了嚴格的安全性原則,主要包括:

  1. 用戶同意及管制:用戶必須明確同意并理解所有數據訪問和操作,保留對共享哪些數據和采取哪些操作的控制權。

  2. 數據隱私:在向服務器公開用戶數據之前,主機必須獲得用戶的明確同意;未經用戶同意,不得在其他地方傳輸資源數據。

  3. 工具安全:工具代表任意的代碼執行,必須謹慎對待。在調用任何工具之前,必須獲得明確的用戶同意。

  4. 采樣控制:用戶必須顯式批準任何LLM采樣請求,并控制是否進行采樣、將要發送的實際提示詞以及服務器可以看到的結果。

6.2 安全實踐建議

在使用MCP時,應遵循以下安全最佳實踐:

  • 謹慎授權:只授予MCP服務器最小必要的權限,定期審查已授權的服務器和工具。

  • 網絡隔離:對于涉及敏感數據的MCP服務器,使用本地網絡或私有網絡部署,避免公開暴露。

  • API密鑰管理:不要將API密鑰直接寫在配置文件中,使用環境變量或安全的密鑰管理服務。

  • 定期更新:保持MCP服務器和客戶端的最新版本,以獲取安全補丁和功能改進。

重要提示:MCP協議本身不能強制實施安全策略,安全性的實現依賴于主機應用程序(如Claude Desktop、Cursor等)提供的安全保障機制。因此,用戶應該只從信任的來源安裝MCP服務器,并仔細審查請求的權限。

總結

MCP(模型上下文協議)作為連接AI模型與外部世界的"萬能插座",正在重塑AI應用開發的方式。它通過標準化的協議解決了AI與工具集成中的碎片化問題,使開發者能夠構建更強大、更靈活的AI應用。

隨著MCP生態的快速發展,我們現在已經可以看到各種實用的MCP服務器,從個人效率工具到企業級系統集成,從云服務管理到代碼性能分析,應用場景不斷擴大。值得買科技的"海納"MCP Server月對外輸出量達到1300萬,新增30多家合作伙伴的數據也證明了MCP技術的迅速普及和實用價值。

學習和使用MCP并不是一件困難的事情。從配置簡單的現有MCP服務器開始,逐步探索更復雜的應用場景,最終甚至可以開發自己的MCP服務器來滿足特定需求。無論你是普通用戶希望提升AI助手的能力,還是開發者希望將自己的服務集成到AI生態中,MCP都提供了一個強大而靈活的解決方案。

隨著更多廠商和開發者加入MCP生態系統,我們可以預期未來會有更多創新性的應用出現,進一步擴展AI模型的能力邊界,讓人工智能真正成為連接數字世界與物理世界的智能橋梁。

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

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

相關文章

GO開發遇到的報錯問題合集

本文將記錄平時在go開發中遇到的一些錯誤信息,踩過的坑,并分析原因及提供解決方法,持續更新中...1、grpc 接口請求報錯:Error: 13 INTERNAL: Response message parsing error: invalid wire type 7 at offset 316原因:…

Node.js 做 Web 后端優勢為什么這么大?

Node.js自誕生以來,一步步演變變為現代Web后端開發的基石之一。無論是初創公司快速構建原型,還是大型企業支撐高并發業務,好像它哪兒哪兒都在,甚至還有人覺得它威脅到了PHP的地位。 那為什么Node.js 做 Web 后端優勢那么大&#x…

JAVA:IO流之字節輸入流InputStream基礎

我們知道,文件是寫在磁盤中的,而程序的運行又要借助于內存。那么怎么實現內存和磁盤的“互動”呢?這就要借助“流”來實現了。內存具體指的就是我們的java程序,而磁盤具體指的是我們的文件。從磁盤到內存叫輸入,從內存…

23種設計模式——橋接模式 (Bridge Pattern)詳解

?作者簡介:大家好,我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式,持續分享Java技術內容。 🍎個人主頁:Meteors.的博客 💞當前專欄:設計模式 ?特色專欄:知識分享 &#x…

Python爬蟲實戰:研究Axes Grid模塊,構建旅游平臺酒店數據采集和分析系統

1. 引言 1.1 研究背景 隨著互聯網技術的飛速發展,全球數據總量呈現指數級增長。據國際數據公司(IDC)預測,到 2025 年全球數據圈將達到 175ZB,其中非結構化數據占比超過 80%。這些數據廣泛分布于各類網站平臺,包含著用戶行為、市場趨勢、產品特征等豐富信息。如何高效獲…

光照邊疆平臺|面向邊疆地區的現代化內容與信息服務系統

光照邊疆平臺|面向邊疆地區的現代化內容與信息服務系統聚焦“邊疆資訊 邊疆風光 用戶互動 后臺可視化管控”的高顏值內容平臺,適合展示、傳播與運營邊疆主題內容。系統定位與價值 主題聚焦:以“邊疆”為核心,統一內容語義與視覺…

刪除元素(不是刪除而是覆蓋)快慢指針 慢指針是覆蓋位置,快指針找元素

📝 題目:移除元素題目描述: 給定數組和值val,原地移除所有等于val的元素,返回新長度。例子: nums [3,2,2,3], val 3 → nums [2,2,_,_], return 2🔥 暴力法思路:暴力法想法&#…

10 【C++】泛型編程

文章目錄前言泛型編程(模板)1. 函數模板1.1 函數模板格式1.2 函數模板的實例化隱式實例化顯式指定模板參數實例化1.3 函數模板實例化的原理1.4 模板參數的匹配原則2. 類模板2.1 類模板的格式2.2 類模板的實例化2.3 類模板實例化的原理2.4 類模板的匹配原…

【基于YOLO和Web的交通工具識別系統】

系統功能 視頻檢測:對輸入的視頻流進行實時或離線分析,自動識別視頻中出現的交通工具(如飛機、自行車等)及行人,輸出包含目標類別、位置等信息的檢測結果。攝像檢測:通過連接攝像頭設備,對實時…

Python進程,線程

目錄 一、多任務 1.1定義 1.2具體體現 1.3并發和并行 1.3.1并發操作 1.3.2并行操作 1.3.3對比 二、進程 2.1概念 2.2特點 2.3進程狀態 2.4多進程 2.5多進程實現 2.6進程鎖 三、線程 3.1概念 3.2特點 3.3適用場景 3.4多線程實現 四、對比 4.1關系對? 4.2區…

【Element Plus 表單組件樣式統一 CSS 文字特效實現指南】

Element Plus 表單組件樣式統一 & CSS 文字特效實現指南 前言 在使用 Element Plus 組件庫開發表單頁面時,我們遇到了一個看似簡單卻很有趣的問題:el-input、el-select 和 el-textarea 在禁用狀態下的文字顏色不一致。通過深入研究,我們…

網絡通信與協議棧 -- OSI,TCP/IP模型,協議族,UDP編程

網絡通信的核心是實現不同主機上進程間的數據交換,其技術體系圍繞 “協議分層模型” 展開,向下依賴硬件介質傳輸電 / 光信號,向上支撐各類網絡應用(如網頁瀏覽、文件傳輸)。本文結合 OSI 理論框架與 TCP/IP 工業標準&a…

HarmonyOS 新一代聲明式 UI 彈窗機制:從 AlertDialog 到 CustomDialogController 的深度解析與實踐

好的,請看這篇關于 HarmonyOS 新一代聲明式 UI 彈窗機制的技術文章。 HarmonyOS 新一代聲明式 UI 彈窗機制:從 AlertDialog 到 CustomDialogController 的深度解析與實踐 引言 在 HarmonyOS 應用開發中,彈窗(Dialog)是…

混合推理模型(快思考、慢思考模型)

目錄基礎transformer架構、transformers庫預訓練模型的微調(Fine-tuning)預訓練微調的大模型應用模式base 模型、instruct 模型區別Hugging Face 上如何查看base模型、instruct模型混合推理模型大模型里的快思考 vs 慢思考qwen3模型含特殊 ChatML / 模型…

prometheus+grafana搭建

部署 prometheus 安裝 # 1,下載 wget https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-3.5.0.linux-amd64.tar.gz# 2,部署 tar -zxvf prometheus-3.5.0.linux-amd64.tar.gz -C /opt/ cd /opt/ mv ./prometheus-3.5.0.linux-amd64 …

MR30分布式I/O在面機裝備中的應用

隨著食品加工行業向自動化、智能化轉型,面機裝備對控制系統的響應速度、布線靈活性及穩定性提出了更高要求。本案例以某大型食品機械制造企業的全自動面條生產線升級項目為背景,引入 MR30 分布式 IO 模塊替代傳統集中式 IO 方案。通過將 MR30 分布式 IO …

Matlab使用小技巧合集(系列四):Table類型高效用法與數據處理實戰

Matlab使用小技巧合集(系列四):Table類型高效用法與數據處理實戰 在科研數據處理和論文寫作過程中,結構化數據的管理極為重要。Matlab的table類型為研究生和科研人員提供了靈活、高效的數據存儲與處理方式,尤其適合實驗結果整理、分組統計、數據預處理等場景。本文將系統介…

STM32的時鐘系統與時鐘樹的配置

STM32的時鐘系統是其微控制器(MCU)的核心組成部分,負責為CPU、外設和存儲器等模塊提供精確的時序信號。其設計靈活且復雜,通過多級時鐘樹(Clock Tree)實現時鐘源的選擇、分頻和分配。以下是詳細介紹&#x…

NV 工具metrics分析(ncu, nsys/torch profiler)

以下分析都以A100硬件架構為例; Theoretical Max Active Warps per SM: 64 Register number: 512 (規定每個thread不能超過256) Theoretical Active Warps per SM [warp]:512//registers_per_thread*4, which defines theoretical active warp occupancy Waves P…

[CISCN2019 總決賽 Day2 Web1]Easyweb

登錄界面可以看到隨機切換的圖片。從頁面源碼中可以看到<div class"avtar"><img src"image.php?id3" width"200" height"200"/></div>&#xff0c;圖片文件的請求地址&#xff0c;并且有傳參id。web應用中像這種動…