基本概念
現在大模型交互的熱門形式:
-
第一、Agent與Tools(工具)的交互Agent需要調用外部工具和APl、訪問數據庫、執行代碼等。=> MCP
-
第二、Agent與Agent(其他智能體或用戶)的交互Agent需要理解其他Agent的意圖、協同完成任務、與用戶進行自然的對話。 => A2A
MCP(Model Context Protocol,模型上下文協議) ,2024年11月底,由 Anthropic 推出的一種開放標準。旨在為大語言模型(LLM)提供統一的、 標準化方式與外部數據源和工具之間進行通信。
官方文檔:https://modelcontextprotocol.io/introduction
MCP 查詢:
github查看:
- MCP官方資源:https://github.com/modelcontextprotocol/servers
- MCP熱門資源:https://github.com/punkpeye/awesome-mcp-servers
其它平臺:
- Glama:https://glama.ai/mcp/servers
- Smithery:https://smithery.ai
- cursor:https://cursor.directory
- MCP.so:https://mcp.so/zh
- 阿里云百煉:https://bailian.console.aliyun.com/?tab=mcp#/mcp-market
MCP兩種通信機制(傳輸方式):
- stdio(標準輸入輸出):主要用在本地服務上,操作你本地的軟件或者本地的文 件。比如 Blender 這種就只能用 Stdio 因為他沒有在線服務。=> MCP默認通信方式
- SSE(Server-Sent Events):主要用在遠程通信服務上,這個服務本身就有在線 的 API,比如訪問你的谷歌郵件,天氣情況等。
stdio方式:
- 優點
- 這種方式適用于客戶端和服務器在同一臺機器上運行的場景,簡單。
- stdio模式無需外部網絡依賴,通信速度快,適合快速響應的本地應用。
- 可靠性高,且易于調試
- 缺點
- Stdio 的配置比較復雜,我們需要做些準備工作,你需要提前安裝需要的命令行工具。
- stdio模式為單進程通信,無法并行處理多個客戶端請求,同時由于進程資源開銷較大,不適合 在本地運行大量服務。(限制了其在更復雜分布式場景中的使用)
SSE方式:
-
場景
- SSE方式適用于客戶端和服務器位于不同物理位置的場景。
- 適用于實時數據更新、消息推送、輕量級監控和實時日志流等場景
- 對于分布式或遠程部署的場景,基于 HTTP 和 SSE 的傳輸方式則更為合適。
-
優點 :配置方式非常簡單,基本上就一個鏈接就行,直接復制他的鏈接填上就行
快速使用-以cursor為例
stdio的本地環境安裝 stdio的本地環境有兩種: 一種是Python 編寫的服務, 一種用TypeScript 編寫的服務。 分別對應著uvx 和 npx 兩種指令。
在 Cursor 中添加 MCP Server 有兩種配置方式:
- 全局設置:通過 Cursor Settings -> MCP -> Add new global MCP server 添加全局可用的 MCP 服務。
- 項目級別:在項目目錄的 .cursor 目錄中新建 mcp.json 文 件進行配置,僅對特定項目生效。
首先需要選擇MCP SERVER 平臺,比如我們可以在 https://smithery.ai/ 下搜索 mysql 來使用 數據庫服務。選擇一個使用量大的一般沒問題,然后可以使用自動導入 mcp 和手動導入 json 來鏈接 mcp 。
自動導入直接 auto 里面選擇 cursor ,填好對應的信息就自動導入了。
手動導入需要填好 json 信息,然后生成 json 文件內容,復制到項目跟目錄下的 .cursor/mcp.json 文件中。
然后查看 cursor 中的 mcp 服務是否開啟,開啟后前方會出現綠色小點。(紅色是錯誤,黃色是進行中,綠色是連接成功)
如果這樣一直報錯,可能的原因是 mcp 服務本身有問題,還有就是可能引入方法不對,可以進入對應的 github 查看下其他的的引入方法。
然后其他同樣的道理,還可以引入比如高德地圖服務、文件系統(filesystem )服務(操作文件)等等。
然后可以通過 agent 來測試下 mcp 是否生效:
現在交給你一個任務,編寫一個北京一日游的出行攻略
1、從高德地圖的MCP服務中獲取北京站到天安門、天安門到頤和園、頤和園到南鑼鼓巷
的地鐵線路,并保存在數據庫beijing_trip的表subway_trips中
2、從高德地圖的MCP中獲取頤和園、南鑼鼓巷附件的美食信息,每處獲取三家美食店鋪
信息,并將相應的信息存入表location_foods中
3、在工作目錄D:\MCPWorkSpace下創建一個新的文件夾,命名為“北京旅行”在其中創
建兩個txt,分別從數據庫中將兩個表的內容提取出存放進去。
4、最后根據txt中的內容,生成一個精美的html前端展示頁面,并存放在該目錄下
其他平臺使用
其他比較熱門的平臺比如 vscode 插件 cline 使用方法都是大同小異。
插件右上角設置中配置:
設置中有兩種模式:一種是 plan mode (需求規劃,任務執行的順序),一種是 act mode (直接執行任務)。
之后正常調用 mcp 即可。
MCP 工作原理
MCP 遵循客戶端-服務器架構(client-server),其中包含以下幾個核心概念:
- MCP 主機(MCP Hosts)
- MCP 客戶端( MCP Clients )
- MCP 服務器( MCP Servers )
- 本地資源( Local Resources )
- 遠程資源( Remote Resources )
-
mcp host 作為運行 MCP 的主應用程序,例如 Claude Desktop、Cursor、Cline 或 AI 工具。 為用戶提供與LLM交互的接口,同時集成 MCP Client 以連接 MCP Server。
-
MCP client 充當 LLM 和 MCP server 之間的橋梁,嵌入在主機程序中,主要負責: ? 接收來自LLM的請求; ? 將請求轉發到相應的 MCP server ? 將 MCP server 的結果返回給 LLM
MCP 官網(https://modelcontextprotocol.io/clients) 列出來一些支持 MCP 的 Clients。 分為兩類: ? AI編程IDE:Cursor、Cline、Continue、Sourcegraph、Windsurf 等 ? 聊天客戶端:Cherry Studio、Claude、Librechat、Chatwise等。更多的Client參考這里: MCP Clients:https://www.pulsemcp.com/clients Awesome MCP Clients:https://github.com/punkpeye/awesome-mcp-clients/
- MCP Server 每個 MCP 服務器都提供了一組特定的工具,負責從本地數據或遠程服務中檢索信息。 是 MCP 架構中的關鍵組件。與傳統的遠程 API 服務器不同,MCP 服務器既可以作為本地應用程序(stdio)在用戶設備上運 行,也可部署至遠程服務器(sse)。本質是運行在電腦上的一個nodejs或python程序。可以理解為客戶端用命令行調用了 電腦上的nodejs或python程序。
API 主要有兩個: 1、 tools/list:列出 Server 支持的所有工具 2、 tools/call:Client 請求 Server 去執行某個工具, 并將結果返回
在MCP的概念中,Cursor屬于一個MCP的宿主應用(Host-app),而Cursor之所以 能使用MCP服務,是因為它內置安裝了MCP Client。
我們目前在配置Cursor中的MCP時,本質是在配置MCP Server,這些Server是由 不同的開發者提供的,他們基于標準化的MCP協議,做了個小的服務,這些服 務可能在本地也可能在云端,而我們實際上也完全可以按自己的需要去制作 MCP Server。