Pathgrove
Give your AI assistant a fast way to find your local files.
Pathgrove lets an MCP-compatible assistant find files without knowing their location first. It keeps a reusable filename index, so repeated searches do not have to walk every folder again. Search text inside files, inspect matches and get the paths you need through the same connection.
Ask your assistant:
Find invoice PDFs modified in the last seven days.
Find Python files containing
API_BASE_URL.Show me a preview of
annual-report.txt.
Runs locally on Windows, Linux and macOS. You choose the search folders. Pathgrove needs no hosted search service or API key; your MCP client controls what is sent to its model.
The payoff
On a physical Mac mini M1 with about four million indexed entries, repeated filename searches returned these results:
| Search | Fresh filesystem scan | Pathgrove MCP | Speed-up |
|---|---|---|---|
invoice |
77.06 seconds | 64 milliseconds | 1,196× |
Broad substring in |
77.65 seconds | 2.39 seconds | 32× |
Five trials per query, with identical ordered first-50 result pages checked each time. The comparison is against a fresh Python os.scandir traversal, using a warmed filename index. Indexing and startup are excluded; it is not a comparison against Everything or Spotlight. These measurements describe the recorded baseline, before the later indexing optimizations. Method and raw data →
The first index costs time: that Mac traversal took 17.2 minutes, and inaccessible paths still limited coverage. Start with your project or document folders. Optimized Windows full-drive completion is estimated at about 75 minutes, not measured to completion. Windows measurements and estimate →
Get started
Requires Python 3.10+ and uv. See the SQLite requirements.
uv tool install pathgrove-mcp
This puts the pathgrove command on your PATH; pipx install pathgrove-mcp works too. Add this to an MCP client that uses mcpServers configuration:
{
"mcpServers": {
"pathgrove": {
"command": "pathgrove",
"env": {
"PATHGROVE_ROOTS": "[\"<ABSOLUTE_SEARCH_ROOT>\"]"
}
}
}
}
Replace <ABSOLUTE_SEARCH_ROOT> with an existing folder you want to search. Forward slashes work on Windows too, avoiding nested backslash escaping. You can put multiple roots in the JSON-encoded array. If the client cannot find pathgrove, use its absolute path (uv tool dir --bin shows the folder), or use "command": "uvx" with "args": ["--from", "pathgrove-mcp", "pathgrove"] without installing.
To run from a checkout instead, clone the repository, run uv sync --frozen and use "command": "uv" with "args": ["run", "--directory", "<ABSOLUTE_CHECKOUT_PATH>", "--frozen", "pathgrove"].
Restart your MCP client and ask it to find a file. Initial indexing runs in the background; committed batches become searchable before it finishes. Keep the server running for filesystem updates. On Windows (NTFS), later restarts read the drive's change journal and revisit only changed folders instead of walking everything again. No administrator rights or other search app are needed.
What it can do
| Task | Tool |
|---|---|
| Find files by name, path, extension, size or date | pathgrove_search |
| Search literal text, even before the index finishes | pathgrove_search_content |
| Find file categories or recent changes | pathgrove_search_by_type, pathgrove_find_recent |
| Preview a file or inspect its metadata | pathgrove_file_details |
| Count indexed matches or check index health | pathgrove_count_stats, pathgrove_index_status |
| Search from a terminal or script | pathgrove search, pathgrove count, pathgrove index (usage) |
Examples of filename queries:
invoice ext:pdf dm:last7days
"annual report" !draft
ext:py content:"API_BASE_URL"
Know the limits
- Search stays inside your configured roots and respects normal filesystem permissions. Links are not followed.
- The index stores names, paths and metadata. Text is read from disk per query; PDF/Word extraction and OCR are not included.
- Building indexes, inaccessible files and query budgets can produce partial results. A partial miss does not prove absence. The tools report these limits explicitly.
Read more
- Usage, query syntax, configuration and development
- Measured comparison and raw data · Whole-volume results · Windows estimate
- Architecture · Validation · Agent skill · Changelog
CI tests Python 3.10 and 3.14 across Linux, Windows and ARM/Intel macOS. Linux tests, lint and package builds use Ubicloud (ubicloud-standard-2); Windows and macOS use native GitHub-hosted runners. Forks need the Ubicloud app connected to run those Linux jobs.
Metadata
Release files for pathgrove-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pathgrove_mcp-0.1.0.tar.gz | 214.4 kB | With provenance | Details for pathgrove_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pathgrove_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pathgrove_mcp-0.1.0-py3-none-any.whl |
Total release size: 276.9 kB
Release files / pathgrove_mcp-0.1.0.tar.gz
| Download URL | pathgrove_mcp-0.1.0.tar.gz |
|---|---|
| Size | 214.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5efe1d584c246135110c78a5e9bde42ae1b8fa6acf52b3835b29f91590413277
|
|
BLAKE2b-256 checksum How to use checksums |
035c2cb52d2e6e183edf8663d3f1e9312d9bfb74b86fb766926bcc377d158b1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logRelease files / pathgrove_mcp-0.1.0-py3-none-any.whl
| Download URL | pathgrove_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 62.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f3700748ff4820f8483878bf55d238fc7bdfddbbe363626a997a45343581204
|
|
BLAKE2b-256 checksum How to use checksums |
f6af0a32e6f1e8f2b2913b1d17106fa478f807ee3b1f027e167f77ab5e81ee49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logSecurity for pathgrove-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pathgrove_mcp-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.