那么多的MCP server,如何構(gòu)建自己的MCP client?
原創(chuàng)現(xiàn)在,每個人都癡迷于大模型的能力,從GPT-5的謠言, 到Claude 3 性能, 以及Gemini的多模態(tài)演示。但事實是,模型并不是人工智能的全部,但Agent可能是。Agent的定義可能不是它們知道什么,而是由它們能做什么來定義。
要在這個世界上行動,Agent需要工具。為了明智地使用工具,它需要結(jié)構(gòu)。為了在模型、團(tuán)隊、設(shè)備和領(lǐng)域之間擴(kuò)展這個結(jié)構(gòu),它需要一個協(xié)議。那就是 MCP(Model Context Protocol) 。
MCP發(fā)展迅猛,MCP server 如雨后春筍。那么多的MCP server,如何構(gòu)建一個自己的MCP client呢?
MCP-Use是一個看似簡單的 Python 庫,它使用開放的MCP將任何 LLM 連接到任何外部工具。本文嘗試探討 MCP-Use 的工作原理、解決的問題以及如何構(gòu)建能夠思考和行動的Agent,并給出了一些真實的例子。如果想要賦予LLM 與真實世界的交互能力,MCP-Use或許是一種靈活的方法。
1.MCP-Use解決的問題
現(xiàn)在每一個主要的 LLM API(OpenAI、 Anthropic、 DeepSeek等)都為我們提供了精彩的文本生成。但是,根據(jù)這些知識采取行動仍然是有限的。我們經(jīng)常被困在構(gòu)建定制的集成、與 api 作斗爭或依賴于特定于供應(yīng)商的平臺,如 ChatGPT 插件、 Cursor IDE 或 Claude Desktop。這就是模型上下文協(xié)議 (MCP) 的用武之地。
受語言服務(wù)器協(xié)議 (Language Server Protocol,LSP) 的啟發(fā),MCP 旨在讓 LLM 以標(biāo)準(zhǔn)化的、有狀態(tài)的方式發(fā)現(xiàn)和調(diào)用外部工具。工具通過服務(wù)器公開,每個服務(wù)器聲明它可以做什么 (函數(shù)、參數(shù)、返回類型)。它是開放的、與模型無關(guān)的、可擴(kuò)展的,一個用于AI工具的羅賽塔石碑(有幸今年在大英博物館看到了它)。
但 MCP 本身只是一個協(xié)議。要使用它,需要一種將模型連接到工具服務(wù)器的方法。這正是 MCP-Use 所做的,可能需要 6 行 Python 代碼就能用工具啟動一個功能齊全的 AI Agent。
2.MCP-Use 的作用
MCP-Use 是一個用作 MCP 客戶端的 Python 庫,它將任何 LLM(通過 LangChain)連接到各種 MCP 服務(wù)器(如瀏覽器、文件系統(tǒng)、API、3D 渲染器等),使 Agent 能夠智能地動態(tài)使用這些工具。具體來說,MCP-Use 首先從服務(wù)器中發(fā)現(xiàn)可用的工具,并將其轉(zhuǎn)換為 LLM 可調(diào)用的函數(shù)。然后,它通過 HTTP 或本地 I/O 處理所有 JSON-RPC 消息傳遞,確保高效的數(shù)據(jù)交換。
此外,MCP-Use 還管理會話、工具調(diào)用、響應(yīng)和內(nèi)存,提供了一個干凈的抽象層,使得開發(fā)者無需擔(dān)心底層協(xié)議的具體實現(xiàn)細(xì)節(jié),從而能夠?qū)W⒂跇?gòu)建優(yōu)秀的 Agent。這一抽象不僅簡化了開發(fā)流程,還提高了代碼的可維護(hù)性和靈活性。
MCP-Use 的核心理念可以概括為:Agent + Tools + Any LLM。這是一種輕量級的開源方法,允許開發(fā)者構(gòu)建能夠使用工具的 Agent,而不會被鎖定在單一平臺或插件生態(tài)系統(tǒng)中。通過 MCP-Use,開發(fā)者可以在不同的環(huán)境和工具之間自由切換,充分利用各種資源,同時保持系統(tǒng)的高度靈活性和擴(kuò)展性。
3. MCP-Use 的架構(gòu)
MCP-Use 位于AI系統(tǒng)的中間,解釋工具模式、路由調(diào)用,并允許模型使用諸如本機(jī)功能之類的工具。
+----------------+ +----------------+ +------------------+
| Any LLM | <--> | MCP-Agent | <--> | MCP Servers |
| (Claude, GPT) | | (MCP-Use lib) | | (Browser, APIs) |
+----------------+ +----------------+ +------------------+MCP-Use 是一個圍繞兩個關(guān)鍵組件構(gòu)建的模塊化架構(gòu): MCPClient 和 MCPAgent。一個管理工具連接,另一個管理Agent智能。二者一起讓LLM 驅(qū)動的Agent查找、調(diào)用和協(xié)調(diào)工具,所有這些都通過MCP完成。
3.1 MCPClient: 通往工具的橋梁
MCPClient是與外部世界的連接器。當(dāng)在 JSON 配置中定義工具時 (例如瀏覽器,文件服務(wù)器,API 包裝器) ,MCPClient啟動 MCP 服務(wù)器 (本地通過 CLI ,或通過 HTTP/SSE 遠(yuǎn)程連接),讀取這些服務(wù)器公開的工具定義 (例如,search_web、read_file、render_scene),維護(hù)與每個服務(wù)器的活動會話,處理消息傳遞 (JSON-RPC 2.0)、錯誤處理、重試和超時。
基本上,MCPClient 確保每個工具都是可用的、可理解的和可調(diào)用的,無論它在哪里運行。
3.2 MCPAgent: 思考層
MCPAgent 位于所選擇的 LLM 和工具之間,它將每個工具轉(zhuǎn)換為 LLM 可以 “看到” 和使用的函數(shù) (就像 OpenAI 的函數(shù)調(diào)用),維護(hù)會話內(nèi)存 (可選) ,跟蹤 LLM 所說的和所做的,處理決策循環(huán)。
LLM 被問到一個問題,MCPAgent 會思考應(yīng)該調(diào)用一個工具 ,例如search_web(query="MCP-Use Python")。MCPAgent 通過 MCPClient 運行該工具,并將結(jié)果返回給 LLM。循環(huán)繼續(xù),直到生成最終答案。MCP-Use 包裝了所有這些代碼。只需要傳入模型和配置,然后調(diào)用 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處理連接性和功能發(fā)現(xiàn),MCPAgent處理 LLM 智能和工具使用編排。我們可以一次連接多個 MCP 服務(wù)器,Agent將根據(jù)需要智能地處理它們。
4. MCP-Use應(yīng)用入門
假設(shè)構(gòu)建一個基于 LLM 的助手,它可以瀏覽 web 或與本地文件交互,而無需編寫大量的樣板文件或安裝龐大的框架。對于 MCP-Use而言,這只需要 6 行 Python 代碼。
4.1 環(huán)境準(zhǔn)備
確保使用的是 Python 3.11 + 。 安裝MCP-Use和 LLM 工匠 ,這里使用 OpenAI) :
pip install mcp-use langchain-openai如果計劃運行諸如瀏覽器自動化之類的工具,那么還需要 Node.js (用于通過 npx 啟動@playwright/mcp 工具)。
4.2 創(chuàng)建工具配置文件
將其保存為 mcp-config.json:
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}這定義了一個 MCP 服務(wù)器,一個使用 Playwright 的瀏覽器工具。
4.3 添加 API 密鑰
在同一個文件夾中創(chuàng)建.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 服務(wù)器,LLM 選擇調(diào)用 search_web 或 click_link等,調(diào)用該工具并返回結(jié)果,我們將得到最終的答復(fù)。LLM 決定調(diào)用什么工具并動態(tài)地使用它。
5. 使用 mcp 的生態(tài)系統(tǒng)
MCP-Use 并不僅僅是一個對某個模型或框架的簡單封裝工具,它通過 MCP 協(xié)議的強(qiáng)大能力,在 LLM 與各類外部工具之間構(gòu)建起一個真正開放的接口。這意味著你將擁有前所未有的自由度,可以根據(jù)需求靈活構(gòu)建和擴(kuò)展應(yīng)用。
借助 MCP-Use,任何支持函數(shù)調(diào)用的基于對話的 LLM 都可以輕松集成。這涵蓋了當(dāng)前絕大多數(shù)前沿的主流大模型。以下是一些兼容模型的部分示例列表:
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(函數(shù)調(diào)用) 功能,當(dāng)需要調(diào)用外部工具時,它們會輸出結(jié)構(gòu)化的 JSON 數(shù)據(jù),而不是普通的文本。這正是使用 MCP 所需的全部能力。
MCP-Use 利用 LangChain 的聊天模型接口,將不同模型統(tǒng)一接入,使得在不重寫業(yè)務(wù)邏輯的前提下,即可輕松切換模型提供商。同時,MCP-Use 可以連接到任何將自身暴露為 MCP 服務(wù)器的工具——社區(qū)已經(jīng)開發(fā)出許多功能強(qiáng)大的 MCP 工具,進(jìn)一步拓展了其應(yīng)用邊界。
MCP-Use 會自動讀取可用的 MCP 服務(wù)器列表,并將其以自然的方式呈現(xiàn)給模型。Agent 可以像調(diào)用本地函數(shù)一樣使用這些工具,而無需編寫任何額外代碼,極大地提升了開發(fā)效率與工具復(fù)用性。
6. 應(yīng)用示例
在 MCP-Use 架構(gòu)中,模型與工具是完全解耦的,這意味著你可以根據(jù)需要自由組合不同的模型和工具,打造靈活、可擴(kuò)展的 Agent 系統(tǒng)。
6.1 使用 Claude 3 啟動瀏覽器并執(zhí)行文件訪問
只需配置一個 JSON 文件,即可輕松連接多個 MCP 工具服務(wù)器。例如:
{
"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 協(xié)議調(diào)用瀏覽器和文件系統(tǒng)工具完成任務(wù)。
6.2 使用本地 LLaMA 及 API 封裝工具
假設(shè)你正在使用運行在 Ollama 上的本地 LLaMA 3 模型,并希望接入一個封裝了內(nèi)部 CRM API 的 Python MCP 服務(wù)器。借助 MCP-Use,你可以在這兩個本地服務(wù)之間無縫協(xié)作,即使在沒有互聯(lián)網(wǎng)連接的情況下,也能完整運行 Agent 邏輯。
這體現(xiàn)了 MCP-Use 的一大優(yōu)勢:工具的使用與模型無關(guān)。你不僅可以在本地部署工具,也可以通過 HTTP 或 WebSocket 連接到遠(yuǎn)程 MCP 服務(wù)器,從而實現(xiàn)更多高級架構(gòu)設(shè)計:
- 在云端托管長期運行的工具(如持續(xù)爬取數(shù)據(jù)的服務(wù)器)
- 拆分計算負(fù)載:本地運行模型,遠(yuǎn)程調(diào)用工具
- 構(gòu)建多用戶系統(tǒng),共享對集中式工具的訪問權(quán)限
你只需更改配置文件即可切換到遠(yuǎn)程服務(wù):
{
"mcpServers":{
"scraper":{
"url":"https://tools.example.com/mcp/sse"
}
}
}MCP-Use 會自動處理底層連接類型,只要該服務(wù)實現(xiàn)了 MCP 協(xié)議,Agent 就可以透明地使用它。
6.3 動態(tài)禁用特定工具
為了提升安全性,你可以在運行時或配置中動態(tài)禁用某些工具,防止意外誤用。例如,你可以禁止執(zhí)行 shell 命令,僅允許讀取文件而不允許寫入,從而構(gòu)建一個只讀的安全沙箱環(huán)境。
在創(chuàng)建 Agent 時,只需傳入一個不允許使用的工具列表即可:
agent = MCPAgent(..., disallowed_tools=["shell","delete_file"])這種機(jī)制讓你能夠根據(jù)不同場景靈活控制 Agent 的行為邊界,確保其在受控環(huán)境中安全運行。
通過以上方式,MCP-Use 提供了一種強(qiáng)大而靈活的方式來集成模型與工具,幫助開發(fā)者構(gòu)建真正開放、可擴(kuò)展、安全可控的智能 Agent 系統(tǒng)。
7.MCP-USE 與其他開發(fā)框架的對比
當(dāng)前的人工智能工具生態(tài)系統(tǒng),如LangChain、OpenAI插件、HuggingFace Agents等,雖然在擴(kuò)展語言模型(LLM)的能力方面取得了顯著進(jìn)展,但普遍存在工具使用碎片化的問題。每個模型和框架都有其獨特的工具處理方式,導(dǎo)致重復(fù)開發(fā)和平臺鎖定問題。
MCP-USE作為一種新興的解決方案,通過外部化工具定義,實現(xiàn)了與代碼解耦,支持任何LLM(包括Claude、GPT、LLaMA等),并且不受限于特定的API規(guī)范或托管要求。此外,MCP-USE允許工具維護(hù)狀態(tài),并提供了比OpenAPI更簡單通用的協(xié)議。相比其他框架,MCP-USE不僅提高了工具的可重用性和靈活性,還支持實時結(jié)構(gòu)化工具調(diào)用,使得多個Agent可以共享同一工具,無需重復(fù)編寫代碼。
MCP-USE 與其他框架的對比如下:
特性/框架 | MCP-USE | LangChain | OpenAI 插件 | AutoGPT/CrewAI/BabyAGI |
工具解耦 | 是,工具與代碼分離 | 否,工具與邏輯緊密耦合 | 否,依賴于OpenAPI | 否,通常為Python代碼 |
支持的LLM | 多種(Claude, GPT, LLAMA等) | 主要支持與其集成的模型 | 僅限GPT系列 | 取決于框架實現(xiàn) |
API標(biāo)準(zhǔn) | 簡單通用協(xié)議 | 自定義包裝器 | OpenAPI 3.0 | 自定義腳本 |
工具狀態(tài)管理 | 支持 | 不直接支持 | 不支持 | 不支持 |
跨平臺兼容性 | 高度兼容 | 依賴于具體實現(xiàn) | 僅限OpenAI平臺 | 有限 |
工具復(fù)用性 | 高,可跨不同Agent共享 | 較低,需重新定義 | 低,受限于平臺 | 低,需自定義 |
實時調(diào)用能力 | 支持 | 需調(diào)試ReAct循環(huán) | 支持 | 通常不支持 |
此表格展示了MCP-USE相對于LangChain、OpenAI插件以及AutoGPT/CrewAI/BabyAGI等框架的主要優(yōu)勢,特別是在工具解耦、支持多種LLM、簡單的API標(biāo)準(zhǔn)以及工具狀態(tài)管理和跨平臺兼容性等方面。
8. 小結(jié)
如果說 OpenAI 插件像是瀏覽器中的擴(kuò)展程序——在特定環(huán)境中實用但受限,那么 MCP 就像是開放的 Web 本身,帶來了無限的連接與組合可能。插件雖有價值,卻難以擺脫平臺鎖定和接口限制,而 MCP 所代表的,是一種真正去中心化、跨平臺、可互操作的工具使用協(xié)議。
MCP-Use 可能是打開這扇大門的鑰匙。它不是一個將我們困于某一個生態(tài)的封閉框架,而是一個讓開發(fā)者自由構(gòu)建、連接和擴(kuò)展的開放平臺。它與大模型解耦,也不依賴特定平臺,只是賦予 LLM 真正“使用工具”的能力。
未來,我們或許會看到一個由 MCP 驅(qū)動的新生態(tài):在這里,任何模型都可以安全、智能地調(diào)用任何工具,開發(fā)者無需重復(fù)造輪子,Agent 之間可以共享能力,形成一個真正互聯(lián)互通的智能系統(tǒng)。






























