I've written an Everything 1.5 plugin that turns your index into an MCP (Model Context Protocol) server, so an LLM client such as Claude Desktop, Claude Code or Cursor can search your files directly.
There is already an MCP server posted on this forum that drives the HTTP Server plugin; this one takes the in-process route instead. Everything loads everything_mcp64.dll itself and the MCP endpoint runs inside the Everything process - no HTTP Server plugin, no es.exe, no helper process to keep alive.
Seven tools
- search_in_folder - recursive search under a folder using Everything syntax: ,
ext:,dm:,size:,content:,regex:excludes,!/case:, plus sorting and paging.ww: - list_folder - the direct children of a folder, non-recursive.
- count - hit count only, without materialising the name list.
- index_changes - "what changed lately": created / modified / deleted / renamed / moved, read from Everything's index journal.
- read_file - read one text file, with a line window and a hard byte budget.
- grep - regex over file contents, returning the matching lines with their line numbers. Everything picks the candidate files; the plugin reads them.
- search_everywhere - name search across the whole index, for when you don't know which drive or share the file is on. Off by default.
- Folder-first. An LLM usually works inside one project directory, so the tools are scoped to a folder you pass in rather than scanning the whole disk. The one global tool is off by default and sits behind a three-mode switch: Deny / Review / Allow.
- No third-party DLLs. serde, windows-sys and the CRT are statically linked, so the plugin imports nothing beyond Windows system DLLs.
- Settings live in Everything's own options dialog (Plugins -> MCP): enable switch, bind address, port, global-search mode. Apply takes effect immediately, no restart needed.
- Localhost only by default (127.0.0.1:8285), and requests carrying a non-localhost Origin header are rejected.
- read_file refuses sensitive paths before it even stats them - private keys, .env, credentials.json, .git/objects - and binary files are rejected by both extension and content sniff. That denylist is deliberately not configurable.
- Both MCP protocol generations work on the same endpoint: the older initialize handshake and the 2026-07-28 revision.
- search works without turning on content indexing first - Everything reads the candidate files on demand. Narrowing the scope with
content:orext:is what makes it fast.exclude
Everything 1.5 (x64 or x86) - it is a 1.5 plugin, so 1.4 will not load it.
Install
Download the installer for your architecture (v1.1.7):
- everything-mcp-1.1.7-x64-setup.exe - x64, installs everything_mcp64.dll
- everything-mcp-1.1.7-x86-setup.exe - x86, installs everything_mcp32.dll
-setup-pluginOr build it yourself; only a Rust toolchain is needed, no Visual Studio:
Code: Select all
cargo build --release
:: then copy target\release\everything_mcp.dll to
:: C:\Program Files\Everything\Plugins\everything_mcp64.dllCode: Select all
{
"mcpServers": {
"everything": { "url": "http://127.0.0.1:8285/" }
}
}Source, releases and the full documentation are here:
https://github.com/Jotaro2025/everything-mcp
The README also writes up the plugin SDK details that took me the longest to get right - db_query_search2's main-thread affinity, why the db has to be created lazily on the first search rather than at PM_START, and so on - in case anyone else is writing a 1.5 plugin.
Feedback and bug reports very welcome, especially from anyone trying it with a client other than Claude Desktop.