
Embgrep
io.github.ArkNillPublished by GitHub account ArkNillv0.1.0Updated Oct 24, 2026
Local semantic search — embedding-powered grep for files, zero external services.
Overview
Embgrep is a local MCP server that indexes files into embeddings and lets an assistant run semantic searches over a codebase or documentation.
- What you can do
- It exposes four tools: index_directory to index files in a directory, semantic_search to query indexed files in natural language, index_status for index statistics, and update_index for incremental re-indexing of changed files. Files are split into function-level or heading-level chunks, embedded locally with fastembed and ONNX Runtime, and stored as vectors in a single SQLite file. Search ranks chunks by cosine similarity and returns file paths, line ranges, and scores.
- When to use it
- Use it when an assistant needs to find code or documentation by meaning rather than exact keywords, for example locating authentication middleware or database connection pooling logic. It suits local projects where you want semantic search without sending file contents to a cloud service or running a separate vector database.
- Requirements
- Runs as a local process on the user's machine, installed from PyPI as embgrep with the mcp extra (for example via uvx). It needs a Python environment with fastembed and numpy, and downloads the BAAI/bge-small-en-v1.5 model on first use. No API keys, accounts, or external services are required. The index is stored by default at ~/.local/share/embgrep/embgrep.db.
Installation
In SourceWeft
- Open Embgrep in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
embgrep
Local semantic search — embedding-powered grep for files, zero external services.
[PyPI] [Python] [License: 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.
Features
- Local embeddings — Uses fastembed (ONNX Runtime), no API keys needed
- SQLite storage — Single-file index, no external vector DB
- Incremental indexing — Only re-indexes changed files (SHA-256 hash comparison)
- Smart chunking — Function-level splitting for code, heading-level for docs
- MCP native — 4-tool FastMCP server for LLM agent integration
- 15+ file types —
.py,.js,.ts,.java,.go,.rs,.md,.txt,.yaml,.json,.toml, and more
Install
Quick Start
Python API
CLI
Convenience functions
MCP Server
Add to your Claude Desktop / MCP client configuration:
Or with uvx:
MCP Tools
How It Works
-
Chunking — Files are split into semantically meaningful chunks:
- Code files (
.py,.js,.ts, etc.): split by function/class boundaries - Documents (
.md,.txt): split by headings or paragraph breaks - Config files: fixed-size chunking
- Code files (
-
Embedding — Each chunk is converted to a 384-dimensional vector using BGE-small-en-v1.5 via ONNX Runtime (no PyTorch needed)
-
Storage — Embeddings are stored as BLOBs in a local SQLite database
-
Search — Query text is embedded and compared against all chunks using cosine similarity
Configuration
QuartzUnit Ecosystem
Used in
- newswatch — RSS news monitoring pipeline (feedkit → markgrab → embgrep → diffgrab)
License
MIT
Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.
Source: README.md at commit 3e4f6da
Tools
0Version history
1- v0.1.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts