那么多的MCP server,如何構建自己的MCP client?
原創現在,每個人都癡迷于大模型的能力,從GPT-5的謠言, 到Claude 3 性能, 以及Gemini的多模態演示。但事實是,模型并不是人工智能的全部,但Agent可能是。Agent的定義可能不是它們知道什么,而是由它們能做什么來定義。
要在這個世界上行動,Agent需要工具。為了明智地使用工具,它需要結構。為了在模型、團隊、設備和領域之間擴展這個結構,它需要一個協議。那就是 MCP(Model Context Protocol) 。
MCP發展迅猛,MCP server 如雨后春筍。那么多的MCP server,如何構建一個自己的MCP client呢?
MCP-Use是一個看似簡單的 Python 庫,它使用開放的MCP將任何 LLM 連接到任何外部工具。本文嘗試探討 MCP-Use 的工作原理、解決的問題以及如何構建能夠思考和行動的Agent,并給出了一些真實的例子。如果想要賦予LLM 與真實世界的交互能力,MCP-Use或許是一種靈活的方法。
1.MCP-Use解決的問題
現在每一個主要的 LLM API(OpenAI、 Anthropic、 DeepSeek等)都為我們提供了精彩的文本生成。但是,根據這些知識采取行動仍然是有限的。我們經常被困在構建定制的集成、與 api 作斗爭或依賴于特定于供應商的平臺,如 ChatGPT 插件、 Cursor IDE 或 Claude Desktop。這就是模型上下文協議 (MCP) 的用武之地。
受語言服務器協議 (Language Server Protocol,LSP) 的啟發,MCP 旨在讓 LLM 以標準化的、有狀態的方式發現和調用外部工具。工具通過服務器公開,每個服務器聲明它可以做什么 (函數、參數、返回類型)。它是開放的、與模型無關的、可擴展的,一個用于AI工具的羅賽塔石碑(有幸今年在大英博物館看到了它)。
但 MCP 本身只是一個協議。要使用它,需要一種將模型連接到工具服務器的方法。這正是 MCP-Use 所做的,可能需要 6 行 Python 代碼就能用工具啟動一個功能齊全的 AI Agent。
2.MCP-Use 的作用
MCP-Use 是一個用作 MCP 客戶端的 Python 庫,它將任何 LLM(通過 LangChain)連接到各種 MCP 服務器(如瀏覽器、文件系統、API、3D 渲染器等),使 Agent 能夠智能地動態使用這些工具。具體來說,MCP-Use 首先從服務器中發現可用的工具,并將其轉換為 LLM 可調用的函數。然后,它通過 HTTP 或本地 I/O 處理所有 JSON-RPC 消息傳遞,確保高效的數據交換。
此外,MCP-Use 還管理會話、工具調用、響應和內存,提供了一個干凈的抽象層,使得開發者無需擔心底層協議的具體實現細節,從而能夠專注于構建優秀的 Agent。這一抽象不僅簡化了開發流程,還提高了代碼的可維護性和靈活性。
MCP-Use 的核心理念可以概括為:Agent + Tools + Any LLM。這是一種輕量級的開源方法,允許開發者構建能夠使用工具的 Agent,而不會被鎖定在單一平臺或插件生態系統中。通過 MCP-Use,開發者可以在不同的環境和工具之間自由切換,充分利用各種資源,同時保持系統的高度靈活性和擴展性。
3. MCP-Use 的架構
MCP-Use 位于AI系統的中間,解釋工具模式、路由調用,并允許模型使用諸如本機功能之類的工具。
+----------------+ +----------------+ +------------------+
| Any LLM | <--> | MCP-Agent | <--> | MCP Servers |
| (Claude, GPT) | | (MCP-Use lib) | | (Browser, APIs) |
+----------------+ +----------------+ +------------------+MCP-Use 是一個圍繞兩個關鍵組件構建的模塊化架構: MCPClient 和 MCPAgent。一個管理工具連接,另一個管理Agent智能。二者一起讓LLM 驅動的Agent查找、調用和協調工具,所有這些都通過MCP完成。
3.1 MCPClient: 通往工具的橋梁
MCPClient是與外部世界的連接器。當在 JSON 配置中定義工具時 (例如瀏覽器,文件服務器,API 包裝器) ,MCPClient啟動 MCP 服務器 (本地通過 CLI ,或通過 HTTP/SSE 遠程連接),讀取這些服務器公開的工具定義 (例如,search_web、read_file、render_scene),維護與每個服務器的活動會話,處理消息傳遞 (JSON-RPC 2.0)、錯誤處理、重試和超時。
基本上,MCPClient 確保每個工具都是可用的、可理解的和可調用的,無論它在哪里運行。
3.2 MCPAgent: 思考層
MCPAgent 位于所選擇的 LLM 和工具之間,它將每個工具轉換為 LLM 可以 “看到” 和使用的函數 (就像 OpenAI 的函數調用),維護會話內存 (可選) ,跟蹤 LLM 所說的和所做的,處理決策循環。
LLM 被問到一個問題,MCPAgent 會思考應該調用一個工具 ,例如search_web(query="MCP-Use Python")。MCPAgent 通過 MCPClient 運行該工具,并將結果返回給 LLM。循環繼續,直到生成最終答案。MCP-Use 包裝了所有這些代碼。只需要傳入模型和配置,然后調用 agent.run (“your query”)。
完整流程如下:
[Your Prompt] ─? MCPAgent
├── Memory & Prompt Engineering
├── Function Calling Interface
▼
[LLM thinks...]
├── Chooses a tool
▼
Calls MCPClient.run_tool()
├── Sends JSON-RPC request
▼
MCP Server Executes Tool (e.g. browser)
└── Returns result to MCPClient
↓
MCPAgent feeds result back to LLM
↓
LLM finishes task → Final response returnedMCPClient處理連接性和功能發現,MCPAgent處理 LLM 智能和工具使用編排。我們可以一次連接多個 MCP 服務器,Agent將根據需要智能地處理它們。
4. MCP-Use應用入門
假設構建一個基于 LLM 的助手,它可以瀏覽 web 或與本地文件交互,而無需編寫大量的樣板文件或安裝龐大的框架。對于 MCP-Use而言,這只需要 6 行 Python 代碼。
4.1 環境準備
確保使用的是 Python 3.11 + 。 安裝MCP-Use和 LLM 工匠 ,這里使用 OpenAI) :
pip install mcp-use langchain-openai如果計劃運行諸如瀏覽器自動化之類的工具,那么還需要 Node.js (用于通過 npx 啟動@playwright/mcp 工具)。
4.2 創建工具配置文件
將其保存為 mcp-config.json:
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}這定義了一個 MCP 服務器,一個使用 Playwright 的瀏覽器工具。
4.3 添加 API 密鑰
在同一個文件夾中創建.env 文件:
OPENAI_API_KEY=your_openai_key_here然后,在 Python 中使用 dotenv 加載它:
pip install python-dotenv4.4 編寫Agent (僅6 行代理)
from dotenv import load_dotenv
from mcp_use import MCPAgent, MCPClient
from langchain_openai import ChatOpenAI
load_dotenv()
client = MCPClient.from_config_file("mcp-config.json")
agent = MCPAgent(LLM=ChatOpenAI(model="gpt-4"), client=client)
print(await agent.run("Search for best sushi places in Tokyo"))運行此腳本時,它啟動瀏覽器 MCP 服務器,LLM 選擇調用 search_web 或 click_link等,調用該工具并返回結果,我們將得到最終的答復。LLM 決定調用什么工具并動態地使用它。
5. 使用 mcp 的生態系統
MCP-Use 并不僅僅是一個對某個模型或框架的簡單封裝工具,它通過 MCP 協議的強大能力,在 LLM 與各類外部工具之間構建起一個真正開放的接口。這意味著你將擁有前所未有的自由度,可以根據需求靈活構建和擴展應用。
借助 MCP-Use,任何支持函數調用的基于對話的 LLM 都可以輕松集成。這涵蓋了當前絕大多數前沿的主流大模型。以下是一些兼容模型的部分示例列表:
Supported Models | Provider | Notes
GPT-4 / GPT-3.5 Turbo | OpenAI | Best-in-class reasoning
Claude v2 / v3 | Anthropic | Very strong tool usage
LLaMA 3 (via Ollama) | Meta (local) | Needs LangChain wrapper
Mistral / Mixtral | Mistral (local) | Great speed, open weights
Command R / R+ | Cohere | High-quality open access
Gemini | Google | Tool use support varies
Groq (running LLaMA 3) | Groq | Lightning fast inference這些大模型都支持 function call(函數調用) 功能,當需要調用外部工具時,它們會輸出結構化的 JSON 數據,而不是普通的文本。這正是使用 MCP 所需的全部能力。
MCP-Use 利用 LangChain 的聊天模型接口,將不同模型統一接入,使得在不重寫業務邏輯的前提下,即可輕松切換模型提供商。同時,MCP-Use 可以連接到任何將自身暴露為 MCP 服務器的工具——社區已經開發出許多功能強大的 MCP 工具,進一步拓展了其應用邊界。
MCP-Use 會自動讀取可用的 MCP 服務器列表,并將其以自然的方式呈現給模型。Agent 可以像調用本地函數一樣使用這些工具,而無需編寫任何額外代碼,極大地提升了開發效率與工具復用性。
6. 應用示例
在 MCP-Use 架構中,模型與工具是完全解耦的,這意味著你可以根據需要自由組合不同的模型和工具,打造靈活、可擴展的 Agent 系統。
6.1 使用 Claude 3 啟動瀏覽器并執行文件訪問
只需配置一個 JSON 文件,即可輕松連接多個 MCP 工具服務器。例如:
{
"mcpServers":{
"web":{
"command":"npx",
"args":["@playwright/mcp"]
},
"fs":{
"command":"npx",
"args":["@modelcontextprotocol/server-filesystem","/sandbox"]
}
}
}隨后,在 Python 中初始化一個支持這些工具的 Agent 非常簡單:
from langchain.chat_models import ChatAnthropic
client =await MCPClient.from_config_file("tools.json")
agent = MCPAgent(LLM=ChatAnthropic(), client=client)
await agent.run("Search for news about AI startups and save the headlines")這段代碼將啟動一個基于 Claude 的 Agent,并讓它通過 MCP 協議調用瀏覽器和文件系統工具完成任務。
6.2 使用本地 LLaMA 及 API 封裝工具
假設你正在使用運行在 Ollama 上的本地 LLaMA 3 模型,并希望接入一個封裝了內部 CRM API 的 Python MCP 服務器。借助 MCP-Use,你可以在這兩個本地服務之間無縫協作,即使在沒有互聯網連接的情況下,也能完整運行 Agent 邏輯。
這體現了 MCP-Use 的一大優勢:工具的使用與模型無關。你不僅可以在本地部署工具,也可以通過 HTTP 或 WebSocket 連接到遠程 MCP 服務器,從而實現更多高級架構設計:
- 在云端托管長期運行的工具(如持續爬取數據的服務器)
- 拆分計算負載:本地運行模型,遠程調用工具
- 構建多用戶系統,共享對集中式工具的訪問權限
你只需更改配置文件即可切換到遠程服務:
{
"mcpServers":{
"scraper":{
"url":"https://tools.example.com/mcp/sse"
}
}
}MCP-Use 會自動處理底層連接類型,只要該服務實現了 MCP 協議,Agent 就可以透明地使用它。
6.3 動態禁用特定工具
為了提升安全性,你可以在運行時或配置中動態禁用某些工具,防止意外誤用。例如,你可以禁止執行 shell 命令,僅允許讀取文件而不允許寫入,從而構建一個只讀的安全沙箱環境。
在創建 Agent 時,只需傳入一個不允許使用的工具列表即可:
agent = MCPAgent(..., disallowed_tools=["shell","delete_file"])這種機制讓你能夠根據不同場景靈活控制 Agent 的行為邊界,確保其在受控環境中安全運行。
通過以上方式,MCP-Use 提供了一種強大而靈活的方式來集成模型與工具,幫助開發者構建真正開放、可擴展、安全可控的智能 Agent 系統。
7.MCP-USE 與其他開發框架的對比
當前的人工智能工具生態系統,如LangChain、OpenAI插件、HuggingFace Agents等,雖然在擴展語言模型(LLM)的能力方面取得了顯著進展,但普遍存在工具使用碎片化的問題。每個模型和框架都有其獨特的工具處理方式,導致重復開發和平臺鎖定問題。
MCP-USE作為一種新興的解決方案,通過外部化工具定義,實現了與代碼解耦,支持任何LLM(包括Claude、GPT、LLaMA等),并且不受限于特定的API規范或托管要求。此外,MCP-USE允許工具維護狀態,并提供了比OpenAPI更簡單通用的協議。相比其他框架,MCP-USE不僅提高了工具的可重用性和靈活性,還支持實時結構化工具調用,使得多個Agent可以共享同一工具,無需重復編寫代碼。
MCP-USE 與其他框架的對比如下:
特性/框架 | MCP-USE | LangChain | OpenAI 插件 | AutoGPT/CrewAI/BabyAGI |
工具解耦 | 是,工具與代碼分離 | 否,工具與邏輯緊密耦合 | 否,依賴于OpenAPI | 否,通常為Python代碼 |
支持的LLM | 多種(Claude, GPT, LLAMA等) | 主要支持與其集成的模型 | 僅限GPT系列 | 取決于框架實現 |
API標準 | 簡單通用協議 | 自定義包裝器 | OpenAPI 3.0 | 自定義腳本 |
工具狀態管理 | 支持 | 不直接支持 | 不支持 | 不支持 |
跨平臺兼容性 | 高度兼容 | 依賴于具體實現 | 僅限OpenAI平臺 | 有限 |
工具復用性 | 高,可跨不同Agent共享 | 較低,需重新定義 | 低,受限于平臺 | 低,需自定義 |
實時調用能力 | 支持 | 需調試ReAct循環 | 支持 | 通常不支持 |
此表格展示了MCP-USE相對于LangChain、OpenAI插件以及AutoGPT/CrewAI/BabyAGI等框架的主要優勢,特別是在工具解耦、支持多種LLM、簡單的API標準以及工具狀態管理和跨平臺兼容性等方面。
8. 小結
如果說 OpenAI 插件像是瀏覽器中的擴展程序——在特定環境中實用但受限,那么 MCP 就像是開放的 Web 本身,帶來了無限的連接與組合可能。插件雖有價值,卻難以擺脫平臺鎖定和接口限制,而 MCP 所代表的,是一種真正去中心化、跨平臺、可互操作的工具使用協議。
MCP-Use 可能是打開這扇大門的鑰匙。它不是一個將我們困于某一個生態的封閉框架,而是一個讓開發者自由構建、連接和擴展的開放平臺。它與大模型解耦,也不依賴特定平臺,只是賦予 LLM 真正“使用工具”的能力。
未來,我們或許會看到一個由 MCP 驅動的新生態:在這里,任何模型都可以安全、智能地調用任何工具,開發者無需重復造輪子,Agent 之間可以共享能力,形成一個真正互聯互通的智能系統。






























