语义代码搜索工具

Claude LFR MCP 是一个基于 CPU 的快速语义代码搜索工具,使用可配置的嵌入模型和 Qdrant 向量数据库,无需 GPU 资源即可提供智能代码检索。

  • by MrTango
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MrTango/claude-lfr-mcp

使用说明

克劳德LFR MCP

Claude code的闪电般快速的基于CPU的语义代码搜索。使用可配置的嵌入模型和Qdrant矢量数据库提供智能代码检索,而不需要GPU资源。

快速开始

先决条件

需要一个正在运行的Qdrant实例。从Docker开始:

docker run -p 6333:6333 qdrant/qdrant

安装

uv tool install claude-lfr-mcp

Claude代码设置

将MCP服务器添加到Claude Code项目中:

claude mcp add claude-lfr -- claude-lfr-mcp

验证安装:

/mcp

你应该看看 claude-lfr 列出了可用的工具。

然后请克劳德 index codebase.

嵌入模型

此工具支持多种嵌入模型,允许您为用例选择速度、内存使用和检索质量之间的最佳折衷。

模型比较

型号 尺寸 大小 速度 质量 最适合
all-MiniLM-L6-v2 384 ~90MB 最快 良好 快速原型制作、CI管道、大型代码库
bge-small-en-v1.5 384 ~67MB 快速 良好+ 速度和精度的平衡
snowflake-arctic-embed-xs 384 ~90MB 快速 良好+ MiniLM的现代替代品
snowflake-arctic-embed-s 384 ~130MB 中等 更好 生产使用,速度需要
bge-base-en-v1.5 768 ~438MB 较慢 最好 默认 -最佳检索质量
nomic-embed-text-v1.5 768 ~130MB 中等 较好 使用Nomic生态系统时

型号详细信息

全迷你LM-L6-v2

  • ✅ 推理速度最快,内存占用最小
  • ✅ 无需查询前缀(使用更简单)
  • ❌ 检索精度低于大型模型
  • 最适合:CI/CD管道、快速迭代、速度很重要的超大代码库

bge-small-en-v1.5

  • ✅ 速度极快,精度优于MiniLM
  • ✅ 最小下载大小(约67MB)
  • ❌ 需要“query:”前缀(自动处理)
  • 最适合:日常开发,速度和质量的良好平衡

雪花北极嵌入xs/雪花实际嵌入s

  • ✅ 现代建筑,有竞争力的性能
  • ✅ 无需前缀
  • ❌ 不如BGE家族成熟
  • 最适合:需要现代替代品的生产部署

bge-base-en-v1.5 (默认)

  • ✅ 最佳检索质量,经过充分测试
  • ✅ 在代码搜索任务上表现出色
  • ❌ 模型尺寸较大(~438MB),推理速度较慢
  • 最适合:当精度是首要任务时,较小的代码库

nomic-embed-ext-v1.5

  • ✅ 尺寸和质量的良好平衡
  • ✅ 768尺寸紧凑~130MB封装
  • ❌ 使用不同的前缀约定(search_query/search_document)
  • 最适合:Nomic生态系统用户、中大型代码库

选择模型

优先级 推荐型号
速度优先 all-MiniLM-L6-v2
质量第一 bge-base-en-v1.5 (默认)
平衡的 bge-small-en-v1.5 或 snowflake-arctic-embed-s
现代+紧凑 nomic-embed-text-v1.5

配置模型

通过CLI标志:

claude-lfr-index --model all-MiniLM-L6-v2 -r /path/to/code

通过环境变量:

EMBEDDING_MODEL=bge-small-en-v1.5 claude-lfr-index

列出可用型号:

claude-lfr-index --list-models

注: 每个模型使用单独的Qdrant集合(例如。, code_bge_base_en_v15, code_minilm_l6_v2).你可以用以下命令覆盖它 QDRANT_COLLECTION.

MCP工具

工具 说明
search_code 通过自然语言查询和排名结果搜索索引代码
index_directory 为代码库目录建立索引以进行语义搜索
get_index_status 检查Qdrant收集状态和点数

高级用法

CLI工具

索引代码库:

REPO_ROOT=/path/to/your/codebase claude-lfr-index

搜索索引代码:

claude-lfr-search "authentication logic"
claude-lfr-search "database connection"

环境变量

变量 默认值 描述
QDRANT_URL http://localhost:6333 Qdrant服务器URL
QDRANT_API_KEY 无 Qdrant API密钥(可选)
QDRANT_COLLECTION 自动生成 集合名称(例如。, code_bge_base_en_v15)
EMBEDDING_MODEL bge-base-en-v1.5 嵌入要使用的模型(请参见 嵌入模型)
REPO_ROOT . 要索引的目录
MAX_FILES 0 要索引的最大文件数(0=无限制)

手动MCP配置

项目特定 (.mcp.json 在项目根中)或 用户全局 (~/.mcp.json):

{
  "mcpServers": {
    "claude-lfr": {
      "command": "claude-lfr-mcp"
    }
  }
}

使用uvx(无需安装):

{
  "mcpServers": {
    "claude-lfr": {
      "command": "uvx",
      "args": ["--from", "claude-lfr-mcp", "claude-lfr-mcp"]
    }
  }
}

替代克劳德代码命令:

# Add to project scope
claude mcp add claude-lfr -s project -- claude-lfr-mcp

# Add globally
claude mcp add claude-lfr -s user -- claude-lfr-mcp

# Using uvx
claude mcp add claude-lfr -- uvx --from claude-lfr-mcp claude-lfr-mcp

技术细节

运作原理

  1. 索引:遍历代码库,将文件分为80行,生成嵌入(384或768维,具体取决于型号),并分批向Qdrant升级256个
  2. 搜索:用模型适当的前缀嵌入查询,通过余弦相似度找到最相似的代码块

支持的文件类型

.py, .ts, .tsx, .js, .jsx, .rs, .go, .java, .cs, .php, .c, .cpp, .h, .hpp

忽略的目录

.git, node_modules, .venv, dist, build, __pycache__

发展

从源码安装

git clone https://gitlab.com/derico/claude-lfr-mcp.git
cd claude-lfr-mcp
uv sync
uv tool install -e .

在本地运行MCP服务器

uv run claude-lfr-mcp

开发MCP配置:

{
  "mcpServers": {
    "claude-lfr": {
      "command": "uv",
      "args": ["run", "claude-lfr-mcp"]
    }
  }
}

运行测试

安装开发依赖项并运行测试:

uv sync --extra dev
uv run pytest

运行覆盖率报告:

uv run pytest --cov=claude_lfr_mcp

运行特定测试文件:

uv run pytest tests/test_mcp_server.py -v

需求

  • Python 3.10+
  • 正在运行Qdrant实例