QuartzUnit/embgrep
Local semantic search — embedding-powered grep for files, zero external services
Platform-specific configuration:
{
"mcpServers": {
"embgrep": {
"command": "npx",
"args": [
"-y",
"embgrep"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
Local semantic search — embedding-powered grep for files, zero external services.
[](https://pypi.org/project/embgrep/) [](https://pypi.org/project/embgrep/) [](https://opensource.org/licenses/MIT)
Search your codebase and documentation by *meaning*, not just keywords. embgrep indexes files into local embeddings and lets you run semantic queries — no API keys, no cloud services, no vector database servers.
.py, .js, .ts, .java, .go, .rs, .md, .txt, .yaml, .json, .toml, and morepip install embgrep # core (fastembed + numpy)
pip install embgrep[cli] # + click/rich CLI
pip install embgrep[mcp] # + FastMCP server
pip install embgrep[all] # everythingfrom 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()# Index a project
embgrepLoading reviews...