1.引言
OWL(Optimized Workforce Learning)是由 CAMEL-AI 社区开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理。其核心理念是模仿人类协作模式,将任务拆解为可执行的子步骤,并通过不同角色的智能体分工完成。自 2025 年 3 月开源以来,OWL 在 GAIA 基准测试中以 58.18 的平均分位列开源框架榜首,成为 AI 任务自动化领域的新标杆。
MCP(Model Context Protocol)协议作为 AI 领域的“USB 接口”,它逐渐成为了解决 AI 信息孤岛的通用方案,其生态圈也在日益增长。在 OWL 中,也支持使用 MCP 协议来调用其生态圈内的 MCP Server,从而实现更标准化和高效的工具调用。
本文旨在介绍在 OWL 框架中,如何使用 MCP(Model Context Protocol)更高效地调用外部工具和数据。
2.MCP概述
MCP定义与发展背景
MCP 起源于 2024 年 11 月 25 日 Anthropic 发布的文章:Introducing the Model Context Protocol。
MCP(Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到AI模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。
引用一些优秀的概念可视化来帮助大家进行理解:

可以看出,MCP 可以用更标准的方式来灵活的为 LLM 调用不同工具,更简单的可视化如下所示。基于这张图,你应该更容易理解 MCP 作为“中间协议层”的概念了。
那为什么要做 MCP 这样一个“接口”呢?是因为 Anthropic 希望将数据连接到模型的这个环节可以更智能,更统一。Anthropic 基于这样的痛点设计了 MCP,让 LLM 能轻松的获取数据或者调用工具,方便开发者在 LLM 的基础上构建智能体和复杂的工作流程。更具体的说 MCP 的优势在于:
•生态- MCP 提供很多现成的插件,你的 AI 可以直接使用。
•统一性-不限制于特定的 AI 模型,任何支持 MCP 的模型都可以灵活切换。
•数据安全-你的敏感数据留在自己的电脑上,不必全部上传。(因为 MCP Server 可以自行设计接口确定传输哪些数据)
MCP架构与基本原理
基本架构
接下来简单介绍下 MCP 的基本架构。MCP 遵循客户端-服务器架构,一个宿主应用(Host)可以连接多个服务器(server),引用官方文档中的示图:
•MCP Host:像 Claude Desktop、IDE 或 AI 工具等希望通过 MCP 访问数据的程序。
•MCP Client:维持与服务器 1:1 连接的协议客户端。
•MCP Server:轻量级程序,每个 server 通过标准化的 MCP 暴露特定功能。
•本地数据源:MCP 服务器可以安全访问的计算机文件、数据库和服务。
•远程服务:MCP 服务器可以连接的通过互联网提供的外部系统(例如通过 API)
这种架构设计使得 AI 工具和应用程序能够以安全且标准化的方式访问各种数据源,无论是本地还是远程的,从而增强它们的功能和上下文感知能力。让我们通过一个实际场景来理解这些组件如何协同工作:
假设你正在通过 Claude Desktop (Host)询问:"我桌面上有哪些文档?"
1.Host:Claude Desktop 作为 Host,负责接收你的提问并与 Claude 模型交互。
2.Client:当 Claude 模型决定需要访问你的文件系统时,Host 中内置的 MCP Client 会被激活。这个 Client 负责与适当的 MCP Server 建立连接。
3.Server:在这个例子中,文件系统 MCP Server 会被调用。它负责执行实际的文件扫描操作,访问你的桌面目录,并返回找到的文档列表。
整个流程是这样的:你的问题→ Claude Desktop (Host) → Claude 模型→需要文件信息→ MCP Client 连接→文件系统 MCP Server →执行操作→返回结果→ Claude 生成回答→显示在 Claude Desktop 上。
这种架构设计使得 Claude 可以在不同场景下灵活调用各种工具和数据源,而开发者只需专注于开发对应的 MCP Server,无需关心 Host 和 Client 的实现细节。
在架构设计上,官方文档中提供了详尽的概念讲解与解析,可通过以下链接跳转了解:
https://modelcontextprotocol.io/docs/concepts/architecture
3.OWL框架简介
OWL框架架构概览
OWL(Optimized Workforce Learning)是由 CAMEL-AI 社区开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理。其核心理念是模仿人类协作模式,将任务拆解为可执行的子步骤,并通过不同角色的智能体分工完成。自 2025 年 3 月开源以来,OWL 在 GAIA 基准测试中以 58.18 的平均分位列开源框架榜首,成为 AI 任务自动化领域的新标杆。
核心特性
1.动态协作引擎
a.智能体角色机制:采用双角色协作框架,包含规划智能体(planningagent)和执行智能体(webagent)。规划智能体负责任务拆解与策略制定,执行智能体通过工具调用完成具体操作。
b.实时决策优化:基于部分可观测马尔可夫决策过程(POMDP),动态调整执行路径以应对网页内容变化。
2.多模态处理能力
a.跨模态整合:支持图像分类、语音识别、视频关键帧提取,可解析 Word、Excel、PDF、PPT 等文件并保留原始结构。
b.浏览器自动化:集成 Playwright 框架,模拟真实用户行为,包括页面滚动、点击操作、表单填写和文件下载。
3.工具链生态系统
a.核心工具包:包含Browser Toolkit(网页交互)和 CodeExecutionToolkit(Python 沙箱),适用于数据抓取和自动化测试。
b.学术研究工具包:提供 ArxivToolkit(论文检索)和 SemanticScholarToolkit(语义分析),支持文献综述和研究趋势分析。
c.数据分析工具包:集成 NetworkXToolkit(图分析)和 SymPyToolkit(符号计算),用于社交网络建模与数学建模。
d.生产工具包:包含 ExcelToolkit(表格处理)和 NotionToolkit(知识管理),服务于报表生成和企业知识库构建。
CAMEL-AI框架介绍
CAMEL(https://github.com/camel-ai/camel)是一个开源的多智能体框架,专为构建基于大型语言模型(LLM)的智能体交互系统设计。这个框架的核心思想是通过角色扮演和结构化对话机制,使智能体之间能够进行高效、灵活的协作。无论是在复杂的任务环境中,还是在多智能体共同解决问题的场景中,CAMEL 都能够提供强大的支持。
核心特性
1.多智能体系统支持
○角色扮演框架:通过引入角色扮演的机制,智能体能够根据不同的角色和任务需求进行协作。这种方式不仅提高了智能体间的互动效率,也使得每个智能体能够根据自身的能力和任务定位,做出最优化的决策。
○工作流系统:CAMEL 提供了一个强大的工作流管理系统,支持多智能体联合解决复杂任务。这不仅提高了智能体的协作效率,还能够确保各个智能体能够在不同的任务中合理分工。
○高级协作功能:在一些更加复杂的场景下,CAMEL 能够处理高级协作需求,包括多方利益的协调和信息的动态调整,使得系统能够在复杂的环境中自我优化。
2.全面的工具集成
○模型平台支持:CAMEL 框架支持与超过 20 个主流的语言模型平台进行集成,如 OpenAI 的 GPT 系列、Llama3、Ollama 等。这为开发者提供了更多选择,也保证了系统能够根据任务需求选择合适的模型进行处理。
○外部工具集成:除了内置的模型平台,CAMEL 还允许与其他外部工具进行集成,如搜索引擎、GitHub、谷歌地图等,这使得框架能够跨越多个领域,满足不同应用场景下的需求。
○定制功能:框架内置了记忆和提示组件的定制功能,开发者可以根据具体的应用场景自定义智能体的工作方式和交互策略。这些定制化功能为智能体的自主学习和任务处理提供了更多的灵活性。
CAMEL 框架的出现,为多智能体系统的研发提供了一个非常强大的工具。无论是在多智能体协作,还是在复杂任务的解决上,它都能够提供高效、灵活的支持。同时,框架的设计原则也使得它具备了良好的可进化性和可扩展性,非常适合用于大规模、长期运行的应用场景。随着技术的不断发展,CAMEL 将继续在智能体协作领域发挥着重要作用,推动大型语言模型的更深层次应用。
4.MCP在OWL框架中的应用案例
DEMO演示
我想要一份关于 Andrew Ng 的学术报告,包括他的研究方向、发表的论文(至少 3 篇)、所在机构等,然后以 Markdown 格式整理报告并保存到我的桌面。
程序启动与运行
1.配置好 owl 库所需要的依赖
(参考 https://github.com/camel-ai/owl 的 Installation)
2.安装 MCP Server
a.MCP 文件系统服务(需要提前安装好 Node.js 和 npm)
i.安装 MCP 服务
npx -y @smithery/cli install @wonderwhy-er/desktop-commander –client claudenpx @wonderwhy-er/desktop-commander setup
ii.填写配置文件
找到配置文件位置 owl/mcpserversconfig.json:
{ "desktop-commander": { "command": "npx", "args": [ "-y", "@wonderwhy-er/desktop-commander" ] }}
b.MCP playwright 服务
i.安装 MCP 服务
npm install -g @executeautomation/playwright-mcp-servernpx playwright install-deps
ii.填写配置文件
{ "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@executeautomation/playwright-mcp-server"] } }}
c.MCP fetch 服务(可选,检索效果更好)
i.安装 MCP 服务
pip install mcp-server-fetch
ii.填写配置文件
"mcpServers": { "fetch": { "command": "python", "args": ["-m", "mcpserverfetch"] }}
完整配置文件如下:
{ "mcpServers": { "desktop-commander": { "command": "npx", "args": [ "-y", "@wonderwhy-er/desktop-commander" ] }, "playwright": { "command": "npx", "args": ["-y", "@executeautomation/playwright-mcp-server"] } }}
3.运行 run_mcp.py 脚本
python examples/run_mcp.py
关键代码示例与讲解
MCP客户端初始化及连接
相关源代码
configpath = Path(file).parent / "mcpserversconfig.json"mcptoolkit = MCPToolkit(configpath=str(configpath))await mcp_toolkit.connect()
在这段代码中,我们首先定义了配置文件的路径,然后通过 MCPToolkit 初始化连接,接着使用异步 connect 方法建立与工具集的连接。
代码关键点:
1.加载配置路径:
configpath = Path(file).parent / "mcpservers_config.json"
这里使用了 Path(_file_).parent 来获取当前脚本所在的目录,并将其与配置文件名称拼接。这样做的好处是使得路径的管理更加灵活且跨平台,避免了硬编码的路径问题。
2.创建工具管理器:
mcptoolkit = MCPToolkit(configpath=str(config_path))
MCPToolkit 是用来管理所有工具集的类。通过传入配置路径,我们为工具管理器提供了配置文件,告诉它如何加载和连接到远程的服务。
3.建立连接:
await mcp_toolkit.connect()
这一行通过 await 等待异步连接的建立。connect()是一个异步方法,用于与指定的工具集进行连接。这种方式避免了同步 I/O 阻塞,确保了程序的高效性。
请求、结果处理流程
相关源代码
question = ( "I'd like a academic report about Andrew Ng, including his research " "direction, published papers (At least 3), institutions, etc." "Then organize the report in Markdown format and save it to my desktop")tools = [*mcptoolkit.gettools()]society = await constructsociety(question, tools)answer, chathistory, tokencount = await runsociety(society)print(f"
