项目简介

Snippets是一个基于AI的智能代码仓库系统。它能够自动从GitHub仓库中提取、处理和索引代码片段,存储到可搜索的向量数据库中。通过实现Model Context Protocol (MCP) 服务器,它能够无缝集成到LLM开发环境(如Claude Code),为LLM客户端提供强大的语义搜索能力,帮助开发者快速发现相关的代码示例和模式。

主要功能点

  • 自动化仓库处理: 自动从指定的GitHub仓库(包括私有仓库)克隆、分析并提取有意义的代码片段。
  • AI代码分析与嵌入: 利用Claude Code等AI代理分析代码并生成摘要和描述,并通过Google Gemini模型将代码片段转换为语义向量嵌入。
  • 语义搜索: 基于Qdrant向量数据库实现语义搜索,允许用户通过自然语言描述来查找代码的含义和功能,而非仅仅依赖关键词。
  • MCP集成: 通过Model Context Protocol (MCP) 标准协议,将代码片段搜索能力作为工具暴露给LLM客户端,实现可定制的LLM交互模式。
  • Web界面: 提供用户友好的Web界面进行仓库管理(添加/删除/监控)、处理进度监控和代码片段探索。
  • Docker部署: 提供完整的Docker容器化设置和Docker Compose文件,方便快速、一致地部署所有服务组件。

安装步骤

  1. 克隆仓库: 在终端中执行以下命令,将Snippets仓库克隆到本地并进入项目目录:

    git clone https://github.com/cheolwanpark/snippets
    cd snippets
  2. 配置环境:

    • 复制环境变量示例文件:
      cp docker/.env.example docker/.env
    • 使用文本编辑器打开 'docker/.env' 文件,并填入您的API密钥:
      • 'CLAUDE_CODE_OAUTH_TOKEN=您的Claude API令牌'
        • (如何获取:在终端中运行 'claude setup-token' 并按照提示操作)
      • 'EMBEDDING_API_KEY=您的Google Gemini API密钥'
      • 'GITHUB_TOKEN=您的GitHub个人访问令牌' (可选,如果您需要处理私有GitHub仓库,请提供此令牌)
      • 'COHERE_API_KEY=您的Cohere API密钥' (可选,用于对搜索结果进行更精准的重排)
      • 其他端口和数据库配置(如 'FRONT_PORT'、'MCP_PORT' 等)可根据您的需要进行修改,MCP服务器默认端口为 '8080'。
  3. 启动服务: 进入 'docker' 目录并运行Docker Compose命令,这将启动所有必要的服务:

    cd docker
    docker-compose up -d

    所有服务启动后,您可以通过以下地址访问:

    • 前端Web界面: 'http://localhost:3000'
    • API服务器: 'http://localhost:8000'
    • MCP服务器: 'http://localhost:8080/mcp'
    • Qdrant向量数据库: 'http://localhost:6333'

服务器配置(MCP客户端连接设置)

本Snippets MCP服务器作为一个独立的HTTP服务运行。MCP客户端(例如Claude Code)需要配置连接信息才能发现并使用此服务器提供的工具。以下是配置 MCP 客户端连接 Snippets 服务器所需的信息:

  • 服务器名称: 'snippets' (在MCP客户端中识别此MCP服务器的名称,可自定义)
  • 传输协议: 'http'
  • 服务器URL: 'http://localhost:8080/mcp' (这是Snippets MCP服务器的HTTP访问地址)

MCP客户端连接示例 (用于 'claude mcp add' 命令):

要在Claude Code客户端中配置连接,请在您的终端中执行以下命令:

# 在您的项目目录中执行此命令,将Snippets服务器添加到Claude Code的可用MCP服务器列表
claude mcp add --transport http snippets http://localhost:8080/mcp

# 或者,如果您想在用户级别进行全局配置:
claude mcp add -s user --transport http snippets http://localhost:8080/mcp

通过以上配置,Claude Code客户端即可发现并使用Snippets MCP服务器提供的 'search' 工具。

基本使用方法

  1. 访问Web界面: 在您的浏览器中打开 'http://localhost:3000'。

  2. 添加GitHub仓库:

    • 在Web界面的 'Embed' 标签页中,输入您希望处理的GitHub仓库的URL(例如 'https://github.com/user/repo')。
    • 您可以选择配置分支、文件包含/排除模式、最大文件大小等选项。
    • 点击 'Embed' 按钮,系统将开始自动克隆仓库、分析代码并提取片段。
  3. 监控处理进度: 在Web界面上您可以实时查看仓库的处理状态和进度。

  4. 搜索代码片段 (通过Web界面):

    • 当仓库处理完成后,切换到 'Query' 标签页。
    • 在搜索框中输入自然语言查询(例如 "How to handle errors in Python FastAPI"、"JWT authentication middleware")。
    • 系统将返回与您查询相关的代码片段结果。
  5. 搜索代码片段 (通过LLM客户端): 一旦您按照上述步骤配置了MCP客户端连接,您就可以在LLM客户端中直接使用Snippets服务器提供的 'search' 工具来查找代码片段,例如:

    # 查找Python中的错误处理模式
    search error handling patterns in Python. use snippets.
    
    # 查找JWT认证中间件
    search JWT authentication middleware. use snippets.
    
    # 针对特定语言的搜索
    search async database queries in Go. use snippets.

    'search' 工具支持以下参数(通常LLM会自动识别并配置):

    • 'query': 您的自然语言搜索查询。
    • 'limit': 返回结果的最大数量(默认10,可调整至20-50)。
    • 'repo_name': 可选,将搜索结果限制在特定的仓库名称。
    • 'language': 可选,将搜索结果限制在特定的编程语言。

信息

分类

开发者工具