项目简介

该项目实现了一个工具,能够对特定的Spryker项目代码库进行语义搜索。通过利用LLM生成的代码嵌入(Embeddings)和向量数据库ChromaDB,它可以帮助开发者快速找到与自然语言查询相关的Spryker模块API和配置信息。同时,它也实现了Model Context Protocol (MCP) 服务器接口,允许兼容的LLM客户端(如Claude、JetBrains AI Assistant等)将项目代码上下文整合到其交互中。

主要功能点

  • 代码库索引: 自动索引Spryker项目中的关键API类型,包括Facade、Client、Service、Plugin接口以及Module Config类。
  • 语义搜索: 使用代码的名称、结构和DocBlock信息生成嵌入,实现基于语义理解的自然语言搜索。
  • 结果展示: 提供与查询相关的代码片段,并包含指向原始文件及其行号的链接。
  • 类型过滤: 支持基于检测到的类型(如Plugin, Facade等)对搜索结果进行过滤。
  • LLM集成: 作为MCP服务器,向兼容的LLM客户端暴露代码搜索能力,为LLM提供项目代码上下文。
  • 安全: 在本地运行,仅提取语义信息,不暴露敏感项目数据。

安装步骤

  1. 确保系统已安装 Docker、Docker Compose、Composer 和 Bash。
  2. 将此仓库克隆到您的Spryker项目根目录:
    git clone [email protected]:vitaliiivanovspryker/spryker-project-semantic-search.git &&
    echo "/spryker-project-semantic-search/" >> .git/info/exclude &&
    cd spryker-project-semantic-search &&
    cp php/.env.example php/.env
  3. 根据项目需求配置 'spryker-project-semantic-search/php/.env' 文件。
  4. 运行安装脚本。此脚本将启动必要的Docker容器(包括Ollama和ChromaDB),安装Composer依赖,拉取嵌入模型,并对Spryker项目进行索引(此步骤可能需要5-20分钟)。
    bash install

安装完成后,项目已准备好作为CLI工具使用,或作为MCP服务器等待客户端连接。

服务器配置

本仓库包含一个MCP服务器实现(位于 'mcp/src/index.js'),它是一个Node.js脚本,通过Stdio传输协议与MCP客户端通信。要使兼容的LLM客户端能够使用此服务器,您需要在客户端中配置如何启动此服务器进程。

典型的MCP客户端配置需要指定:

  • 服务器名称 (name): 例如 "Spryker Project Semantic Search"。
  • 启动命令 (command): 执行Node.js程序的命令,例如 'node'。
  • 命令参数 (args): 传递给命令的参数,指向MCP服务器脚本的路径,例如 'mcp/src/index.js'。

确切的命令和参数可能取决于您的项目安装路径和客户端的具体配置方式。您需要确保客户端能够找到并执行 'mcp/src/index.js' 脚本。安装脚本 ('bash install') 会设置Docker环境,确保 Node.js 和必要的依赖是可用的。一个可能的启动方式是在安装后,通过Docker容器执行Node.js脚本,例如 'docker exec -i [容器名称] node /path/to/your/project/spryker-project-semantic-search/mcp/src/index.js'。请查阅您的MCP客户端文档,了解如何配置外部MCP服务器以及如何指定工作目录或其他环境变量。

基本使用方法

作为MCP服务器运行时,您无需直接与此工具交互。兼容的LLM客户端(如配置了此MCP服务器的Claude或JetBrains AI Assistant)将自动与服务器通信。当您在LLM客户端中提出与Spryker代码相关的问题时,LLM客户端会调用此MCP服务器提供的“search”工具,将您的查询发送给服务器。服务器执行语义搜索,并将结果(相关的代码片段、文件链接等)返回给客户端。客户端随后可能会利用这些上下文信息来生成更准确和相关的回答。

例如,在您的LLM客户端中提问:“How to add a new item to the cart?” (如何在购物车中添加新商品?) LLM客户端可能会通过MCP协议调用此服务器的“search”工具,服务器搜索并返回相关的购物车Facade或Plugin代码,客户端再结合这些信息为您提供答案。

信息

分类

开发者工具