项目简介
Context-Engine 是一个功能强大的应用后端,它遵循 Model Context Protocol (MCP) 规范,专为与大型语言模型 (LLM) 客户端集成而设计。其核心目标是为 LLM 提供结构化的上下文信息,例如代码仓库内容和用户记忆,并允许 LLM 调用一系列预定义工具来执行特定任务,如代码搜索、文件索引和记忆存储。通过 SSE (Server-Sent Events) 协议进行通信,Context-Engine 提供了一个安全、可扩展的上下文服务框架。
主要功能点
- 智能代码搜索: 能够对整个代码仓库进行深度搜索,支持多查询、语言过滤、路径过滤、符号匹配、模糊匹配和智能重排序等高级功能,帮助LLM快速定位相关代码片段。
- 记忆存储与检索: 允许LLM存储和查找关键信息、偏好或笔记,作为长期记忆,以增强对话的连贯性和实用性。
- 代码仓库管理: 提供工具来索引新的代码文件、更新现有索引、清除过期或不一致的数据,确保LLM始终拥有最新的代码上下文。
- 上下文融合: 能够将代码搜索结果与记忆检索结果智能地融合,为LLM提供更全面、丰富的上下文。
- 可扩展工具集: 除了核心功能,还支持集成自定义工具,扩展LLM与外部系统交互的能力。
安装步骤
- 克隆仓库: 首先,将 Context-Engine 项目克隆到您的本地机器上。
- 安装 Docker 及 Compose: 确保您的系统已安装 Docker 和 Docker Compose。这是运行 Context-Engine 及其依赖项(如 Qdrant 向量数据库)的推荐方式。
- 启动服务: 在项目根目录下,运行以下命令启动所有必要的服务:
此命令将启动 Qdrant 数据库、Memory MCP 服务器 (端口 8000)、Indexer MCP 服务器 (端口 8001) 以及一个初始的代码索引器。HOST_INDEX_PATH="$(pwd)" FASTMCP_INDEXER_PORT=8001 docker compose up -d qdrant mcp mcp_indexer indexer - 验证服务: 可以通过以下 'curl' 命令快速检查服务是否成功运行:
如果一切正常,您将看到 "Qdrant OK" 和其他服务的 HTTP 响应头。curl -sSf http://localhost:6333/readyz >/dev/null && echo "Qdrant OK" curl -sI http://localhost:8000/sse | head -n1 curl -sI http://localhost:801/sse | head -n1
服务器配置 (MCP客户端使用)
Context-Engine 提供了两个主要的 MCP 服务器端点,您可以根据需要将其配置到您的 MCP 客户端(如 Kiro, Windsurf, Cursor, Augment 或 Qodo)。以下是常见的 JSON 格式配置示例及参数说明(请根据您的实际客户端要求调整):
Memory MCP 服务器配置: 此服务器专注于存储和检索用户记忆及通用信息。
{ "mcpServers": { "memory-mcp-server": { "type": "sse", "url": "http://localhost:8000/sse", "disabled": false, "description": "用于存储和检索用户记忆及通用信息的MCP服务器。提供以下工具:store (存储信息), find (查找信息)。" } } }
- 服务器名称 (例如 'memory-mcp-server'): 在MCP客户端中识别此服务器的唯一名称。
- 传输协议 ('type'): 指示服务器使用的通信协议,这里是 'sse' (Server-Sent Events)。
- 服务器URL ('url'): Memory MCP 服务器的监听地址和端口。
- 禁用状态 ('disabled'): 设置为 'false' 表示启用此服务器。
- 描述 ('description'): 对服务器功能及提供工具的简要说明,帮助LLM客户端理解其能力。
Indexer MCP 服务器配置: 此服务器专注于管理代码索引、执行高级代码搜索以及提供记忆存储功能(可选)。
{ "mcpServers": { "indexer-mcp-server": { "type": "sse", "url": "http://localhost:8001/sse", "disabled": false, "description": "用于管理代码索引和执行高级代码搜索的MCP服务器。提供以下工具:qdrant_list (列出Qdrant集合), qdrant_index (索引代码仓库或子目录), qdrant_index_root (索引整个仓库根目录), qdrant_prune (清除过期索引点), qdrant_status (获取索引状态), repo_search (通用代码搜索), code_search (repo_search 的别名), context_search (结合代码和记忆的上下文搜索), memory_store (在此服务器上存储记忆)。" } } }
- 服务器名称 (例如 'indexer-mcp-server'): 在MCP客户端中识别此服务器的唯一名称。
- 传输协议 ('type'): 指示服务器使用的通信协议,这里是 'sse'。
- 服务器URL ('url'): Indexer MCP 服务器的监听地址和端口。
- 禁用状态 ('disabled'): 设置为 'false' 表示启用此服务器。
- 描述 ('description'): 对服务器功能及提供工具的简要说明,帮助LLM客户端理解其能力。
基本使用方法
一旦 MCP 服务器启动并配置到您的 LLM 客户端,LLM 就可以通过调用这些服务器暴露的工具来与您的代码库和记忆进行交互。
-
进行代码搜索 (通过 'indexer-mcp-server'): LLM 可以调用 'repo_search' 或 'code_search' 工具,并提供查询字符串和可选的过滤参数(如语言、路径前缀、代码类型等),以获取相关的代码片段。 LLM请求示例: "请帮我查找项目中使用 Python 编写的,与用户认证相关的函数。" 对应工具调用: 'indexer-mcp-server.repo_search({"query": "user authentication function", "language": "python"})'
-
存储用户记忆 (通过 'memory-mcp-server' 或 'indexer-mcp-server'): LLM 可以调用 'store' (Memory MCP) 或 'memory_store' (Indexer MCP) 工具,提供一段文本信息和可选的元数据,将其保存为长期记忆。 LLM请求示例: "记住,用户更喜欢在所有界面中使用深色主题。" 对应工具调用: 'memory-mcp-server.store({"information": "用户偏好:总是使用深色主题", "metadata": {"kind": "preference"}})'
-
检索用户记忆 (通过 'memory-mcp-server'): LLM 可以调用 'find' (Memory MCP) 工具,提供一个查询字符串,以检索之前存储的相关记忆条目。 LLM请求示例: "用户有什么特殊偏好?" 对应工具调用: 'memory-mcp-server.find({"query": "user preferences"})'
-
上下文融合搜索 (通过 'indexer-mcp-server'): LLM 可以调用 'context_search' 工具,通过设置 'include_memories: true' 来同时搜索代码和记忆,获得融合后的上下文结果。 LLM请求示例: "结合我的记忆,查找与用户登录流程相关的代码。" 对应工具调用: 'indexer-mcp-server.context_search({"query": "user login flow", "include_memories": true})'
信息
分类
AI与计算