OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  CrewAI Tools — 为多 Agent 系统补充工具调用能力的生态组件

CrewAI Tools — 为多 Agent 系统补充工具调用能力的生态组件

 
  consumer ·  2026-04-02 11:00:24 · 10 次点击  · 0 条评论  
![CrewAI Logo,两个人划船](./assets/crewai_logo.png)
> **⚠️ 警告:此仓库已弃用。CrewAI Tools 更新且积极维护的版本请移步至:** > [https://github.com/crewAIInc/crewAI/tree/main/lib/crewai-tools](https://github.com/crewAIInc/crewAI/tree/main/lib/crewai-tools) # CrewAI Tools 为您的 CrewAI 智能体赋能,提供强大且可定制的工具,以提升其能力,应对复杂的现实世界任务。 CrewAI Tools 提供了扩展智能体功能的核心工具集,帮助您快速增强自动化流程。无论是使用现成可靠的工具,还是根据您的需求定制解决方案,都能轻松实现。 --- ## 快速链接 [主页](https://www.crewai.com/) | [文档](https://docs.crewai.com/) | [示例](https://github.com/crewAIInc/crewAI-examples) | [社区](https://community.crewai.com/) --- ## 可用工具 CrewAI 提供了丰富的强大工具集,随时可用于增强您的智能体: - **文件管理**:`FileReadTool`, `FileWriteTool` - **网页抓取**:`ScrapeWebsiteTool`, `SeleniumScrapingTool` - **数据库集成**:`PGSearchTool`, `MySQLSearchTool` - **向量数据库集成**:`MongoDBVectorSearchTool`, `QdrantVectorSearchTool`, `WeaviateVectorSearchTool` - **API 集成**:`SerperApiTool`, `EXASearchTool` - **AI 驱动工具**:`DallETool`, `VisionTool`, `StagehandTool` 以及更多简化智能体集成的强大工具。 --- ## 创建自定义工具 CrewAI 提供了两种简单的方法来创建自定义工具: ### 继承 `BaseTool` 类 通过继承 `BaseTool` 类来定义您的工具:
from crewai.tools import BaseTool

class MyCustomTool(BaseTool):
    name: str = "工具名称"
    description: str = "此处填写详细描述。"

    def _run(self, *args, **kwargs):
        # 在此处编写您的工具逻辑
### 使用 `tool` 装饰器 使用装饰器快速创建轻量级工具:
from crewai import tool

@tool("工具名称")
def my_custom_function(input):
    # 工具逻辑在此
    return output
--- ## CrewAI Tools 与 MCP CrewAI Tools 支持模型上下文协议 (MCP)。这使您可以访问社区构建的数百个 MCP 服务器中的数千种工具。 在开始将 MCP 与 CrewAI Tools 结合使用之前,您需要安装 `mcp` 额外依赖项:
pip install crewai-tools[mcp]
# 或
uv add crewai-tools --extra mcp
要在 CrewAI 中快速开始使用 MCP,您有两种选择: ### 选项 1:完全托管的连接 在此场景中,我们使用上下文管理器 (`with` 语句) 来启动和停止与 MCP 服务器的连接。这一切都在后台完成,您只需与对应于 MCP 服务器工具的 CrewAI 工具进行交互。 对于基于 STDIO 的 MCP 服务器:
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter

serverparams = StdioServerParameters(
    command="uvx",
    args=["--quiet", "pubmedmcp@0.1.3"],
    env={"UV_PYTHON": "3.12", **os.environ},
)

with MCPServerAdapter(serverparams) as tools:
    # tools 现在是一个与 MCP 服务器工具一一对应的 CrewAI 工具列表
    agent = Agent(..., tools=tools)
    task = Task(...)
    crew = Crew(..., agents=[agent], tasks=[task])
    crew.kickoff(...)
对于基于 SSE 的 MCP 服务器:
serverparams = {"url": "http://localhost:8000/sse"}
with MCPServerAdapter(serverparams) as tools:
    # tools 现在是一个与 MCP 服务器工具一一对应的 CrewAI 工具列表
    agent = Agent(..., tools=tools)
    task = Task(...)
    crew = Crew(..., agents=[agent], tasks=[task])
    crew.kickoff(...)
### 选项 2:对 MCP 连接有更多控制 如果您需要对 MCP 连接进行更多控制,可以将 `MCPServerAdapter` 实例化为一个 `mcp_server_adapter` 对象,用于管理与 MCP 服务器的连接并访问可用工具。 **重要**:在这种情况下,您需要调用 `mcp_server_adapter.stop()` 以确保连接正确停止。我们建议您使用 `try ... finally` 代码块来确保即使在发生错误时也会调用 `.stop()` 方法。 以下是针对 STDIO MCP 服务器的相同示例:
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter

serverparams = StdioServerParameters(
    command="uvx",
    args=["--quiet", "pubmedmcp@0.1.3"],
    env={"UV_PYTHON": "3.12", **os.environ},
)

try:
    mcp_server_adapter = MCPServerAdapter(serverparams)
    tools = mcp_server_adapter.tools
    # tools 现在是一个与 MCP 服务器工具一一对应的 CrewAI 工具列表
    agent = Agent(..., tools=tools)
    task = Task(...)
    crew = Crew(..., agents=[agent], tasks=[task])
    crew.kickoff(...)

# **重要** 别忘了停止连接
finally:
    mcp_server_adapter.stop()
最后是针对 SSE MCP 服务器的相同示例:
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter

serverparams = {"url": "http://localhost:8000/sse"}

try:
    mcp_server_adapter = MCPServerAdapter(serverparams)
    tools = mcp_server_adapter.tools
    # tools 现在是一个与 MCP 服务器工具一一对应的 CrewAI 工具列表
    agent = Agent(..., tools=tools)
    task = Task(...)
    crew = Crew(..., agents=[agent], tasks=[task])
    crew.kickoff(...)

# **重要** 别忘了停止连接
finally:
    mcp_server_adapter.stop()
### 注意事项与限制 #### 安全使用 MCP 在使用 MCP 服务器之前,请务必确保您信任它。使用 STDIO 服务器将在您的机器上执行代码。使用 SSE 也并非万无一失,恶意 MCP 服务器仍可能向您的应用程序注入许多内容。 #### 限制 - 目前我们仅支持来自 MCP 服务器的工具,不支持其他类型的原语,如提示词、资源等。 - 我们仅返回 MCP 服务器工具的第一个文本输出,使用 `.content[0].text`。 --- ## 为什么使用 CrewAI Tools? - **简单性与灵活性**:易于使用,同时功能强大,足以应对复杂的工作流。 - **快速集成**:无缝整合外部服务、API 和数据库。 - **企业级就绪**:为稳定性、性能和一致性结果而构建。 --- ## 贡献指南 我们欢迎社区的贡献! 1. Fork 并克隆仓库。 2. 创建一个新分支 (`git checkout -b feature/my-feature`)。 3. 提交您的更改 (`git commit -m 'Add my feature'`)。 4. 推送您的分支 (`git push origin feature/my-feature`)。 5. 开启一个拉取请求。 --- ## 开发者快速入门
pip install crewai[tools]
### 开发环境设置 - 安装依赖项:`uv sync` - 运行测试:`uv run pytest` - 运行静态类型检查:`uv run pyright` - 设置预提交钩子:`pre-commit install` --- ## 支持与社区 加入我们快速发展的社区,获得实时支持: - [Discourse 论坛](https://community.crewai.com/) - [提交 Issue](https://github.com/crewAIInc/crewAI/issues) 构建更智能、更快速、更强大的 AI 解决方案——由 CrewAI Tools 驱动。
10 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 25 ms
Developed with Cursor