在談MCP原理前,我們先談談MCP的技術前身—Function Calling。
1.Function Calling技術
在FunctionCalling技術出現之前,大語言模型雖然擁有強大的知識儲備和語言理解能力,但是只能提供自身數據庫已有的信息,無法和外界進行信息交互。它們的知識庫更新速度有限,?法獲取最新的實時信息,如天氣、實時熱搜事件等;也無法根據用戶的特定需求提供個性化服務,只能提供通?的信息。為了解決這些問題,OpenAI在2023年推出了FunctionCalling,實現了讓大模型通過函數調用外部工具,FunctionCalling的工作大致如下:
- 當用戶向大模型提問時,大模型通過自然語言理解和推理,判斷是否需要調用工具
- 如果需要調用工具,還會判斷具體調用哪個工具,并自動組織參數,然后調用工具
- 然后拼接工具返回的結果,重新組織答案,回復用戶
例如,如果用戶問:
杭州今天天氣怎么樣?" ?大模型可能調用 get_current_weather,并自動填充 location="杭州"和current_date="2025-07-14"
大致流程圖如下:
因此相比傳統的工程代碼開發,它有幾個優勢:
結構化輸出:確保模型能以預定義的 JSON 格式輸出函數所需參數,提高了可解析性和可靠性,不需要開發額外的協議。
函數定義明確:通過schema清晰定義函數名稱、描述、參數類型等
降低解析復雜度:開發者只需要解析 json 返回即可,不需要編寫復雜的文本解析邏輯
提高準確性:減少了模型在生成函數調用時的"幻覺"問題
簡化開發流程:標準化了大模型與外部工具的交互方式
Function Calling 和傳統工程調用外部工具實現邏輯的差別有以下幾點:
協議層面:傳統代碼需要自己設計 Tool 的描述協議并維護在提示詞中,Function Calling 通過統一的 JSON 協議,約定函數定義和模型返回,方便維護。
實現層面:傳統代碼需要實現對應的工具調用和解析邏輯,同時也要維護提示詞,通過?Function Calling 實現則不需要做文本返回的解析,也不需要將 Tools 放到提示詞中維護。
效果層面:傳統工程代碼方式容易受限于模型的指令遵循能力,需要寫很多代碼兜底不可控的模型返回,FC能夠做到較好的指令遵循。
綜上Function Calling 提供了一種更智能、更靈活的工具調用范式。
盡管 Function Calling看起來很強大,但不是所有的大語言模型都支持 Function Calling,因為模型要支持 Function Calling 通常需要專門的訓練或微調,需要在預訓練或者微調階段訓練模型理解函數模式,學習如何生成符合預期格式的 json 輸出,以及理解參數類型和約束條件等,所以 Function Calling 比較依賴模型的理解能力。且當下沒有統一的行業標準,每個大語言模型提供商的實現方式不同,需要開發者為每種模型或工具編寫特定的適配代碼。比如扣子平臺的墨跡天氣,豆包能調用,并不意味著deepseek能直接調用,還需要針對deepseek重新適配。但至少通道建立起來了,有通道就要有協議,于是標準化又開源的 MCP 協議橫空出世。
2.MCP的出現
Anthropic 在2024 年11月25日發布了MCP(Model Context Protocol),它是一種模型上下文協議,它允許大語言模型通過協議與外部?具或服務交互,動態獲取實時數據或執?操作。意思就是只要工具按照這種協議開發,所有的大模型都能直接調用,不依賴模型的理解能力。
2.1 MCP的架構
MCP遵循客?端-服務器架構(client-server)
MCP主機(MCP Hosts):裝了Mcp的LLM應?程序(如ClaudeDesktop、Cursor、Cherry-Studio等)。
MCP客?端(MCP Clients):在主機程序內部,與MCP server保持1:1的連接。
MCP服務器(MCP Servers):為MCP Client提供上下文、工具和prompt信息。
本地資源(Local Resources):本地計算機中可供MCP server安全訪問的資源(例如?件、數據庫)。
遠程資源(Remote Resources):MCP server可以連接到的遠程資源(例如通過API)
2.2 MCP運行原理
2.3 Mcp運行模式
方式一:STDIO模式(本地運行)
特點:本地安裝運?MCP Server,需要配置開發環境
方式二:SSE模式(遠程服務)
特點:?需本地環境,僅需輸?服務器URL,適合調?云端API
2.4 常見的McpServer網站
GitHub:https://github.com/modelcontextprotocol/servers
GitHub:https://github.com/punkpeye/awesome-mcp-servers
Smithery:https://smithery.ai/
魔塔社區(國內):https://www.modelscope.cn/mcp
以魔塔社區舉例:標志Hosted的是遠程訪問的
點擊“連接”,可以獲得服務URL
標志local是本地運行的:詳情頁可以獲得配置信息: