项目简介
'qdrant-neo4j-crawl4ai-mcp' 是一个功能强大的统一智能服务器,它将 Qdrant 向量数据库、Neo4j 知识图谱和 Crawl4AI 网页智能服务整合在一起,并通过 Model Context Protocol (MCP) 标准协议对外提供服务。它旨在为 AI 助手和大型语言模型(LLM)客户端提供丰富的、可扩展的上下文信息、外部功能调用以及定制化的交互模式,是构建高级 AI 应用的关键后端。
主要功能点
- 多源智能集成: 无缝整合向量搜索(Qdrant)、知识图谱(Neo4j)和网页智能(Crawl4AI),提供多模态数据处理能力。
- 上下文服务: 通过标准化的 MCP 协议,向 LLM 客户端提供托管资源、调用工具和获取 Prompt 模板的能力。
- 高级搜索: 支持语义向量搜索和基于知识图谱的结构化查询,实现更精准的数据检索。
- 知识提取: 利用 AI 能力从文本和网页内容中自动提取实体、关系和概念,构建和丰富知识图谱。
- 网页智能: 提供网站爬取、内容提取、屏幕截图以及网页变化监控功能。
- 安全与监控: 内置 JWT 认证、API 密钥管理、速率限制、安全头策略及 Prometheus 指标收集,确保生产环境的稳定和安全。
- 可扩展架构: 采用 FastAPI 框架和异步设计,支持 Docker 和 Kubernetes 部署,易于扩展和维护。
安装步骤
-
克隆仓库:
git clone https://github.com/Hyperkorn/qdrant-neo4j-crawl4ai-mcp.git cd qdrant-neo4j-crawl4ai-mcp -
创建并激活虚拟环境:
python3 -m venv venv source venv/bin/activate # 适用于 macOS/Linux # 或 .venv\Scripts\activate # 适用于 Windows -
安装依赖:
pip install -r requirements.txt -
配置环境变量:
- 复制 '.env.example' 文件为 '.env':
cp .env.example .env - 编辑 '.env' 文件,根据您的实际部署环境配置以下关键信息:
- 'QDRANT_URL': Qdrant 向量数据库的服务地址 (例如: 'http://localhost:6333')
- 'NEO4J_URI': Neo4j 图数据库的服务 URI (例如: 'bolt://localhost:7687')
- 'NEO4J_USER': Neo4j 用户名
- 'NEO4J_PASSWORD': Neo4j 密码
- 'OPENAI_API_KEY': 如果启用 GraphRAG(知识图谱增强生成)功能,需要配置 OpenAI API 密钥。
- 'JWT_SECRET_KEY': 用于 JWT 认证的密钥,请设置为一个强随机字符串。
- 'ADMIN_API_KEY': 用于管理员 API 访问的密钥,请设置为一个强随机字符串。
- 其他如 'HOST', 'PORT', 'LOG_LEVEL' 等可根据需要调整。
- 复制 '.env.example' 文件为 '.env':
-
启动外部服务:
- 确保 Qdrant 和 Neo4j 服务正在运行。如果您使用 Docker,可以使用以下命令启动:
# 启动 Qdrant 向量数据库 docker run -p 6333:6333 qdrant/qdrant # 启动 Neo4j 图数据库 (首次运行需要设置密码) docker run -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/<您的密码> neo4j - Crawl4AI 网页智能服务是集成在服务器内部的,不需要单独启动。
- 确保 Qdrant 和 Neo4j 服务正在运行。如果您使用 Docker,可以使用以下命令启动:
-
启动服务器:
python src/qdrant_neo4j_crawl4ai_mcp/main.py服务器将在配置的端口(默认为 'http://0.0.0.0:8000')启动。
MCP服务器配置
当 MCP 客户端需要连接此服务器时,需要提供以下 JSON 格式的配置信息。这些信息将指导客户端如何通过 JSON-RPC 与服务器通信。
{ "server_name": "Unified MCP Intelligence Server", "command": ["python"], "args": ["src/qdrant_neo4j_crawl4ai_mcp/main.py"], "description": "提供向量搜索、知识图谱和网页智能的统一MCP服务,支持AI应用获取上下文和调用外部功能。", "protocol_version": "2024-11-05", "rpc_endpoint": "/mcp", "authentication": { "type": "bearer", "get_token_endpoint": "/auth/token", "token_request_body": { "username": "client_user", "scopes": ["read", "write"] }, "token_response_field": "access_token" }, "capabilities": { "initialize": true, "initialized": true, "ping": true, "tools/list": true, "tools/call": true, "resources/list": true, "resources/read": true, "prompts/list": true, "prompts/get": true, "completion/complete": true, "roots/list": true, "sampling/createMessage": true, "logging/setLevel": true }, "health_check_endpoint": "/health" }
配置说明:
- 'server_name': 服务器的名称,用于客户端识别。
- 'command': 启动 MCP 服务器所使用的命令。
- 'args': 启动命令的参数列表。
- 'description': 服务器功能的简要描述。
- 'protocol_version': 服务器支持的 MCP 协议版本。
- 'rpc_endpoint': MCP 客户端应向此路径发送 JSON-RPC 请求。
- 'authentication': 描述客户端如何进行身份验证。
- 'type': 认证类型,此处为 'bearer' (JWT)。
- 'get_token_endpoint': 客户端获取 JWT 令牌的 API 端点。
- 'token_request_body': 客户端请求令牌时需要发送的 JSON 请求体示例。
- 'token_response_field': 令牌在 API 响应中所在的字段名。
- 'capabilities': 服务器支持的 MCP 核心功能列表,此处列出了所有已知的 MCP 方法,表明服务器提供了全面的 MCP 功能。
- 'health_check_endpoint': 用于检查服务器健康状态的 API 端点。
基本使用方法
- 获取访问令牌: 客户端首先需要通过 'POST /auth/token' 端点获取 JWT 访问令牌。
- 请求示例:
{ "username": "your_user", "scopes": ["read", "write"] } - 响应将包含 'access_token',客户端在后续请求中需将其放入 'Authorization: Bearer <token>' 请求头。
- 请求示例:
- 调用 MCP 工具:
- 服务器提供了多种 MCP 工具(例如,'store_vector_document' 用于存储向量文档、'semantic_vector_search' 用于向量搜索、'create_graph_node' 用于创建图节点、'crawl_web_page' 用于网页爬取等)。
- 客户端可以通过 'POST /mcp' 端点发送 JSON-RPC 请求,其中 'method' 字段为工具名称,'params' 字段为工具所需的参数。
- 例如,调用 'semantic_vector_search' 工具进行向量搜索:
{ "jsonrpc": "2.0", "id": 1, "method": "semantic_vector_search", "params": { "query": "What is machine learning?", "collection_name": "demo_collection", "limit": 5 } } - 客户端还可以调用 'tools/list' 方法获取所有可用工具的列表及其详细描述。
- 探索 API: 访问服务器的 '/docs' (Swagger UI) 或 '/redoc' (ReDoc) 地址,可以查看所有可用的 REST API 端点和 MCP 工具的详细文档。
信息
分类
AI与计算