使用说明
Crawl4AI RAG MCP Server
Web Crawling and RAG Capabilities for AI Agents and AI Coding Assistants
强有力的实施 模型上下文协议(MCP) 与...集成 Crawl4AI 和 Supabase 为人工智能代理和人工智能编码助手提供先进的网络爬行和RAG功能。
使用此MCP服务器,您可以 刮任何东西 然后 在任何地方使用这些知识 对于RAG来说。
主要目标是将此MCP服务器引入 执政官 随着我将其发展为更多的AI编码助手构建AI代理的知识引擎。Crawl4AI/RAG MCP服务器的第一个版本将很快得到极大的改进,特别是使其更具可配置性,以便您可以使用不同的嵌入模型,并在Ollama本地运行所有内容。
概述
此MCP服务器提供的工具使AI代理能够抓取网站,将内容存储在矢量数据库(Supabase)中,并对抓取的内容执行RAG。它遵循基于以下内容构建MCP服务器的最佳实践 Mem0 MCP服务器模板 我之前在我的频道上提供过。
该服务器包括几种高级RAG策略,可以启用这些策略来提高检索质量:
- 上下文嵌入 丰富语义理解
- 混合搜索 结合矢量搜索和关键字搜索
- RAG代理 用于专门的代码示例提取
- 重新排序 使用交叉编码器模型提高结果相关性
请参阅 配置节 下面详细介绍了如何启用和配置这些策略。
视觉
Crawl4AI RAG MCP服务器只是一个开始。这就是我们要去的地方:
-
与Archon集成:将此系统直接构建到 执政官 为AI编码助手创建一个全面的知识引擎,以构建更好的AI代理。
-
多个嵌入模型:扩展到OpenAI之外,支持各种嵌入模型,包括使用Ollama在本地运行所有内容以实现完全控制和隐私的能力。
-
高级RAG策略:实施复杂的检索技术,如上下文检索、后期分块等,以超越基本的“简单查找”,显著提高RAG系统的功能和精度,特别是在与Archon集成时。
-
增强分块策略:实现一种基于上下文7的分块方法,该方法侧重于示例,并为每个块创建不同的、语义上有意义的部分,从而提高检索精度。
-
性能优化:提高爬行和索引速度,使“快速”索引新文档变得更加现实,然后在AI编码助手的同一提示中利用它。
特性
- 智能URL检测:自动检测和处理不同的URL类型(常规网页、网站地图、文本文件)
- 递归爬行:跟踪内部链接以发现内容
- 并行处理:高效地同时抓取多个页面
- 内容分块:按标题和大小智能拆分内容,以实现更好的处理
- 矢量搜索:对已爬网内容执行RAG,可选择按数据源进行过滤以提高精度
- 源检索:检索可用于过滤的源,以指导RAG过程
工具
服务器提供基本的网络爬行和搜索工具:
核心工具(始终可用)
crawl_single_page:快速抓取单个网页并将其内容存储在矢量数据库中smart_crawl_url:根据提供的URL类型智能抓取完整网站(sitemap、llms-full.txt或需要递归抓取的常规网页)get_available_sources:获取数据库中所有可用源(域)的列表perform_rag_query:使用语义搜索和可选的源过滤搜索相关内容
条件工具
search_code_examples(要求USE_AGENTIC_RAG=true):从抓取的文档中专门搜索代码示例及其摘要。该工具为AI编码助手提供有针对性的代码片段检索。
先决条件
- Docker/Docker桌面 如果将MCP服务器作为容器运行(推荐)
- Python 3.12+ 如果直接通过uv运行MCP服务器
- Supabase (RAG数据库)
- OpenAI API密钥 (用于生成嵌入)
安装
使用Docker(推荐)
-
克隆此存储库:
git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag -
构建Docker镜像:
docker build -t mcp/crawl4ai-rag --build-arg PORT=8051 . -
创建一个
.env基于以下配置部分的文件
直接使用uv(无Docker)
-
克隆此存储库:
git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag -
如果没有,请安装uv:
pip install uv -
创建并激活虚拟环境:
uv venv .venv\Scripts\activate # on Mac/Linux: source .venv/bin/activate -
安装依赖项:
uv pip install -e . crawl4ai-setup -
创建一个
.env基于以下配置部分的文件
数据库设置
在运行服务器之前,您需要使用pgvector扩展名设置数据库:
-
转到Supabase仪表板中的SQL编辑器(如有必要,请先创建一个新项目)
-
创建新查询并粘贴以下内容
crawled_pages.sql -
运行查询以创建必要的表和函数
配置
创建一个 .env 项目根目录中的文件,包含以下变量:
# MCP Server Configuration
HOST=0.0.0.0
PORT=8051
TRANSPORT=sse
# OpenAI API Configuration
OPENAI_API_KEY=your_openai_api_key
# LLM for summaries and contextual embeddings
MODEL_CHOICE=gpt-4.1-nano
# RAG Strategies (set to "true" or "false", default to "false")
USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=false
USE_AGENTIC_RAG=false
USE_RERANKING=false
# Supabase Configuration
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_key
RAG战略选择
Crawl4AI RAG MCP服务器支持四种强大的RAG策略,可以独立启用:
1. 使用文本嵌入
启用此策略后,将通过整个文档中的附加上下文增强每个块的嵌入。系统将完整文档和特定块传递给LLM(通过配置 MODEL_CHOICE)以生成与块内容一起嵌入的丰富上下文。
- 何时使用:当您需要在上下文重要的情况下进行高精度检索时,例如技术文档中的术语在不同部分可能具有不同含义时,请启用此功能。
- 权衡:由于对每个块进行LLM调用,索引速度较慢,但检索精度明显提高。
- 成本:索引期间的其他LLM API调用。
2. 使用混合动力搜索
将传统关键字搜索与语义向量搜索相结合,提供更全面的结果。该系统并行执行这两个搜索,并智能地合并结果,对出现在两个结果集中的文档进行优先级排序。
- 何时使用:当用户可能使用特定的技术术语、函数名称进行搜索时,或者当精确的关键字匹配与语义理解一起很重要时,启用此功能。
- 权衡:搜索查询速度稍慢,但结果更稳健,特别是对于技术内容。
- 成本:没有额外的API成本,只是计算开销。
3. 使用指南
启用专门的代码示例提取和存储。在抓取文档时,系统会识别代码块(≥300个字符),将其与周围上下文一起提取,生成摘要,并将其存储在专门为代码搜索设计的单独矢量数据库表中。
- 何时使用:对于需要从文档中找到特定代码示例、实现模式或使用示例的AI编码助手来说,这是必不可少的。
- 权衡:由于代码提取和摘要,爬行速度明显较慢,需要更多的存储空间。
- 成本:用于总结每个代码示例的其他LLM API调用。
- 益处:提供专用
search_code_examplesAI代理可以使用的工具来查找特定的代码实现。
4. 使用排名
在首次检索后对搜索结果应用交叉编码器重新排序。使用轻量级交叉编码器模型(cross-encoder/ms-marco-MiniLM-L-6-v2)根据原始查询对每个结果进行评分,然后按相关性对结果进行重新排序。
- 何时使用:当搜索精度至关重要,并且您需要在顶部显示最相关的结果时,启用此功能。对于仅凭语义相似性可能无法捕捉到查询意图的复杂查询特别有用。
- 权衡:根据结果计数,为搜索查询增加约100-200ms,但显著提高了结果排序。
- 成本:没有额外的API成本-使用在CPU上运行的本地模型。
- 益处:更好的结果相关性,特别是对于复杂的查询。适用于常规RAG搜索和代码示例搜索。
推荐配置
对于RAG的一般文件:
USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=false
USE_RERANKING=true
对于带有代码示例的AI编码助手:
USE_CONTEXTUAL_EMBEDDINGS=true
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=true
USE_RERANKING=true
对于快速、基本的RAG:
USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=false
USE_RERANKING=false
运行服务器
使用Docker
docker run --env-file .env -p 8051:8051 mcp/crawl4ai-rag
使用Python
uv run src/crawl4ai_mcp.py
服务器将启动并侦听配置的主机和端口。
与MCP客户端集成
SSE配置
一旦服务器运行了SSE传输,您就可以使用以下配置连接到它:
{
"mcpServers": {
"crawl4ai-rag": {
"transport": "sse",
"url": "http://localhost:8051/sse"
}
}
}
Windsurf用户须知:使用
serverUrl而不是url在您的配置中:{ "mcpServers": { "crawl4ai-rag": { "transport": "sse", "serverUrl": "http://localhost:8051/sse" } } }Docker用户须知:使用
host.docker.internal而不是localhost如果您的客户端运行在不同的容器中。如果您在n8n内使用此MCP服务器,则适用此项!
标准配置
将此服务器添加到Claude Desktop、Windsurf或任何其他MCP客户端的MCP配置中:
{
"mcpServers": {
"crawl4ai-rag": {
"command": "python",
"args": ["path/to/crawl4ai-mcp/src/crawl4ai_mcp.py"],
"env": {
"TRANSPORT": "stdio",
"OPENAI_API_KEY": "your_openai_api_key",
"SUPABASE_URL": "your_supabase_url",
"SUPABASE_SERVICE_KEY": "your_supabase_service_key"
}
}
}
}
带Stdio配置的Docker
{
"mcpServers": {
"crawl4ai-rag": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "TRANSPORT",
"-e", "OPENAI_API_KEY",
"-e", "SUPABASE_URL",
"-e", "SUPABASE_SERVICE_KEY",
"mcp/crawl4ai"],
"env": {
"TRANSPORT": "stdio",
"OPENAI_API_KEY": "your_openai_api_key",
"SUPABASE_URL": "your_supabase_url",
"SUPABASE_SERVICE_KEY": "your_supabase_service_key"
}
}
}
}
构建自己的服务器
此实现为构建具有web爬行功能的更复杂的MCP服务器提供了基础。建立自己的:
- 通过使用创建方法来添加自己的工具
@mcp.tool()装饰器 - 创建自己的生命周期函数以添加自己的依赖项
- 修改
utils.py您需要的任何辅助函数的文件 - 通过添加更专业的爬虫来扩展爬行功能
