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