支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


CAMEL-AI Blog|OWL调用MCP Toolkit实践

发布日期:2025-03-19 12:22:05 浏览次数: 1536 来源:CAMEL AI
推荐语

探索AI自动化领域的最新技术实践,揭秘OWL如何高效调用MCP Toolkit。

核心内容:
1. OWL框架和MCP协议的集成优势
2. MCP协议的定义、发展背景及其生态圈
3. MCP架构的基本原理和实际应用案例

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

1. 引言


OWLOptimized Workforce Learning)是由 CAMEL-AI 社区开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理。其核心理念是模仿人类协作模式,将任务拆解为可执行的子步骤,并通过不同角色的智能体分工完成。自 2025  3 月开源以来,OWL  GAIA 基准测试中以 58.18 的平均分位列开源框架榜首,成为 AI 任务自动化领域的新标杆。



MCPModel Context Protocol)协议作为AI领域的“USB接口,它逐渐成为了解决AI信息孤岛的通用方案,其生态圈也在日益增长。在OWL中,也支持使用MCP协议来调用其生态圈内的MCP Server,从而实现更标准化和高效的工具调用。



本文旨在介绍在OWL框架中,如何使用MCPModel 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 DesktopIDE  AI 工具等希望通过 MCP 访问数据的程序。



MCP Client:维持与服务器 1:1 连接的协议客户端。



MCP Server:轻量级程序,每个 server 通过标准化的MCP 暴露特定功能。



本地数据源MCP服务器可以安全访问的计算机文件、数据库和服务。



远程服务MCP服务器可以连接的通过互联网提供的外部系统(例如通过 API



这种架构设计使得 AI 工具和应用程序能够以安全且标准化的方式访问各种数据源,无论是本地还是远程的,从而增强它们的功能和上下文感知能力。让我们通过一个实际场景来理解这些组件如何协同工作:


假设你正在通过 Claude Desktop (Host) 询问:"我桌面上有哪些文档?"



1.HostClaude 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框架架构概览



OWLOptimized Workforce Learning)是由 CAMEL-AI 社区开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理。其核心理念是模仿人类协作模式,将任务拆解为可执行的子步骤,并通过不同角色的智能体分工完成。自 2025  3 月开源以来,OWL  GAIA 基准测试中以 58.18 的平均分位列开源框架榜首,成为 AI 任务自动化领域的新标杆。




核心特性



1.动态协作引擎



a.智能体角色机制:采用双角色协作框架,包含规划智能体(planning_agent)和执行智能体(web_agent)。规划智能体负责任务拆解与策略制定,执行智能体通过工具调用完成具体操作。


b.实时决策优化:基于部分可观测马尔可夫决策过程(POMDP),动态调整执行路径以应对网页内容变化。



2.多模态处理能力



a.跨模态整合:支持图像分类、语音识别、视频关键帧提取,可解析WordExcelPDFPPT等文件并保留原始结构。


b.浏览器自动化:集成Playwright框架,模拟真实用户行为,包括页面滚动、点击操作、表单填写和文件下载。



3.工具链生态系统



a.核心工具包:包含BrowserToolkit(网页交互)和CodeExecutionToolkitPython沙箱),适用于数据抓取和自动化测试。


b.学术研究工具包:提供ArxivToolkit(论文检索)和SemanticScholarToolkit(语义分析),支持文献综述和研究趋势分析。


c.数据分析工具包:集成NetworkXToolkit(图分析)和SymPyToolkit(符号计算),用于社交网络建模与数学建模。


d.生产工具包:包含ExcelToolkit(表格处理)和NotionToolkit(知识管理),服务于报表生成和企业知识库构建。



CAMEL-AI框架介绍



CAMELhttps://github.com/camel-ai/camel)是一个开源的多智能体框架,专为构建基于大型语言模型(LLM)的智能体交互系统设计。这个框架的核心思想是通过角色扮演和结构化对话机制,使智能体之间能够进行高效、灵活的协作。无论是在复杂的任务环境中,还是在多智能体共同解决问题的场景中,CAMEL都能够提供强大的支持。



核心特性


1.多智能体系统支持


角色扮演框架:通过引入角色扮演的机制,智能体能够根据不同的角色和任务需求进行协作。这种方式不仅提高了智能体间的互动效率,也使得每个智能体能够根据自身的能力和任务定位,做出最优化的决策。



工作流系统CAMEL提供了一个强大的工作流管理系统,支持多智能体联合解决复杂任务。这不仅提高了智能体的协作效率,还能够确保各个智能体能够在不同的任务中合理分工。


高级协作功能:在一些更加复杂的场景下,CAMEL能够处理高级协作需求,包括多方利益的协调和信息的动态调整,使得系统能够在复杂的环境中自我优化。



2.全面的工具集成


模型平台支持CAMEL框架支持与超过20个主流的语言模型平台进行集成,如OpenAIGPT系列、Llama3Ollama等。这为开发者提供了更多选择,也保证了系统能够根据任务需求选择合适的模型进行处理。



外部工具集成:除了内置的模型平台,CAMEL还允许与其他外部工具进行集成,如搜索引擎、GitHub、谷歌地图等,这使得框架能够跨越多个领域,满足不同应用场景下的需求。



定制功能:框架内置了记忆和提示组件的定制功能,开发者可以根据具体的应用场景自定义智能体的工作方式和交互策略。这些定制化功能为智能体的自主学习和任务处理提供了更多的灵活性。



CAMEL框架的出现,为多智能体系统的研发提供了一个非常强大的工具。无论是在多智能体协作,还是在复杂任务的解决上,它都能够提供高效、灵活的支持。同时,框架的设计原则也使得它具备了良好的可进化性和可扩展性,非常适合用于大规模、长期运行的应用场景。随着技术的不断发展,CAMEL将继续在智能体协作领域发挥着重要作用,推动大型语言模型的更深层次应用。



4. MCP OWL框架中的应用案例



DEMO演示



我想要一份关于Andrew Ng的学术报告,包括他的研究方向、发表的论文(至少3篇)、所在机构等,然后以Markdown格式整理报告并保存到我的桌面。



程序启动与运行



1.配置好owl库所需要的依赖

(参考https://github.com/camel-ai/owlInstallation



2.安装MCP Server



a.MCP文件系统服务(需要提前安装好Node.jsnpm)



i.安装MCP服务


npx -y @smithery/cli install @wonderwhy-er/desktop-commander --client claudenpx @wonderwhy-er/desktop-commander setup


ii.填写配置文件



找到配置文件位置owl/mcp_servers_config.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", "mcp_server_fetch"]    }}


完整配置文件如下:



{  "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客户端初始化及连接



相关源代码


config_path = Path(__file__).parent / "mcp_servers_config.json"mcp_toolkit = MCPToolkit(config_path=str(config_path))await mcp_toolkit.connect()

在这段代码中,我们首先定义了配置文件的路径,然后通过MCPToolkit初始化连接,接着使用异步connect方法建立与工具集的连接。



代码关键点



1.加载配置路径


config_path = Path(__file__).parent / "mcp_servers_config.json"

这里使用了Path(__file__).parent来获取当前脚本所在的目录,并将其与配置文件名称拼接。这样做的好处是使得路径的管理更加灵活且跨平台,避免了硬编码的路径问题。



2.创建工具管理器


mcp_toolkit = MCPToolkit(config_path=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 = [*mcp_toolkit.get_tools()]society = await construct_society(question, tools)answer, chat_history, token_count = await run_society(society)print(f"\033[94mAnswer: {answer}\033[0m")

接下来,代码展示了从请求构造到结果处理的完整流程,涵盖了问题输入、工具获取、智能体环境构建、任务执行以及最终结果的输出。



代码关键点



1.构造请求参数



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")

这里定义了一个清晰的问题字符串,指定了报告的内容、格式和保存要求。这种结构化的字符串帮助系统明确任务要求,确保后续步骤的准确性。



2.获取工具集



tools = [*mcp_toolkit.get_tools()]

在连接上下文中,我们通过mcp_toolkit.get_tools()获取所有可用的工具,并将其存储到tools列表中。这些工具将用于任务执行阶段,帮助智能体完成任务。



3.构造多智能体环境



society = await construct_society(question, tools)

construct_society是一个异步函数,它返回一个包含多个智能体的环境(OwlRolePlaying)。这里的关键步骤包括:


使用ModelFactory.create创建用户和助手角色的模型实例。


将工具集分配给助手角色,允许它们在任务过程中执行实际的工具操作。



4.运行智能体对话



answer, chat_history, token_count = await run_society(society)

run_society触发了智能体之间的对话,智能体将基于问题和工具集进行交互,最终返回答案、聊天历史和令牌计数。这一步是整个请求处理的核心,展示了如何通过多智能体协作得到最终答案。



5.输出结果



print(f"\033[94mAnswer: {answer}\033[0m")


最终,我们使用 ANSI 颜色代码输出答案,将其高亮为蓝色,方便用户快速识别结果。这种输出方式使得终端的展示更为直观,增强了用户体验。这一部分代码展示了从用户问题输入到工具选择、智能体对话构建,再到结果输出的全流程。通过这些步骤,我们能够理解每个环节如何协同工作,共同完成任务。



更多MCP工具检索及使用方案



CAMEL-AI MCP工具集成平台:https://www.camel-ai.org/mcp,在我们的平台上,你可以找到MCP支持的各种插件。本教程中我们仅使用了其中的三种工具。接下来,我们将介绍如何使用Fetch工具作为示例,演示如何将一个插件集成到我们的环境中。



进入CAMEL-AI.org 官网



接下来,我们将介绍如何使用Fetch工具作为示例,演示如何将一个插件集成到我们的环境中。



点击Anthropic 找到Fetch 工具



访问工具页面进入MCP平台后,点击Fetch工具,进入下一个页面。在这个页面中,你可以看到一些使用示例以及与Fetch相关的其他MCP工具包。



查看GitHub仓库在页面上,我们会找到该工具的GitHub仓库链接,点击后进入仓库的README页面。这个页面会详细介绍该工具的使用方法和配置步骤。




安装和配置根据README文件中的教程,通常需要执行两步操作:


安装:你可以通过pip install命令安装Fetch工具。



配置:安装完成后,接下来需要在我们的owl/mcp_servers_config.json配置文件中找到"mcpServers":{}部分,添加fetch插件的相关配置。完成配置后,插件就可以自动加载并在环境中使用。




通过这样的配置和集成,你就可以轻松地将新工具集成到你的MCP环境中,进行自动化调用,提升系统的功能和效率。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询