MCP協議讓AI不再“與世隔絕”
什么是MCP?
MCP(Model Context Protocol,模型上下文協議)是由 Anthropic 公司于 2024 年 11 月 26 日 推出的一項技術協議。其主要目的是解決 AI 助手與外部數據源隔離的問題,使 AI 能夠連接并訪問外部資源。
關鍵點:
- MCP 不是用戶隱私協議,而是一種技術協議,類似于 WiFi 或藍牙。
- 它定義了 AI 助手與外部資源之間的通信規則。
image.png
MCP 的三大核心組件:
- MCP 主機:你與 AI 互動的應用程序,比如 Claude Desktop,相當于 AI 的“大本營”。
- MCP 服務器:專門的小程序,提供特定功能(如訪問文件或調用 API),就像為 AI 服務的“專業導游”。
- MCP 客戶端:連接主機和服務器的橋梁,確保通信順暢,通常無需用戶直接操作。
為什么需要 MCP?
傳統的 AI 助手(如 Deepseek 等預訓練模型)通常存在知識截止日期的限制,無法直接訪問外部最新信息。MCP 的出現正是為了突破這一限制,通過定義通用的通信規則,讓 AI 助手能夠連接到外部資源,獲取更多實時信息和功能。
MCP的作用:
- 統一接口:LLM 只需理解 MCP,無需學習各種 API。
- 可插拔架構:新功能只需添加 MCP 服務器。
- 工作流自動化:多個服務器可串聯成復雜流程。
MCP的傳輸模式
MCP 支持多種傳輸模式,主要有 stdio 和 SSE 兩種模式,下面我們分別介紹。
stdio 模式概念
stdio(標準輸入輸出)模式是 MCP 的一種基本傳輸方式,它通過標準輸入輸出流與 MCP 服務器進行通信。
特點:
- MCP 客戶端通過子進程啟動 MCP 服務器。
- 通過標準輸入(stdin)向服務器發送請求。
- 通過標準輸出(stdout)接收服務器的響應。
- 適合在本地開發環境中使用,無需額外的網絡配置。
優缺點:
- 優點:設置簡單,無需額外的網絡配置。
- 缺點:只能在本地使用,不適合分布式環境。
SSE 模式
SSE(Server-Sent Events)模式是一種基于 HTTP 的單向通信機制,允許服務器向客戶端推送數據。
特點:
- MCP 服務器以獨立進程運行,監聽 HTTP 請求。
- 客戶端通過 HTTP 連接到服務器。
- 服務器可以持續向客戶端推送事件和數據。
- 適合在分布式環境中使用,支持多客戶端連接。
優缺點:
- 優點:支持分布式部署,可以被多個客戶端同時訪問。
- 缺點:配置相對復雜,需要額外的網絡設置。
MCP能干什么?
image.png
可以看出,通過這種設計,MCP 讓 AI 助手從單純的對話工具,進化成能操作現實世界的強大助手。
MCP server 客戶端配置
目前支持 MCP-Server 的客戶端有 Cursor、Claude、Cline 等。從 Windows 使用體驗來說,Cursor(0.47.8)需要保持 cmd 窗口常開,體驗較差,而 Claude 依賴 Claude 大模型,因此更推薦使用 VSCode 的 Cline 插件,可以通過 OpenRouter + deepseek-chat/free 免費使用。
配置步驟:
- 安裝 Cline 插件:通過最新版本的 VSCode 安裝 Cline 插件。
- 注冊并登錄 OpenRouter:訪問 (https://openrouter.ai),在右上角 Keys 處創建 API Keys。此 Key 只顯示一次,請妥善保存。
- 配置 API Provider:在 Cline 設置處配置 API Provider,選擇 OpenRouter,并填寫剛剛設置的 Key,選擇對應的大模型,可通過
free
關鍵詞進行過濾。
完成上述配置后即可通過 Cline 配置 MCP-Server。
MCP-SERVER配置
在 Cline 右上角點擊 MCP Servers 進行配置,通過點擊 Configure MCP Servers
打開 MCP-Server 配置文件 cline_mcp_setting.json
,此時就可以按需添加 MCP-Server 了。
image-20250324084419184
示例配置文件:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"E:\\personal\\javadaily"
]
},
"sequential-thinking": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-sequential-thinking"
]
}
},
"spring-ai-mcp-server": {
"command": "cmd",
"args": [
"/c",
"java",
"-Dspring.ai.mcp.server.stdio=true",
"-Dspring.main.web-application-type=none",
"-Dlogging.pattern.cnotallow=",
"-jar",
"D:\\GitSpace\\JavaSpace\\mozi-mcp\\mozi-mcp-server\\target\\mozi-mcp-server.jar"
],
"env": {
"appId":"12121212",
"appSecret":""
},
"enabled": true
},
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
}
}
大模型如何選擇工具?
大模型基于以下幾點決定調用哪個工具:
- 具描述分析:每個工具在初始化時都提供了詳細的描述和參數要求。大模型會分析這些描述來了解工具的具體功能、使用場景和限制。
- 任務需求匹配:大模型會將用戶請求分解為具體任務,然后尋找最直接匹配這些任務的工具。例如,創建文件時,大模型會尋找專門用于文件創建的工具。
- 上下文理解:大模型會考慮整個對話的上下文和具體操作的環境,選擇最適合當前情境的工具。
工作流程:
- 用戶在客戶端提出請求。
- 客戶端將請求發送給大模型。
- 大模型理解請求并決定使用哪些工具。
- 大模型調用 MCP 服務提供的 API。
- MCP 服務執行操作并返回結果。
- 大模型解析結果并提供響應。
- 客戶端顯示響應給用戶。
效果演示
在網頁上隨便找一篇文章,讓 CLine 使用 fetch
工具爬取并生成對應的 Markdown 文件。
示例指令:
幫我 fetch https://juejin.cn/post/7457366224823124003 這篇文章并在 javadaily 下生成 Markdown 文件。