现在,每个人都痴迷于大模型的能力,从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系统的中间,解释工具模式、路由调用,并允许模型使用诸如本机功能之类的工具。
复制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”)。
完整流程如下:
复制MCPClient处理连接性和功能发现,MCPAgent处理 LLM 智能和工具使用编排。我们可以一次连接多个 MCP 服务器,Agent将根据需要智能地处理它们。
4. MCP-Use应用入门
假设构建一个基于 LLM 的助手,它可以浏览 web 或与本地文件交互,而无需编写大量的样板文件或安装庞大的框架。对于 MCP-Use而言,这只需要 6 行 Python 代码。
4.1 环境准备
确保使用的是 Python 3.11 + 。 安装MCP-Use和 LLM 工匠 ,这里使用 OpenAI) :
复制如果计划运行诸如浏览器自动化之类的工具,那么还需要 Node.js (用于通过 npx 启动@playwright/mcp 工具)。
4.2 创建工具配置文件
将其保存为 mcp-config.json:
复制这定义了一个 MCP 服务器,一个使用 Playwright 的浏览器工具。
4.3 添加 API 密钥
在同一个文件夹中创建.env 文件:
复制然后,在 Python 中使用 dotenv 加载它:
复制4.4 编写Agent (仅6 行代理)
复制运行此脚本时,它启动浏览器 MCP 服务器,LLM 选择调用 search_web 或 click_link等,调用该工具并返回结果,我们将得到最终的答复。LLM 决定调用什么工具并动态地使用它。
5. 使用 mcp 的生态系统
MCP-Use 并不仅仅是一个对某个模型或框架的简单封装工具,它通过 MCP 协议的强大能力,在 LLM 与各类外部工具之间构建起一个真正开放的接口。这意味着你将拥有前所未有的自由度,可以根据需求灵活构建和扩展应用。
借助 MCP-Use,任何支持函数调用的基于对话的 LLM 都可以轻松集成。这涵盖了当前绝大多数前沿的主流大模型。以下是一些兼容模型的部分示例列表:
复制这些大模型都支持 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 工具服务器。例如:
复制随后,在 Python 中初始化一个支持这些工具的 Agent 非常简单:
复制这段代码将启动一个基于 Claude 的 Agent,并让它通过 MCP 协议调用浏览器和文件系统工具完成任务。
6.2 使用本地 LLaMA 及 API 封装工具
假设你正在使用运行在 Ollama 上的本地 LLaMA 3 模型,并希望接入一个封装了内部 CRM API 的 Python MCP 服务器。借助 MCP-Use,你可以在这两个本地服务之间无缝协作,即使在没有互联网连接的情况下,也能完整运行 Agent 逻辑。
这体现了 MCP-Use 的一大优势:工具的使用与模型无关。你不仅可以在本地部署工具,也可以通过 HTTP 或 WebSocket 连接到远程 MCP 服务器,从而实现更多高级架构设计:
- 在云端托管长期运行的工具(如持续爬取数据的服务器)
- 拆分计算负载:本地运行模型,远程调用工具
- 构建多用户系统,共享对集中式工具的访问权限
你只需更改配置文件即可切换到远程服务:
复制MCP-Use 会自动处理底层连接类型,只要该服务实现了 MCP 协议,Agent 就可以透明地使用它。
6.3 动态禁用特定工具
为了提升安全性,你可以在运行时或配置中动态禁用某些工具,防止意外误用。例如,你可以禁止执行 shell 命令,仅允许读取文件而不允许写入,从而构建一个只读的安全沙箱环境。
在创建 Agent 时,只需传入一个不允许使用的工具列表即可:
复制这种机制让你能够根据不同场景灵活控制 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 之间可以共享能力,形成一个真正互联互通的智能系统。