mcpField
E
Embgrep

Embgrep

本地服务
github.com/QuartzUnit搜索与检索028 周前更新

关于 Embgrep

Embgrep 为开发者及 Agent 提供本地语义搜索,可按含义检索代码库和文档。它使用本地嵌入、SQLite 存储和增量索引,无需外部服务。

主要功能

  1. 01本地生成嵌入向量
  2. 02单文件 SQLite 索引
  3. 03按文件变更增量索引
  4. 04按代码与标题分块
  5. 05支持 15 种以上文件类型

适用场景

  1. 01按意图而非关键词查找代码
  2. 02用自然语言搜索项目文档
  3. 03文件变更后更新索引

MCP 相关

Embgrep 提供 FastMCP 服务,支持索引目录、搜索已索引文件、查看索引状态和更新索引等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arknill-embgrep": {
"command": "uvx",
"args": [
"embgrep"
]
}
}
}
启动命令uvx embgrep

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiembgrep0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

embgrep

韩文文档 · llms.txt

本地语义搜索——为文件提供由嵌入向量驱动的 grep,无需外部服务。

PyPI Python License: MIT

按含义而非仅按关键词搜索代码库和文档。embgrep 会将文件索引为本地嵌入向量,并支持语义查询——无需 API 密钥、云服务或向量数据库服务。

功能

  • 本地嵌入向量 — 使用 fastembed(ONNX Runtime),无需 API 密钥
  • SQLite 存储 — 单文件索引,无需外部向量数据库
  • 增量索引 — 仅重新索引已更改的文件(通过 SHA-256 哈希值比较)
  • 智能分块 — 代码按函数级别拆分,文档按标题级别拆分
  • 原生支持 MCP — 提供 4 个工具的 FastMCP 服务,可集成 LLM Agent
  • 支持 15 种以上文件类型 — .py、.js、.ts、.java、.go、.rs、.md、.txt、.yaml、.json、.toml 等

安装

pip install embgrep              # core (fastembed + numpy)
pip install embgrep[cli]         # + click/rich CLI
pip install embgrep[mcp]         # + FastMCP server
pip install embgrep[all]         # everything

快速开始

Python API
from embgrep import EmbGrep

eg = EmbGrep()

# Index a directory
eg.index("./my-project", patterns=["*.py", "*.md"])

# Semantic search
results = eg.search("database connection pooling", top_k=5)
for r in results:
    print(f"{r.file_path}:{r.line_start}-{r.line_end} (score: {r.score:.4f})")
    print(f"  {r.chunk_text[:80]}...")

# Incremental update (only changed files)
eg.update()

# Index statistics
status = eg.status()
print(f"{status.total_files} files, {status.total_chunks} chunks, {status.index_size_mb} MB")

eg.close()
CLI
# Index a project
embgrep index ./my-project --patterns "*.py,*.md"

# Search
embgrep search "error handling patterns"

# Filter by file type
embgrep search "async database query" --path-filter "%.py"

# Check status
embgrep status

# Update changed files
embgrep update
便捷函数
import embgrep

embgrep.index("./src")
results = embgrep.search("authentication middleware")
status = embgrep.status()
embgrep.update()

MCP 服务

将其添加到 Claude Desktop / MCP 客户端配置中:

{
  "mcpServers": {
    "embgrep": {
      "command": "embgrep-mcp"
    }
  }
}

也可以使用 uvx:

{
  "mcpServers": {
    "embgrep": {
      "command": "uvx",
      "args": ["--from", "embgrep[mcp]", "embgrep-mcp"]
    }
  }
}
MCP 工具
工具描述
index_directory为目录中的文件建立索引,以便进行语义搜索
semantic_search使用自然语言搜索已建立索引的文件
index_status获取当前索引统计信息
update_index增量更新——仅重新索引已更改的文件

工作原理

flowchart TD
    A["📁 Files"] --> B["Smart Chunking\ncode: function-level\ndocs: heading-level"]
    B --> C["fastembed\nlocal embeddings"]
    C --> D["SQLite\nvector index"]
    D --> E["🔍 Query"]
    E --> F["Cosine Similarity\nranked results"]
    F --> G["✅ Matches\nwith context"]
  1. 分块 — 将文件拆分为语义上有意义的块:

    • 代码文件(.py、.js、.ts 等):按函数/类边界拆分
    • 文档(.md、.txt):按标题或段落分隔符拆分
    • 配置文件:按固定大小分块
  2. 嵌入 — 通过 ONNX Runtime 使用 BGE-small-en-v1.5 将每个块转换为 384 维向量(无需 PyTorch)

  3. 存储 — 将嵌入向量作为 BLOB 存储在本地 SQLite 数据库中

  4. 搜索 — 将查询文本转换为嵌入向量,并使用余弦相似度与所有块进行比较

配置

参数默认值描述
db_path~/.local/share/embgrep/embgrep.dbSQLite 数据库位置
modelBAAI/bge-small-en-v1.5fastembed 模型名称
max_chunk_size1000 chars固定大小拆分时的最大块大小
top_k5搜索结果数量

QuartzUnit 生态系统

软件包描述
markgrab将 HTML/YouTube/PDF/DOCX 转换为适用于 LLM 的 Markdown
snapgrab将 URL 转换为截图和元数据
docpickOCR + LLM 文档结构提取
browsegrab本地 LLM 浏览器 Agent
feedkitRSS 源收集 + MCP
embgrep针对文件的本地语义搜索

使用于

  • newswatch — RSS 新闻监控工作流(feedkit → markgrab → embgrep → diffgrab)

许可证

MIT


属于 QuartzUnit 生态系统——一系列可组合的 Python 库,用于数据收集、提取、搜索和 AI Agent 安全。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。