概述
模型上下文协议 (MCP) 为 AI 智能体提供了一种标准化的方式,通过与外部服务(称为 MCP 服务器)通信,向 LLM 提供上下文。 CrewAI 提供了两种方法进行 MCP 集成:简单 DSL 集成** (推荐)
直接在智能体上使用mcps 字段,实现无缝的 MCP 工具集成。
🔧 高级:MCPServerAdapter (适用于复杂场景)
对于需要手动管理连接的高级用例,crewai-tools 库提供了 MCPServerAdapter 类。我们目前支持以下传输机制:- Stdio:用于本地服务器(通过同一台机器上进程间的标准输入/输出进行通信)
- 服务器发送事件 (SSE):用于远程服务器(通过 HTTP 从服务器到客户端的单向、实时数据流)
- 可流式 HTTPS:用于远程服务器(通过 HTTPS 进行灵活的、可能双向的通信,通常利用 SSE 实现服务器到客户端的流)
视频教程
观看此视频教程,全面了解 MCP 与 CrewAI 的集成安装
CrewAI MCP 集成需要mcp 库
快速入门:简单 DSL 集成
集成 MCP 服务器最简单的方法是在您的智能体上使用mcps 字段。
MCP 引用格式
mcps 字段支持多种引用格式,以实现最大灵活性。
外部 MCP 服务器
CrewAI AMP 市场
混合引用
主要特点
- 🔄 自动工具发现:工具被自动发现和集成
- 🏷️ 名称冲突预防:服务器名称会作为工具名称的前缀
- ⚡ 性能优化:按需连接并缓存 schema
- 🛡️ 错误恢复能力:优雅地处理不可用的服务器
- ⏱️ 超时保护:内置超时功能防止连接挂起
- 📊 透明集成:与现有的 CrewAI 功能无缝协作
错误处理
MCP DSL 集成设计为具有弹性高级:MCPServerAdapter
对于需要手动管理连接的复杂场景,请使用crewai-tools 中的 MCPServerAdapter 类。推荐使用 Python 上下文管理器(with 语句),因为它会自动处理与 MCP 服务器的连接启动和停止。
连接配置
MCPServerAdapter 支持多种配置选项以自定义连接行为。
connect_timeout(可选):等待与 MCP 服务器建立连接的最大时间(秒)。如果未指定,默认为 30 秒。这对于响应时间可能变化的远程服务器特别有用。
筛选工具
有两种方法可以筛选工具- 使用字典式索引访问特定工具。
- 将工具名称列表传递给
MCPServerAdapter构造函数。
使用字典式索引访问特定工具。
将工具名称列表传递给 MCPServerAdapter 构造函数。
与 CrewBase 一起使用
要在 CrewBase 类中使用 MCPServer 工具,请使用get_mcp_tools 方法。服务器配置应通过 mcp_server_params 属性提供。您可以传递单个配置或多个服务器配置的列表。
当一个 crew 类被
@CrewBase 装饰器修饰时,适配器的生命周期将为您管理。- 首次调用
get_mcp_tools()会延迟创建一个共享的MCPServerAdapter,该适配器会被 crew 中的每个智能体重用。 - 适配器在
.kickoff()完成后会自动关闭,这要归功于@CrewBase注入的隐式 after-kickoff 钩子,因此不需要手动清理。 - 如果未定义
mcp_server_params,get_mcp_tools()将简单地返回一个空列表,从而允许相同的代码路径在配置或未配置 MCP 的情况下运行。
get_mcp_tools(),或根据不同环境选择性地启用 MCP。连接超时配置
您可以通过设置mcp_connect_timeout 类属性来配置 MCP 服务器的连接超时。如果未指定超时,则默认为 30 秒。
筛选工具
您可以通过向get_mcp_tools 方法传递一个工具名称列表来筛选哪些工具对您的智能体可用。
探索 MCP 集成
简单 DSL 集成
推荐:使用简单的
mcps=[] 字段语法,轻松实现 MCP 集成。Stdio 传输
通过标准输入/输出连接到本地 MCP 服务器。非常适合脚本和本地可执行文件。
SSE 传输
使用服务器发送事件与远程 MCP 服务器集成,以实现实时数据流。
可流式 HTTP 传输
利用灵活的可流式 HTTP 与远程 MCP 服务器进行稳健的通信。
连接到多个服务器
使用单个适配器同时聚合来自多个 MCP 服务器的工具。
安全注意事项
查看重要的 MCP 集成安全最佳实践,以确保您的智能体安全。
GitHub 存储库
CrewAI MCP 演示
使用 MCP 保持安全
在使用 MCP 服务器之前,请务必确保您信任它。
安全警告:DNS 重绑定攻击
如果未正确保护,SSE 传输可能容易受到 DNS 重绑定攻击。为防止这种情况:- 始终验证传入 SSE 连接的 Origin 标头,以确保它们来自预期的源
- 在本地运行时,避免将服务器绑定到所有网络接口 (0.0.0.0) - 应仅绑定到 localhost (127.0.0.1)
- 为所有 SSE 连接实施适当的身份验证
限制
- 支持的原语:目前,
MCPServerAdapter主要支持适配 MCPtools。其他 MCP 原语,如prompts或resources,目前尚未通过此适配器直接集成为 CrewAI 组件。 - 输出处理:适配器通常处理来自 MCP 工具的主要文本输出(例如
.content[0].text)。如果不符合此模式,复杂或多模态的输出可能需要自定义处理。
