MCP 是什么:從 USB-C 到 AI 的「萬能接口」哲學
MCP(Model Context Protocol,模型上下文協議) 是Anthropic于2024年11月推出的AI跨系統交互標準,專為解決LLM(大語言模型)的「數字失語癥」——讓AI既能安全調用外部工具(如實時天氣API、本地文件系統),又能避免數據泄露或濫用。它本質是AI世界的「USB-C協議」:通過標準化的「請求-響應-通知」格式(如context_request
強制攜帶權限聲明),讓不同廠商的LLM(如Claude、GPT-4o)和工具(如 cursor、ClaudeDesktop、5ire)無需適配私有協議,就能像「U盤插入電腦」一樣即插即用。
就像USB-C讓手機、電腦、打印機用同一接口通信,MCP定義了AI的「數字握手規則」:
-
統一語法:所有工具必須按
mcp_schema_v3
格式暴露能力(如天氣工具的name
、parameters
、description
),LLM通過capability_negotiation
動態協商權限(比如只允許查詢上海天氣,禁止獲取用戶定位); -
安全隔離:內置「憲法AI」審查每個工具調用(如阻止「用病歷數據優化保險定價」的請求),敏感操作需「用戶+模型+工具」三方授權,避免AI越權;
-
即插即用:開發者只需按協議編寫工具(如用Python實現
tools/call
接口),無需關心LLM是云端還是本地部署,5ire客戶端能自動發現并調用符合MCP的工具,就像電腦自動識別新U盤。
MCP與Function Calling: 從「模型專屬」到「協議共生」
先給出幾個基本概念
Function Calling(函數調用)
-
本質:大模型基座的「能力適配器」,允許模型通過結構化指令調用外部工具(如 API、數據庫)。
-
問題:非標準化 —— 不同模型(如 GPT-4o、DeepSeek)的函數調用協議(參數格式、觸發邏輯、返回結構)存在差異。 例:GPT-4o 要求函數參數為
JSON object
,DeepSeek 可能要求key-value字符串
,導致同一功能(如天氣查詢)需為每個模型單獨開發。
MCP(Model-API Communication Protocol,模型 - API 通信協議)
-
目標:定義跨模型的標準化交互語言,解決「函數調用協議碎片化」問題。
-
核心設計:
-
統一請求 / 響應格式(如強制使用
mcp_schema_v1
的 JSON 結構); -
標準化函數元數據(
name
/description
/parameters
); -
錯誤處理協議(如
MCPErrorCode
枚舉)。
-
AI Agent(智能體)
-
定位:MCP 生態的「超級用戶」,通過「意圖解析→MCP 函數調用→結果整合」閉環自主完成復雜任務。
-
優勢:MCP 讓 Agent 擺脫對單一模型的依賴,實現「一次開發,多模型運行」。
以GPT-4o和DeepSeek為例,看看FuctionCall實現的差異,以及MCP如何跨模型
維度 | GPT-4o 函數調用(非 MCP) | DeepSeek 函數調用(非 MCP) | MCP 標準協議(統一后) |
---|---|---|---|
觸發指令 | function_call: {"name": "...", ...} | tools: [{"name": "...", "parameters": ...}] | mcp_action: {"function": "...", ...} |
參數格式 | 嚴格 JSON 對象 | 允許 JSON 或鍵值對字符串 | 強制 JSON Schema(含type/enum校驗) |
返回結構 | 直接返回 API 結果 | 包裹result字段({"result": ...}) | 統一mcp_response(含status/data/error) |
錯誤處理 | 模型自定義錯誤碼(如1001) | 無統一錯誤格式 | 標準化MCP_ERROR_*枚舉(如INVALID_PARAM) |
MCP Client/Server 架構
詳見?Introduction - Model Context Protocol
如何開發 / 使用 MCP
MCP 的官網提供了詳盡的文檔和 SDK,開發者只需遵循這些資源即可輕松實現 MCP。
-
Model Context Protocol 介紹
-
MCP Server 開發
-
MCP Client 開發