项目简介
MCP-RAG是一个基于Python的先进系统,它将模型上下文协议(MCP)与检索增强生成(RAG)功能深度融合。该项目提供了一个全面的框架,用于智能网络爬取、内容处理、多模态数据处理、以及通过集成测试和评估系统实现自动化代码演进。它作为一个MCP服务器,以标准化的JSON-RPC协议向LLM客户端提供丰富的功能和上下文。
主要功能点
- 智能网络爬取: 利用Crawl4AI库进行高级网页抓取,支持网站地图、文本文件和常规网页的智能识别与处理,并将内容分块存储。
- 多模态处理: 支持文本、图像和结构化数据的内容处理,通过ColPali实现视觉文档理解,并可提取并存储不同类型的信息。
- 多源LLM与嵌入集成: 无缝集成OpenAI、Ollama和HuggingFace等多种大型语言模型和嵌入模型提供商,提供灵活的AI能力,支持多种嵌入模型和LLM模型。
- 自动化代码演进: 具备自我改进的代码库,能够进行自动化测试、依赖校验、代码调试和版本控制,实现持续的代码演进和系统自修复。
- RAG检索增强: 支持向量检索和关键词检索相结合的混合RAG查询,可针对文档内容和代码示例进行高效搜索,并可对结果进行重排序。
- 安全沙箱与资源管理: 提供安全的沙箱执行环境和资源监控,确保系统稳定与安全,并追踪API成本和系统负载。
- 性能与质量评估: 内置评估系统,衡量RAG查询的正确性、代码质量等,并能报告系统性能指标和演进趋势。
安装步骤
- 前提条件: 确保您的系统已安装 Python 3.8+ 和 SQLite。如果需要本地模型推理,建议配置GPU支持。
- 克隆仓库:
git clone https://github.com/vedantparmar12/MCP-RAG.git cd MCP-RAG - 安装依赖: 项目依赖列在 'requirements.txt' 文件中。执行以下命令安装:
(注意:此命令将安装核心依赖以及所有支持提供商的可选依赖,可能需要较长时间。)pip install -r requirements.txt - 环境配置:
- 在项目根目录创建 '.env' 文件。
- 配置外部API密钥(如OpenAI、Cohere)和Supabase数据库连接字符串。
- 根据您的需求,设置 'EMBEDDING_PROVIDER', 'LLM_PROVIDER', 'USE_RERANKING', 'USE_AGENTIC_RAG', 'USE_HYBRID_SEARCH', 'ENABLE_OLLAMA', 'ENABLE_HUGGINGFACE' 等环境变量,以启用或配置不同的功能。
- 示例 '.env' 配置:
SUPABASE_URL="YOUR_SUPABASE_URL" SUPABASE_SERVICE_KEY="YOUR_SUPABASE_SERVICE_KEY" OPENAI_API_KEY="YOUR_OPENAI_API_KEY" COHERE_API_KEY="YOUR_COHERE_API_KEY" EMBEDDING_PROVIDER="openai" # 或 "cohere", "ollama", "huggingface", "auto" LLM_PROVIDER="ollama" # 或 "huggingface", "auto" USE_RERANKING="true" USE_AGENTIC_RAG="true" # 启用代码示例提取和总结 USE_HYBRID_SEARCH="true" ENABLE_OLLAMA="true" # 启用Ollama提供商 OLLAMA_BASE_URL="http://localhost:11434" OLLAMA_LLM_MODEL="mistral:instruct" OLLAMA_EMBEDDING_MODEL="nomic-embed-text" HOST="0.0.0.0" PORT="8051" TRANSPORT="sse" # 或 "stdio" # 更多HuggingFace配置示例: ENABLE_HUGGINGFACE="true" HUGGINGFACE_API_TOKEN="YOUR_HUGGINGFACE_API_TOKEN" # 仅当HUGGINGFACE_LLM_USE_API="true"时需要 HUGGINGFACE_LLM_MODEL="microsoft/Phi-3-mini-4k-instruct" HUGGINGFACE_EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2" HUGGINGFACE_LLM_USE_API="false" # 设置为"true"使用HuggingFace Inference API HUGGINGFACE_LLM_DEVICE="cpu" # 或 "cuda", "mps" HUGGINGFACE_LLM_4BIT="false" # 启用4位量化 HUGGINGFACE_LLM_8BIT="false" # 启用8位量化
服务器配置(供MCP客户端使用)
MCP客户端需要以下JSON格式的配置信息才能连接到MCP-RAG服务器。请根据您的实际部署环境修改 'working_directory' 和 'env' 中的具体值,特别是API密钥和Supabase凭据等敏感信息。
{ "server_name": "mcp-crawl4ai-rag", "command": "python", "args": [ "src/crawl4ai_mcp.py" ], "env": { "TRANSPORT": "sse", "HOST": "0.0.0.0", "PORT": "8051", "SUPABASE_URL": "YOUR_SUPABASE_URL_HERE", "SUPABASE_SERVICE_KEY": "YOUR_SUPABASE_SERVICE_KEY_HERE", "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "COHERE_API_KEY": "YOUR_COHERE_API_KEY_HERE", "EMBEDDING_PROVIDER": "auto", "LLM_PROVIDER": "auto", "USE_RERANKING": "true", "USE_AGENTIC_RAG": "true", "USE_HYBRID_SEARCH": "true", "ENABLE_OLLAMA": "true", "OLLAMA_BASE_URL": "http://localhost:11434", "OLLAMA_LLM_MODEL": "mistral:instruct", "OLLAMA_EMBEDDING_MODEL": "nomic-embed-text", "ENABLE_HUGGINGFACE": "true", "HUGGINGFACE_API_TOKEN": "YOUR_HUGGINGFACE_API_TOKEN_HERE", "HUGGINGFACE_LLM_MODEL": "microsoft/Phi-3-mini-4k-instruct", "HUGGINGFACE_EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2", "HUGGINGFACE_LLM_USE_API": "false", "HUGGINGFACE_LLM_DEVICE": "cpu", "HUGGINGFACE_LLM_4BIT": "false", "HUGGINGFACE_LLM_8BIT": "false" }, "working_directory": "/path/to/your/MCP-RAG/repository", "description": "MCP-RAG服务器,提供RAG、网络爬取和AI自演进功能。请根据实际部署路径修改 'working_directory',并提供所有必要的API密钥、Supabase凭据等环境变量,或在系统环境中预设好。" }
基本使用方法
- 启动服务器:
在项目根目录下,运行MCP服务器。默认情况下,它会监听 '0.0.0.0:8051' 端口并使用 SSE 传输协议。
您可以通过设置 'TRANSPORT' 环境变量为 'stdio' 来使用标准输入输出传输:python src/crawl4ai_mcp.pyTRANSPORT=stdio python src/crawl4ai_mcp.py - 通过MCP客户端调用工具:
一旦服务器启动,MCP客户端即可通过JSON-RPC协议调用其暴露的工具。MCP-RAG暴露了多种工具,例如用于网络爬取、数据检索、系统自修复等。
- 示例:智能爬取URL
假设您已设置好MCP客户端并成功连接到MCP-RAG服务器。您可以使用客户端调用 'smart_crawl_url' 工具来智能爬取网页并存储内容:
# 假设您的MCP客户端对象名为 'mcp_client' response = mcp_client.call_tool("smart_crawl_url", {"url": "https://docs.python.org/3/", "max_depth": 2}) print(response) - 示例:获取可用数据源
在执行RAG查询之前,您可以先调用 'get_available_sources' 工具来查看已爬取并存储的数据源:
response = mcp_client.call_tool("get_available_sources", {}) print(response) - 示例:执行RAG查询
获取数据源后,您可以调用 'perform_rag_query' 工具进行检索增强查询。'source' 参数应使用 'get_available_sources' 返回的 'source_id':
response = mcp_client.call_tool("perform_rag_query", {"query": "How to define a function in Python?", "source": "docs.python.org"}) print(response) - 示例:系统自修复
如果系统出现问题,可以通过 'self_heal_system' 工具触发自动化诊断和修复流程:
response = mcp_client.call_tool("self_heal_system", {"issue_description": "The RAG query is returning stale results from the cache."}) print(response)
- 示例:智能爬取URL
假设您已设置好MCP客户端并成功连接到MCP-RAG服务器。您可以使用客户端调用 'smart_crawl_url' 工具来智能爬取网页并存储内容:
信息
分类
AI与计算