> **⚠️ 警告:此仓库已弃用。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 驱动。