文章來源:https://anmolbaranwal.com/
本文涵蓋內容如下:
- 現有AI工具的問題。
- MCP及其核心組件介紹。
- MCP 內部是如何工作的?
- MCP 解決的問題以及它為何重要。
- MCP 的 3 個層(以及我最終如何理解它們)。
- 使用內置 Auth 連接 100 多個托管 MCP 服務器的最簡單方法。
- MCP 的一些限制。
1. 現有AI工具的問題
如果您曾經嘗試構建一個可以真正執行諸如檢查電子郵件或發送聊天消息(基于您的工作流程)等操作的 AI 代理,那么您就會知道其中的痛苦。
API 太多,上下文信息不足
你想讓AI使用的每個工具,本質上都是一個小型API集成。想象一下,一個用戶問:“張三有沒有給我發郵件,說昨天的比賽報告?”
對于LLM來說,答案是:
- 請注意,這是一個電子郵件搜索任務。
- 選擇正確的端點
search_email_messages
- 用自然語言解析并總結結果
所有這些都保持在上下文窗口內。這很重要。模型經常會忘記、猜測或產生幻覺。如果你無法驗證準確性,你甚至都沒有意識到問題的存在。
API 是基于步驟的,但 LLM 不擅長記住步驟
讓我們舉一個 CRM 的基本例子
- 首先,您獲取聯系人 ID →
get_contact_id
- 然后,獲取他們的當前數據→
read_contact
- 最后,修補更新→
patch_contact
在傳統代碼中,你可以將其抽象成一個函數,然后就完成了。但是使用 LLM 呢?每一步都有可能因為參數錯誤、字段缺失或鏈式調用中斷而出錯。然后你的“AI 助手”就會突然用自然語言道歉,而不是更新任何內容。
脆弱的提示詞工程
API 在不斷發展,文檔在變化,授權流程也在更新。你可能某天早上醒來發現,原本運行良好的代理現在因為第三方的變更而崩潰了。
與傳統應用不同的是,它沒有共享的框架或抽象層可供依賴。每個 AI 工具集成都如同脆弱的提示詞工程,需要快速構建工程和 JSON 代碼。這可能會破壞 AI 代理的“肌肉記憶”。
LLM鎖定
構建了很棒的 GPT-4 工具。但是,如果你切換到 Claude 或 Gemini 等其他工具,則需要從頭重寫所有函數描述和系統提示。這不是一個大問題,但沒有通用的解決方案。
必須有一種方式讓工具和模型清晰地溝通,而不是將所有邏輯塞進臃腫的提示詞中。這就是 MCP 的用武之地。
2. MCP及其核心組件介紹
模型上下文協議 (MCP)是一種新的開放協議,它標準化了應用程序向 LLM 提供上下文和工具的方式。
可以將其視為 AI 的通用連接器。MCP 作為 Cursor 的插件系統,允許您通過將其連接到各種數據源和工具來擴展 Agent 的功能。
MCP 幫助您在 LLM 之上構建代理和復雜的工作流程。
例如,Obsidian 的 MCP 服務器可幫助 AI 助手搜索和閱讀 Obsidian 庫中的筆記。
您的 AI 代理現在可以:
→ 通過 Gmail 發送電子郵件
→ 在 Linear 中創建任務
→ 在 Notion 中搜索文檔
→ 在 Slack 中發布消息
→ 在 Salesforce 中更新記錄
所有這些都通過標準化界面發送自然語言指令來實現。
想想這對生產力意味著什么。以前需要在 5 個以上應用之間切換的任務,現在只需與客服人員進行一次對話即可完成。
從本質上講,MCP 遵循客戶端-服務器架構,其中主機應用程序可以連接到多個服務器。
核心組件
以下是任何通用 MCP 服務器中的核心組件:
MCP hosts
- 想要通過 MCP 訪問數據的 Claude Desktop、Cursor、Windsurf 或 AI 工具等應用程序。MCP Clients
- 協議客戶端與 MCP 服務器保持 1:1 連接,充當通信橋梁。MCP Servers
- 輕量級程序,每個程序通過標準化模型上下文協議公開特定功能(如讀取文件、查詢數據庫…)。Local Data Sources
- 您計算機上的 MCP 服務器可以安全訪問的文件、數據庫和服務。例如,瀏覽器自動化 MCP 服務器需要訪問您的瀏覽器才能運行。Remote Services
- MCP 服務器可以連接的外部 API 和基于云的系統。
如果你有興趣了解該架構,可以查看官方文檔。它涵蓋了協議層、連接生命周期、錯誤處理以及整體實現。
3. MCP 內部是如何工作的?
MCP 生態系統由幾個共同運作的關鍵參與者組成。讓我們簡要地了解一下它們。
客戶端
客戶端是你實際使用的應用程序,例如 Cursor、Claude Desktop 等。它們的作用是:
- 向 MCP 服務器請求可用功能
- 向 AI 模型展示這些能力(工具、資源、提示)
- 將AI的工具使用請求轉發回服務器并返回結果
- 為模型提供基本的 MCP 協議概述,以實現一致的交互
它們處理系統前端之間的通信:用戶、AI 模型和 MCP 服務器。
服務器
MCP 服務器充當用戶/AI 與外部服務之間的中介。它們:
- 提供標準化的 JSON-RPC 接口用于工具和資源訪問
- 將現有 API 轉換為與 MCP 兼容的功能,而無需更改 API
- 處理身份驗證、能力定義和通信標準
他們為客戶端提供上下文、工具和提示詞。
這些是執行實際任務的外部系統或平臺(例如 Discord、Notion、Figma)。它們不會為 MCP 更改 API。
整個設置允許開發人員將任何兼容的 API 插入任何支持 MCP 的客戶端,避免依賴大型 AI 提供商的集中式集成。
MCP 構建模塊:工具、資源和提示
- 工具
工具代表人工智能可以執行的操作,例如search_emails
或create_issue_linear
。它們構成了模型如何通過 MCP 執行現實世界功能的基礎。
- 資源
資源是指 MCP 服務器希望向客戶端提供的任何類型的數據。這些可以包括:
- 文件內容
- 數據庫記錄
- API 響應
- 實時系統數據
- 屏幕截圖和圖片
- 日志文件
- 以及更多
每個資源都由一個唯一的 URI(例如 )標識,file://user/prefs.json
該 URI 可以是項目注釋、編碼偏好或任何特定于您的內容。它包含文本或二進制數據。
資源使用遵循此格式的 URI 來標識。
[協議]: //[主機]/[路徑]
例如:
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
服務器也可以定義自己的 URI 方案。更多詳情請參閱官方文檔。
- 提示詞
工具讓AI做事,但提示詞指導AI在做事時如何表現。
這就像在使用工具時向模型提供的指令。它們充當操作指南,幫助人工智能遵循特定的風格、工作流程或安全協議,例如在按下delete_everything
按鈕之前遵循特定的安全檢查清單。
🎯 讓我們探討一個實際場景:
想象一下 Google 日歷 MCP 服務器。日歷 API 功能強大而且功能豐富,每個事件都包含訪客、時區、提醒、附件等字段。如果你要求 AI 模型執行這些操作`,它可能很難從中篩選出相關數據。
這就是prompts
我們resources
進來的地方。
MCP 提示可以指導模型:
處理日歷事件時,僅修改標題或參與者匹配的事件。使用該list-events
工具提取相關事件,將其復制到臨時資源 ( Resource B
),在那里應用更改,然后使用update-events-from-resource
同步功能將其同步回來。
這種模式讓人工智能專注于受控狀態下的干凈、可編輯數據 ( the resource
),并以可重復使用的標準化指令 ( the prompt
) 和適當的操作 ( tool
) 為指導。
可以閱讀Builder.io上的概念示例,他們已經在 MCP 提示下對其進行了介紹。
當客戶端連接到 MCP 服務器時,它會請求可用工具、資源和提示的列表。根據用戶的輸入,客戶端選擇向模型顯示的內容。當模型選擇一個操作時,客戶端會通過服務器執行該操作,并通過數據流確保正確的授權。
4. MCP 解決的問題以及它的重要性
MCP解決的問題:
- 一個通用協議=數千種工具
這種通用協議意味著一個 AI 可以與數千種工具集成,只要這些工具具有 MCP 接口,從而無需為每個新應用程序進行自定義集成。
服務使用一致的JSON-RPC格式描述它們可以做什么(“發送 Discord 消息”、“創建 Linear 票證”)以及如何執行這些操作(參數、身份驗證方法)。
- 角色明確劃分:模型思考,工具行動
它在人工智能模型(思考者)和外部工具(執行者)之間建立了清晰的區分。你的AI代理不會因為Slack每次調整API而崩潰。
- 使用 MCP,您在將 GPT 替換為 Claude 或 Gemini 時無需重新編寫所有工具描述。您的工具和邏輯保持不變
- MCP 支持記憶和多步驟工作流程,這意味著您的代理可以記住跨任務的事情并智能地將操作鏈接在一起
- 它可以減少幻覺。總的來說,MCP 使用清晰、結構化的工具定義。這有助于 AI 保持扎實和準確
MCP 為何重要?
- 它將
通用AI助理
開發人員的需求變成了現實。 - 將這些操作組合成復雜的工作流程(由 AI 處理邏輯)的潛力將導致
自動化智能新時代
。
因此,MCP 使開發人員能夠更輕松地利用 AI 做更多事情。
5. MCP 的 3 個層(以及我最終如何理解它們)
這就是我對這個概念的詳細理解。我會附上一個常見的例子,希望能幫助你快速理解。
? 模型 ? 語境:“用LLM能理解的方式與他交流”
想象一下,模型就像機器人的大腦(LLM
)。它可以處理信息,但需要明確的指令。上下文提供了這些指令,使其能夠正常工作。
例如:如果你告訴機器人“給我做一個三明治”,這太模糊了。但如果說“用這些面包、火腿和奶酪做一個三明治”,就能給機器人提供理解和執行任務的語境。
- 模型是機器人(LLM)。
- 上下文是您給出的具體指示(三明治的配料)。
? 上下文 ? 協議:“為 LLM 提供結構化的內存、工具和狀態”
一旦機器人接收到指令(上下文),它就需要一種方式來遵循指令、記住細節并使用工具。這一切都由 完成Protocol
,它是讓機器人運用記憶和工具完成工作的系統。
我們還是以三明治為例。給它制定一個規程,可以幫助它記住食材,知道如何用刀等等。
- 上下文告訴機器人該做什么。
- 協議為其提供了執行此操作的工具和內存。
這是完成任務的結構。
? 協議 ? 運行時:“實際運行 AI 代理”
機器人知道該做什么(上下文)以及如何去做(協議)。現在它需要真正地去做,這可以通過運行時來實現。
回到三明治的例子,運行時就是三明治開始執行的時刻。它就像任務開始執行的環境(比如廚房)。
- 協議為機器人提供了遵循的方法。
- 運行時是機器人實際工作的環境。
讓我們將這三個層放在一起,看看使用會產生什么效果飯店版
。
- 這
Model
是廚師。他們擁有烹飪的知識和技能。 - 這
Context
是菜單。它告訴廚師需要哪些食材,以及這道菜應該是什么樣子、味道如何。 - 這
Protocol
是服務員。服務員會把訂單交給廚師,準確地告訴廚師菜品的制作方法,甚至會記住你是否對某種食物過敏。 - 廚房
Runtime
是廚師實際準備食物的地方。所有工具、加熱和準備工作都在這里進行。
一旦您了解了服務器和客戶端等核心組件(在“MCP 的內部工作原理”部分中介紹),一切就變得有意義了。
各層相互配合,使整個系統正常運轉。
6. 使用內置方法連接 100 多個托管 MCP 服務器的最簡單方法
在本節中,我們將探索將 Cursor 與 MCP 服務器連接起來的最簡單方法。
如果您想了解如何在 Cursor 中添加和使用自定義 MCP 服務器,請閱讀官方文檔。
步驟 1:先決條件。
安裝 Node.js 并確保npx
它在您的系統中可用。
第 2 步:在 Cursor 中啟用 MCP 服務器。
您可以使用打開 Cursor 中的命令面板Ctrl + Shift + P
并搜索光標設置。
您會在側邊欄上找到 MCP 選項。
步驟 3:使用預定義的 MCP 服務器
我們也可以從頭創建一個,但為了簡單起見,我們使用預定義的。
我們將使用 Composio 作為服務器,因為它們內置了身份驗證功能。您可以在mcp.composio.dev找到 Composio 的列表。
- 內置身份驗證支持 OAuth、API 密鑰、JWT 和 Basic 身份驗證。這意味著您無需創建自己的登錄系統。
- 完全托管的服務器無需復雜的設置,可以輕松地將 AI 代理與 Gmail、Slack、Notion、Linear 等 250 多種工具集成。
- 提供 20,000 多個預構建的 API 操作,無需編碼即可快速集成。
- 根據您的配置需求,可以在本地或遠程操作。
- 更好的工具調用準確性使 AI 代理能夠與集成應用程序順暢交互。
- 它與 AI 代理兼容,這意味著它可以將 AI 代理連接到工具,以便在單個對話中執行發送電子郵件、創建任務或管理票證等任務。
這也意味著更少的停機時間和維護問題。您可以在status.composio.dev查看狀態。
您可以輕松地與一堆有用的 MCP 服務器集成,而無需編寫任何代碼。
通過每個選項,您可以找到活躍用戶總數、當前版本、最近更新時間以及所有可用的操作。
您將找到使用它來安裝的說明TypeScript
,Python
并且它支持 Claude (MacOS)、Windsurf (MacOS) 和 Cursor 作為 MCP 主機。
步驟4:集成MCP服務器
現在是時候集成一個帶光標的郵件服務器了。目前,我們將使用 Gmail MCP 服務器。
以前是使用 SSE,但 Cursor 最近用改變了這種方法npx command
。我們需要生成終端命令。請查看此頁面來生成您的終端命令。
終端命令將如下所示。
npx @composio / mcp @latest setup“https://mcp.composio.dev/gmail/xyzxyz...” ——客戶端光標
您可以在終端中運行此命令并重新啟動 Cursor 以注意更改。
如果您使用的是 Python,請按照以下方法安裝 composio-toolset。
pip install composio_openai從composio_openai導入 ComposioToolSet,App
從openai導入 OpenAIopenai_client = OpenAI ()
composio_toolset = ComposioToolSet (entity_id= "default" )
tools = composio_toolset.get_tools ( apps=[ App . GMAIL ])
根據您的使用情況,您可以將最終配置放在兩個位置:
- 對于特定于項目的工具,請
.cursor/mcp.json
在項目目錄中創建一個文件。這允許您定義僅在該特定項目中可用的 MCP 服務器。 - 對于您想要在所有項目中使用的工具,請
\~/.cursor/mcp.json
在主目錄中創建一個文件。這將使 MCP 服務器在您的所有 Cursor 工作區中可用。終端將強制執行第二個選項,使其可全局訪問。
它將顯示必要的操作和狀態綠點,表示已成功集成。
mcp.json
如下。
{ “mcpServers” : { “gmail_composio” : { “url” : “https://mcp.composio.dev/gmail/freezing-wrong-dress-7RHVw0” } }
}
您可以查看示例服務器和實現列表。您可以按照此結構(根據您的偏好選擇)集成社區服務器。
? SSE 服務器配置。
Cursor 支持此配置,您可以指定url
要連接到 SSE 服務器的字段。
// 此示例演示了使用 SSE 格式的 MCP 服務器
// 用戶應手動設置并運行服務器
// 它可以聯網,以允許其他人訪問它
{ "mcpServers" : { "server-name" : { "url" : "http://localhost:3000/sse" , "env" : { "API_KEY" : "value" } } }
}
? STDIO 服務器配置 (Python)
這將使用 Python 腳本通過標準輸入/輸出 (STDIO) 傳輸設置一個 MCP 服務器。此方法主要用于本地開發。
// 如果您使用的是 CLI 服務器 Python
// 此示例演示了使用 stdio 格式的 MCP 服務器
// Cursor 會自動為您運行此過程
// 這使用 Python 服務器,使用 `python` 運行
{ "mcpServers" : { "server-name" : { "command" : "python" , "args" : [ "mcp-server.py" ] , "env" : { "API_KEY" : "value" } } }
}
? STDIO 服務器配置(Node.js)
// 如果您使用的是 CLI 服務器 Node.js
// 此示例演示了使用 stdio 格式的 MCP 服務器
// Cursor 會自動為您運行此過程
// 這使用 Node.js 服務器,使用 `npx` 運行
{ "mcpServers" : { "server-name" : { "command" : "npx" , "args" : [ "-y" , "mcp-server" ] , "env" : { "API_KEY" : "value" } } }
}
步驟 5:直接在 Agent 內使用服務器。
在繼續操作之前,請務必檢查Composio MCP 服務器頁面上可用的操作。您還可以在儀表板上找到工具和操作。
您可以使用命令打開聊天Ctrl + I
。
您可以啟用Agent Mode
Cursor 中最自主的模式,該模式旨在以最少的指導處理復雜的編碼任務。
我更喜歡在執行之前進行一些控制,所以我選擇默認設置。您可以輸入任何查詢。只需點擊run tool
按鈕即可。
如您所見,它將調用適當的 MCP 服務器(如果您有多個),并且它將根據您的提示相應地使用正確的操作。
由于沒有活動連接,它將首先建立一個連接。您需要授權該過程。
我使用的是很久以前創建的虛擬賬戶,建議你也這么做,以便進行測試。一旦你滿意了,就可以用你的主賬戶來自動化操作。
如您所見,它正確獲取了電子郵件。
讓我們通過發送一封``主題為“Composio 演示”的電子郵件進行檢查,并在電子郵件正文中說明測試 MCP 服務器。
正如您所看到的,我收到了具有提示中指定的正確主題和正文的電子郵件。
發送電子郵件
收到電子郵件
使用此 MCP服務器,您可以做很多令人驚奇的事情,例如Get attachments
、、、、、、、等等。Create email draft``Modify thread labels``Reply to a thread``get contacts``delete message``move to trash``search people``send email
永遠記住,你的能力是有限的。我已經測試了超過 15 個提示,以分析極端情況。
8.MCP的一些局限性
MCP 的期望和現實可能大相徑庭。當你仔細閱讀這些要點時,你就會明白我的意思。
別誤會我的意思,MCP 非常有前景,但您應該注意以下一些限制:
? 并非所有 AI 平臺都支持 MCP
Claude(尤其是其桌面應用程序)以及 Cursor 或 Windsurf 等工具直接支持 MCP。但如果您使用的是 ChatGPT 或本地 LLaMA 模型之類的工具,它可能無法開箱即用。
有一些開源工具試圖解決這個問題,但在 MCP 得到更廣泛的采用之前,所有 AI 助手的支持都很困難。
? Agent自主權并不完美
MCP賦予了能力,但是AI的判斷還不夠完善。
例如,工具的使用取決于模型對工具描述和使用情境的理解程度。它通常需要及時調整或代理端邏輯來提高可靠性。
? 性能開銷
通過 MCP 使用工具會增加開銷。每次調用都是外部的,速度可能比 AI 自行回答慢得多。例如,通過 MCP 工具從網頁抓取數據可能需要幾秒鐘,而模型只需幾毫秒就能從訓練數據中猜出答案。
現在,如果您正在協調多個工具,延遲就會累積起來,就像按順序調用 5 個不同的 MCP 服務器來執行以下操作:
- 從 Google Drive 獲取文件
- 使用 LLM 工具總結內容
- 翻譯摘要
- 根據翻譯生成推文
- 使用 Buffer 等社交媒體工具進行安排
該鏈可能需要 10 到 15 秒,具體取決于服務器響應時間。
一些代理可以處理并行工具的使用,因此您可以進一步優化流程。
? 信任問題
讓人工智能執行實際操作可能會有風險。即使人工智能通常能正確執行,用戶也常常希望在事情發生之前進行審查。
目前,大多數工具要么完全自主,要么完全不自主。很少有中間地帶,讓人工智能既能利用自主性,又能在關鍵時刻將控制權交給用戶。我們都需要一個human in the loop
……
? 糟糕的方法:AI 未經詢問就立即發送電子郵件。
? 更好的方法:AI 會說,I'm about to email X with this message, is it okay to send?
并且只有在您批準后才會采取行動。
? 可擴展性問題
當今大多數 MCP 服務器都是為單個用戶構建的,通常只是在開發人員的筆記本電腦上運行。
單個 MCP 服務器服務多個獨立代理或用戶的情況目前尚未得到深入探索。為此,公司需要處理更復雜的問題,例如并發請求、分離數據上下文以及強制使用速率限制。
這個領域的生態系統仍有發展空間,尤其是 MCP 網關或企業級 MCP 服務器框架等理念。
? 安全標準
MCP 沒有內置身份驗證或授權。
Authentication & Authorization
:MCP 本身不支持用戶或代理的身份驗證。如果您將 MCP 服務器暴露在網絡上,則必須自行添加安全措施。
一些實現使用 OAuth 2.1 來添加權限范圍(read-only or write-only access
),但目前沒有標準方法,因此每個服務器處理身份驗證的方式都不同。
Correct Permissions
:理想情況下,代理應該只使用他們需要的工具。但是,如果有多個強大的工具可用(例如瀏覽器訪問和終端),除非您手動禁用,否則沒有什么可以阻止AI使用錯誤的工具。
Prompt Injection
:如果人工智能誤解了提示,它可能會犯錯。更糟糕的是,有人可能會編寫惡意提示,誘騙人工智能執行有害操作(prompt injection
)。安全措施取決于每個 MCP 服務器的構建方式。
如果您想了解如何減輕 MCP 實施中的安全風險,請閱讀以下內容:
- 了解并減輕Microsoft MCP 實施中的安全風險。
- Pillar 的MCP 安全風險。
MCP 仍然很新。隨著需求的發現,我們將進一步開發以解決更多邊緣情況。
在AI模型方面,我們可能會看到針對工具使用和MCP進行微調的模型。Anthropic已經提到了未來AI models optimized for MCP interaction
。
如果您計劃構建 MCP,這里有一些不錯的資源:
- mcp-chat — 是一款適用于 MCP 服務器的 CLI 聊天客戶端。用于測試和評估 MCP 服務器和代理
- mastra registry — MCP 服務器目錄的集合,用于將 AI 連接到您最喜歡的工具。
- smithery.ai — 通過 MCP 服務器為您的代理擴展 4,630種功能。詳細信息包括
monthly tool calls
:local option``tools``API``installation instructions for different clients
- 官方團隊提供的熱門 MCP 服務器目錄— GitHub 上 2 萬顆星。
- 1800+ MCP 服務器的光標目錄。
- 這些 MCP 完全是 我的 Cursor 工作流程的 10 倍——帶有實際用例的 YouTube 視頻。
MCP 仍在不斷發展,但其核心理念始終保持不變,我已盡力解釋其概念。希望您能從中找到一些有用的信息。
與代理的一次對話可以幫助您自動化復雜的工作流程。