A

AI网络爬虫与RAG工具

网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。

web-scrapingrag-systems

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 服务器只是一个开始。我们的目标如下:

  1. 与 Archon 集成:直接将该系统构建到 Archon 中,创建一个全面的知识引擎,帮助 AI 编码助手构建更好的 AI 代理。

  2. 多种嵌入模型:扩展支持 OpenAI 之外的多种嵌入模型,包括通过 Ollama 在本地运行所有内容的能力,以实现完全控制和隐私保护。

  3. 高级 RAG 策略:实施上下文检索、延迟分块等复杂的检索技术,超越基本的“朴素查找”,显著增强 RAG 系统的功能和精度,特别是在与 Archon 集成时。

  4. 增强的分块策略:实施受 Context 7 启发的分块方法,专注于示例并为每个分块创建独特且语义上有意义的部分,从而提高检索精度。

  5. 性能优化:提高爬取和索引速度,使得快速索引新文档并在同一提示中利用它们变得更加现实。

特性

  • 智能 URL 检测:自动检测并处理不同类型的 URL(普通网页、站点地图、文本文件)
  • 递归爬取:跟随内部链接发现内容
  • 并行处理:高效地同时爬取多个页面
  • 内容分块:根据标题和大小智能分割内容,以便更好地处理
  • 向量搜索:对爬取的内容执行 RAG,可选地按数据源过滤以提高精度
  • 源检索:检索可用于过滤的源,以指导 RAG 过程

工具

服务器提供了四个关键的网络爬取和搜索工具:

  1. crawl_single_page:快速爬取单个网页并将内容存储在向量数据库中
  2. smart_crawl_url:根据提供的 URL 类型(站点地图、llms-full.txt 或需要递归爬取的普通网页)智能爬取整个网站
  3. get_available_sources:获取数据库中所有可用的源(域名)列表
  4. perform_rag_query:使用语义搜索查找相关内容,可选地按源过滤

前提条件

安装

使用 Docker(推荐)

  1. 克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag

  2. 构建 Docker 镜像: bash docker build -t mcp/crawl4ai-rag --build-arg PORT=8051 .

  3. 根据下面的配置部分创建一个 .env 文件

直接使用 uv(不使用 Docker)

  1. 克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag

  2. 如果你还没有安装 uv,请安装它: bash pip install uv

  3. 创建并激活虚拟环境: bash uv venv .venvScriptsactivate

    在 Mac/Linux 上:source .venv/bin/activate

  4. 安装依赖项: bash uv pip install -e . crawl4ai-setup

  5. 根据下面的配置部分创建一个 .env 文件

数据库设置

在运行服务器之前,你需要使用 pgvector 扩展来设置数据库:

  1. 进入你的 Supabase 仪表板中的 SQL 编辑器(如果需要的话,先创建一个新的项目)

  2. 创建一个新的查询并将 crawled_pages.sql 的内容粘贴进去

  3. 运行查询以创建必要的表和函数

配置

在项目根目录下创建一个 .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 服务器提供了一个基础。要构建你自己的服务器:

  1. 通过创建带有 @mcp.tool() 装饰器的方法来添加你自己的工具
  2. 创建你自己的生命周期函数以添加你自己的依赖项3. 根据需要修改 utils.py 文件以添加辅助函数
  3. 通过添加更多专门的爬虫来扩展爬取能力

服务配置

[{'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'}}}}]

来源