繁體中文(香港)
  • MCP
  • Model Context Protocol
  • AI

什麼是 MCP(模型上下文協議)及其運作原理

一個易於理解的模型上下文協議(MCP)指南,解釋它如何幫助大型語言模型(LLM)訪問外部資源,以克服知識限制並構建更強大的 AI 應用程序。

Yijun
Yijun
Developer

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

什麼是 MCP?

MCP(模型上下文協議)是一個開放、通用協議,標準化了應用程序如何向大型語言模型(LLM)提供上下文信息。

簡單來說,就像 HTTP 協議允許不同的網站和瀏覽器根據相同規則交換信息一樣,MCP 就是 AI 世界的 HTTP 協議。MCP 使不同 AI 模型能夠以標準化的方式連接到各種數據源和工具。這種標準化讓開發者能更輕鬆地構建 AI 應用程序,而無需為每個模型或數據源創建專門的接口。

為什麼我們需要 MCP?

大型語言模型(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 中,有三個核心角色:MCP Server(提供工具和數據訪問)、MCP Client(嵌入在 LLM 並與 MCP Server 通信)、MCP Hosts(集成 LLM 和 Client 的應用程序,像是 Claude Desktop、Cursor 等)。讓我們詳細了解這三個角色如何協作運作。

MCP Server

MCP Server 是一個程序,為 LLM 提供工具和數據訪問功能。與傳統的遠程 API 服務器不同,MCP Server 可以作為本地應用在用戶設備上運行,或部署到遠程服務器。

每個 MCP Server 都提供一組特定的工具,負責從本地數據或遠程服務中檢索信息。當 LLM 確定需要在處理任務時使用某個工具時,將使用 MCP Server 提供的工具來獲取必要的數據並將其返回給 LLM。

MCP Client

MCP Client 是連接 LLM 和 MCP Servers 的橋樑。嵌入在 LLM 中,它負責:

  • 接收來自 LLM 的請求
  • 將請求轉發到合適的 MCP Server
  • 將 MCP Server 的結果返回給 LLM

你可以查看開發 MCP Client,以瞭解更多關於 MCP Client 與 LLM 集成的信息。

MCP Hosts

像是 Claude Desktop、IDE(Cursor 等)或想通過 MCP 訪問數據的 AI 工具等程序。這些應用程序為用戶提供與 LLM 交互的界面,同時集成 MCP Client 以連接到 MCP Server,從而使用 MCP Server 提供的工具擴展 LLM 的能力。

MCP Workflow

上述三個角色最終形成了一個基於 MCP 的 AI 應用程序。

這個系統的一個範例工作流程如下:

如何構建一個 MCP Server

MCP Server 是 MCP 系統中最關鍵的環節。它決定了 LLM 可以使用哪些工具來訪問哪些數據,直接影響 AI 應用程序的功能邊界和能力。

要開始構建你自己的 MCP Server,建議首先閱讀官方 MCP 快速入門指南,其中詳述了從環境設置到 MCP Server 實施和使用的完整過程。我們只會解釋核心實施細節。

定義 MCP Server 提供的工具

MCP Server 的核心功能是通過 server.tool() 方法定義工具。這些工具是 LLM 可以調用以獲取外部數據或執行特定操作的函數。我們來看看使用 Node.js 的簡化示例:

在這個例子中,我們定義了一個名為 search-documents 的工具,接受查詢字符串和最大結果數作為參數。該工具的實施將連接到一個知識庫系統並返回查詢結果。

LLM 將根據工具的定義和用戶的問題來決定是否使用這個工具。如果需要,LLM 將調用此工具,獲取結果,並結合用戶的問題生成答案。

定義工具的最佳實踐

在構建這樣的工具時,可以遵循以下最佳實踐:

  • 清晰的描述:為每個工具提供詳細、準確的描述,明確說明其功能、適用場景和限制。這不僅幫助 LLM 選擇合適的工具,也使開發者能夠更容易地理解和維護代碼。
  • 參數驗證:使用 Zod 或類似庫嚴格驗證輸入參數,確保正確類型、合理的數值範圍,並拒絕不合規的輸入。這可以防止錯誤傳播到後端系統並提高整體穩定性。
  • 錯誤處理:實施全面的錯誤處理策略,捕獲可能的異常,並返回用戶友好的錯誤消息。這改善了用戶體驗,使 LLM 能夠根據錯誤條件提供有意義的回應,而不僅僅是簡單地出錯。
  • 數據訪問控制:確保後端資源 API 擁有健全的身份驗證和授權機制,並仔細設計權限範圍,以限制 MCP Server 僅能訪問和返回用戶被授權的數據。這可以防止敏感信息洩露並確保數據安全。

如何確保 MCP(AI 模型)與外部系統之間數據交換的安全性

在實施連接 AI 模型與外部系統的 MCP Server 時,MCP 實施中的兩個關鍵安全挑戰是:

  • 身份驗證:與傳統應用不同,在 MCP 環境中,用戶無法使用傳統登錄流程(如用戶名/密碼、郵箱/驗證碼等)來訪問外部系統。
  • MCP Server 請求的訪問控制:通過 AI 工具訪問系統的用戶與可能直接使用你系統的用戶是同一個。MCP Server 在他們通過 AI 工具進行互動時作為他們的代表。重新設計整個訪問控制機制僅為了適應 MCP Server 將需要大量的時間和成本。

這些挑戰的關鍵解決方案是實施個人訪問令牌(PATs)。PATs 提供了一種安全方式讓用戶授權訪問而無需分享他們的憑據或要求互動登錄。

以下是工作流程的運作原理:

這種方法允許你現有的服務保持其身份驗證機制的同時安全地實現 MCP 集成。

你可以參考博文:讓業務強大:將 AI 工具連接到現有服務並進行訪問控制,結合完整的源代碼示例,了解如何使用 Logto 的個人訪問令牌(PAT)配合基於角色的訪問控制(RBAC)來限制 MCP 可以從後端服務訪問的資源。

總結

MCP(模型上下文協議)為 LLMs 和特定業務的結合帶來了革命性變化。它解決了大型語言模型的知識限制、缺乏專門的領域知識以及訪問外部數據無統一標準的問題。

使用 MCP 將你自己的服務連接起來,將為你的業務帶來新的可能性。MCP 是連接 AI 與商業價值的橋樑。你可以創建真正理解你公司內部知識的 AI 助手,開發訪問最新數據的智能工具,並構建滿足特定行業需求的專業應用程序。