什麼是 MCP(模型上下文協議)及其運作原理
一個易於理解的模型上下文協議(MCP)指南,解釋它如何幫助大型語言模型(LLM)訪問外部資源,以克服知識限制並構建更強大的 AI 應用程序。
一個易於理解的模型上下文協議(MCP)指南,解釋它如何幫助大型語言模型(LLM)訪問外部資源,以克服知識限制並構建更強大的 AI 應用程序。
MCP(模型上下文協議)是一個開放、通用協議,標準化了應用程序如何向大型語言模型(LLM)提供上下文信息。
簡單來說,就像 HTTP 協議允許不同的網站和瀏覽器根據相同規則交換信息一樣,MCP 就是 AI 世界的 HTTP 協議。MCP 使不同 AI 模型能夠以標準化的方式連接到各種數據源和工具。這種標準化讓開發者能更輕鬆地構建 AI 應用程序,而無需為每個模型或數據源創建專門的接口。
大型語言模型(LLMs)功能強大,但它們面臨一些關鍵限制:
知識限制和更新挑戰:LLM 只知道其訓練數據中包含的信息。例如,GPT-4 的知識截止於 2023 年 4 月。訓練大型語言模型需要巨大的計算資源和時間,通常需要六個月或更長時間來完成一個新版本。這個問題導致模型知識總是 "過時" 的,而更新則既昂貴又耗時。當一個新模型完成訓練時,其知識已經開始落後。
缺乏專門的領域知識:LLM 使用公開可用的通用數據進行訓練。它們不能深入理解特定商業場景中的專門數據和信息。例如,醫療機構的內部流程、一家公司的產品目錄或一個組織的專有知識不在模型的訓練範圍內。
訪問外部數據缺乏統一標準:目前,有許多方法為 LLM 提供額外的信息,比如 RAG(檢索增強生成)、本地知識庫、互聯網搜索等。不同的開發團隊提供不同的集成解決方案,導致系統間的集成成本很高。擁有專門領域數據的系統(如 CRM、ERP、醫療記錄系統等)難以與 LLM 無縫集成。每一個集成都需要定制開發,缺乏共同的標準化方法。
這就是為什麼我們需要 MCP。MCP 提供了一個標準化協議,使 LLM 能夠以一致的方式訪問外部信息和工具,解決以上所有問題。通過 MCP,我們能獲得以下關鍵優勢:
豐富的預構建集成:MCP 提供了許多現成的服務器集成,包括文件系統、數據庫(PostgreSQL、SQLite)、開發工具(Git、GitHub、GitLab)、網絡工具(Brave Search、Fetch)、生產力工具(Slack、Google Maps)等。這意味著你不需要從頭開始構建這些集成。你只需使用這些預製的連接器讓 LLM 訪問這些系統中的數據即可。
LLM 提供者之間的靈活切換:今天你可能使用 GPT-4,明天你可能想嘗試 Claude 或 Gemini,或在不同場景中使用不同的 LLM。有了 MCP,你不需要重寫整個應用程序的集成邏輯。你只需更換底層模型,所有數據和工具集成都保持不變。
構建複雜的 AI 工作流程:想像一個法律文件分析系統,需要查詢多個數據庫,使用特定工具進行文件比較並生成報告。MCP 允許你在 LLM 基礎上構建這樣的複雜代理和工作流程。
在 MCP 中,有三個核心角色:MCP Server(提供工具和數據訪問)、MCP Client(嵌入在 LLM 並與 MCP Server 通信)、MCP Hosts(集成 LLM 和 Client 的應用程序,像是 Claude Desktop、Cursor 等)。讓我們詳細了解這三個角色如何協作運作。
MCP Server 是一個程序,為 LLM 提供工具和數據訪問功能。與傳統的遠程 API 服務器不同,MCP Server 可以作為本地應用在用戶設備上運行,或部署到遠程服務器。
每個 MCP Server 都提供一組特定的工具,負責從本地數據或遠程服務中檢索信息。當 LLM 確定需要在處理任務時使用某個工具時,將使用 MCP Server 提供的工具來獲取必要的數據並將其返回給 LLM。
MCP Client 是連接 LLM 和 MCP Servers 的橋樑。嵌入在 LLM 中,它負責:
你可以查看開發 MCP Client,以瞭解更多關於 MCP Client 與 LLM 集成的信息。
像是 Claude Desktop、IDE(Cursor 等)或想通過 MCP 訪問數據的 AI 工具等程序。這些應用程序為用戶提供與 LLM 交互的界面,同時集成 MCP Client 以連接到 MCP Server,從而使用 MCP Server 提供的工具擴展 LLM 的能力。
上述三個角色最終形成了一個基於 MCP 的 AI 應用程序。
這個系統的一個範例工作流程如下:
MCP Server 是 MCP 系統中最關鍵的環節。它決定了 LLM 可以使用哪些工具來訪問哪些數據,直接影響 AI 應用程序的功能邊界和能力。
要開始構建你自己的 MCP Server,建議首先閱讀官方 MCP 快速入門指南,其中詳述了從環境設置到 MCP Server 實施和使用的完整過程。我們只會解釋核心實施細節。
MCP Server 的核心功能是通過 server.tool() 方法定義工具。這些工具是 LLM 可以調用以獲取外部數據或執行特定操作的函數。我們來看看使用 Node.js 的簡化示例:
在這個例子中,我們定義了一個名為 search-documents 的工具,接受查詢字符串和最大結果數作為參數。該工具的實施將連接到一個知識庫系統並返回查詢結果。
LLM 將根據工具的定義和用戶的問題來決定是否使用這個工具。如果需要,LLM 將調用此工具,獲取結果,並結合用戶的問題生成答案。
在構建這樣的工具時,可以遵循以下最佳實踐:
在實施連接 AI 模型與外部系統的 MCP Server 時,MCP 實施中的兩個關鍵安全挑戰是:
這些挑戰的關鍵解決方案是實施個人訪問令牌(PATs)。PATs 提供了一種安全方式讓用戶授權訪問而無需分享他們的憑據或要求互動登錄。
以下是工作流程的運作原理:
這種方法允許你現有的服務保持其身份驗證機制的同時安全地實現 MCP 集成。
你可以參考博文:讓業務強大:將 AI 工具連接到現有服務並進行訪問控制,結合完整的源代碼示例,了解如何使用 Logto 的個人訪問令牌(PAT)配合基於角色的訪問控制(RBAC)來限制 MCP 可以從後端服務訪問的資源。
MCP(模型上下文協議)為 LLMs 和特定業務的結合帶來了革命性變化。它解決了大型語言模型的知識限制、缺乏專門的領域知識以及訪問外部數據無統一標準的問題。
使用 MCP 將你自己的服務連接起來,將為你的業務帶來新的可能性。MCP 是連接 AI 與商業價值的橋樑。你可以創建真正理解你公司內部知識的 AI 助手,開發訪問最新數據的智能工具,並構建滿足特定行業需求的專業應用程序。