网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。
838 查看 · 2026-07-07 更新
简介
网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。
简介
网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。
Crawl4AI RAG MCP 服务器
为 AI 代理和 AI 编码助手提供网络爬取和 RAG 功能
这是一个强大的 Model Context Protocol (MCP) 实现,集成了 Crawl4AI 和 Supabase,旨在为 AI 代理和 AI 编码助手提供先进的网络爬取和 RAG 功能。
通过这个 MCP 服务器,你可以抓取任何内容,然后在 RAG 中随处使用这些知识。
主要目标是将这个 MCP 服务器集成到 Archon 中,随着我将其发展成为一个知识引擎,以帮助构建更好的 AI 代理。这个 Crawl4AI/RAG MCP 服务器的第一个版本很快将得到大幅改进,特别是使其更加可配置,以便你可以使用不同的嵌入模型,并通过 Ollama 在本地运行所有内容。
概览
此 MCP 服务器提供了工具,使 AI 代理能够爬取网站、将内容存储在向量数据库(Supabase)中,并对爬取的内容执行 RAG。它遵循了基于我之前在频道上提供的 Mem0 MCP 服务器模板 构建 MCP 服务器的最佳实践。
愿景
Crawl4AI RAG MCP 服务器只是一个开始。我们的目标如下:
-
与 Archon 集成:直接将该系统构建到 Archon 中,创建一个全面的知识引擎,帮助 AI 编码助手构建更好的 AI 代理。
-
多种嵌入模型:扩展支持 OpenAI 之外的多种嵌入模型,包括通过 Ollama 在本地运行所有内容的能力,以实现完全控制和隐私保护。
-
高级 RAG 策略:实施上下文检索、延迟分块等复杂的检索技术,超越基本的“朴素查找”,显著增强 RAG 系统的功能和精度,特别是在与 Archon 集成时。
-
增强的分块策略:实施受 Context 7 启发的分块方法,专注于示例并为每个分块创建独特且语义上有意义的部分,从而提高检索精度。
-
性能优化:提高爬取和索引速度,使得快速索引新文档并在同一提示中利用它们变得更加现实。
特性
- 智能 URL 检测:自动检测并处理不同类型的 URL(普通网页、站点地图、文本文件)
- 递归爬取:跟随内部链接发现内容
- 并行处理:高效地同时爬取多个页面
- 内容分块:根据标题和大小智能分割内容,以便更好地处理
- 向量搜索:对爬取的内容执行 RAG,可选地按数据源过滤以提高精度
- 源检索:检索可用于过滤的源,以指导 RAG 过程
工具
服务器提供了四个关键的网络爬取和搜索工具:
crawl_single_page:快速爬取单个网页并将内容存储在向量数据库中smart_crawl_url:根据提供的 URL 类型(站点地图、llms-full.txt 或需要递归爬取的普通网页)智能爬取整个网站get_available_sources:获取数据库中所有可用的源(域名)列表perform_rag_query:使用语义搜索查找相关内容,可选地按源过滤
前提条件
- 如果作为容器运行 MCP 服务器,则需要 Docker/Docker Desktop(推荐)
- 如果直接通过 uv 运行 MCP 服务器,则需要 Python 3.12+
- Supabase(用于 RAG 的数据库)- OpenAI API key(用于生成嵌入)
安装
使用 Docker(推荐)
-
克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag
-
构建 Docker 镜像: bash docker build -t mcp/crawl4ai-rag --build-arg PORT=8051 .
-
根据下面的配置部分创建一个
.env文件
直接使用 uv(不使用 Docker)
-
克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag
-
如果你还没有安装 uv,请安装它: bash pip install uv
-
创建并激活虚拟环境: bash uv venv .venvScriptsactivate
在 Mac/Linux 上:source .venv/bin/activate
-
安装依赖项: bash uv pip install -e . crawl4ai-setup
-
根据下面的配置部分创建一个
.env文件
数据库设置
在运行服务器之前,你需要使用 pgvector 扩展来设置数据库:
-
进入你的 Supabase 仪表板中的 SQL 编辑器(如果需要的话,先创建一个新的项目)
-
创建一个新的查询并将
crawled_pages.sql的内容粘贴进去 -
运行查询以创建必要的表和函数
配置
在项目根目录下创建一个 .env 文件,并包含以下变量:
MCP 服务器配置
HOST=0.0.0.0 PORT=8051 TRANSPORT=sse
OpenAI API 配置
OPENAI_API_KEY=your_openai_api_key
Supabase 配置
SUPABASE_URL=your_supabase_project_url SUPABASE_SERVICE_KEY=your_supabase_service_key
运行服务器
使用 Docker
bash docker run --env-file .env -p 8051:8051 mcp/crawl4ai-rag
使用 Python
bash uv run src/crawl4ai_mcp.py
服务器将启动并在配置的主机和端口上监听。
与 MCP 客户端集成
SSE 配置
一旦你使用 SSE 传输方式运行了服务器,你可以使用以下配置连接到它:
json { "mcpServers": { "crawl4ai-rag": { "transport": "sse", "url": "http://localhost:8051/sse" } } }
Windsurf 用户注意:在你的配置中使用
serverUrl而不是url: json { "mcpServers": { "crawl4ai-rag": { "transport": "sse", "serverUrl": "http://localhost:8051/sse" } } }Docker 用户注意:如果你的客户端运行在不同的容器中,请使用
host.docker.internal代替localhost。这适用于你在 n8n 中使用此 MCP 服务器的情况!
Stdio 配置
将此服务器添加到你的 MCP 配置中,适用于 Claude Desktop、Windsurf 或任何其他 MCP 客户端:
json { "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
json { "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" } } } }
构建你自己的服务器
这个实现为你构建具有网络爬虫功能的更复杂的 MCP 服务器提供了一个基础。要构建你自己的服务器:
- 通过创建带有
@mcp.tool()装饰器的方法来添加你自己的工具 - 创建你自己的生命周期函数以添加你自己的依赖项3. 根据需要修改
utils.py文件以添加辅助函数 - 通过添加更多专门的爬虫来扩展爬取能力
服务配置
[{'mcpServers': {'crawl4ai-rag': {'transport': 'sse', 'url': 'http://localhost:8051/sse'}}}, {'mcpServers': {'crawl4ai-rag': {'args': ['path/to/crawl4ai-mcp/src/crawl4ai_mcp.py'], 'command': 'python', 'env': {'NEO4J_PASSWORD': 'your_neo4j_password', 'NEO4J_URI': 'bolt://localhost:7687', 'NEO4J_USER': 'neo4j', 'OPENAI_API_KEY': 'your_openai_api_key', 'SUPABASE_SERVICE_KEY': 'your_supabase_service_key', 'SUPABASE_URL': 'your_supabase_url', 'TRANSPORT': 'stdio', 'USE_KNOWLEDGE_GRAPH': 'false'}}}}, {'mcpServers': {'crawl4ai-rag': {'args': ['run', '--rm', '-i', '-e', 'TRANSPORT', '-e', 'OPENAI_API_KEY', '-e', 'SUPABASE_URL', '-e', 'SUPABASE_SERVICE_KEY', '-e', 'USE_KNOWLEDGE_GRAPH', '-e', 'NEO4J_URI', '-e', 'NEO4J_USER', '-e', 'NEO4J_PASSWORD', 'mcp/crawl4ai'], 'command': 'docker', 'env': {'NEO4J_PASSWORD': 'your_neo4j_password', 'NEO4J_URI': 'bolt://localhost:7687', 'NEO4J_USER': 'neo4j', 'OPENAI_API_KEY': 'your_openai_api_key', 'SUPABASE_SERVICE_KEY': 'your_supabase_service_key', 'SUPABASE_URL': 'your_supabase_url', 'TRANSPORT': 'stdio', 'USE_KNOWLEDGE_GRAPH': 'false'}}}}]
来源
- 来源:github
- 链接:https://github.com/coleam00/mcp-crawl4ai-rag