Native C++23 MCP server for exposing Everything 1.5 search to AI agents.
13 tools · MCP resources · Everything3 SDK v3 · Zero runtime dependencies
everything-mcp bridges the voidtools Everything file indexer (1.5) to AI assistants via the Model Context Protocol (MCP) over stdio. It lets your AI agent search, inspect, and interact with every file on your system — instantly.
No Node.js. No Python. No runtime dependencies. Just a single native executable that loads Everything3_x64.dll and speaks JSON-RPC.
┌────────────┐ stdio ┌─────────────────────┐ IPC3 named pipe ┌──────────────┐
│ AI Agent │◄══════════════►│ everything-mcp │◄═══════════════════► │ Everything │
│ (Qwen etc) │ JSON-RPC │ (native C++23) │ Everything3 SDK │ 1.5 index │
└────────────┘ └─────────────────────┘ └──────────────┘
SDK: This project targets the Everything3 SDK v3 (
Everything3_x64.dll, named-pipe IPC3), not the legacyEverything64.dllSDK. Point CMake at the SDK withEVERYTHING_SDK_DIR, or keep it as a sibling folder at../SDK-3.0.0.9.
| Tool | Description |
|---|---|
search |
Full Everything search with wildcards, boolean operators, regex, pagination, and 14 sort modes |
get_count |
Get result count without fetching file paths — quick existence checks |
search_content |
Search inside file contents with regex/snippet extraction and context lines |
recently_changed |
Find files modified within a time window (5m, 1h, 3d, 2w, or ISO date) |
largest_files |
Find the largest files by size, scoped by path or extension |
| Tool | Description |
|---|---|
smart_search |
Natural language → Everything syntax. "large pdfs from last month" → ext:pdf dm:last30days size:>10mb |
Recognizes file types (pdfs, images, videos, code, archives), size qualifiers (large, huge, 10mb), time filters (today, last week, recent), path scopes, and exclusions — all from plain English.
| Tool | Description |
|---|---|
open |
Open a file with its default application (ShellExecute) |
reveal |
Select a file in Windows Explorer (explorer /select) |
copy_path |
Copy absolute path to clipboard (CF_UNICODETEXT) |
| Tool | Description |
|---|---|
preview |
Type-aware metadata extraction in a single call |
| File Type | Extracts |
|---|---|
| Text/Code | First N lines, total line count, truncation flag |
| PE Binaries (exe/dll/sys) | Version, company name, product name, description, copyright |
| Images (png/jpg/gif/bmp/webp) | Dimensions (width × height), format, bpp — raw header parsing, no GDI+ |
| Archives (zip) | Central directory listing — filenames, compressed/uncompressed sizes |
| Other | File size, dates, attributes |
| Tool | Description |
|---|---|
duplicates |
Find duplicate files with two methods |
| Method | How it works |
|---|---|
name (default) |
Everything's dupe: operator — fast grouping by filename |
hash |
Content-accurate: dupe:size pre-filter → group by size → incremental CNG MD5 hashing (1 MB streaming chunks) → group by hash. Reports wasted space. |
Standard search results exposed as native MCP resource URIs:
| URI | Returns |
|---|---|
everything://search/{query} |
JSON search results |
everything://count/{query} |
Result count |
everything://search/dupe: |
Static: duplicate files overview |
everything://count/ |
Static: Everything availability |
everything://search/ext:pdf |
Static: all PDFs overview |
- Windows 10/11 (x64)
- Everything 1.5 running (https://www.voidtools.com)
- Everything3 SDK v3.0.0.9+ (download from voidtools, extract locally)
- Visual Studio 2022 (MSVC 14.50+) with C++ CMake tools
- CMake 3.20+
The simplest layout is:
everything-ai/
├── SDK-3.0.0.9/
└── everything-jet-plugin/
From everything-jet-plugin/:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
build\Release\everything-mcp-tests.exeIf the SDK is somewhere else:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 `
-DEVERYTHING_SDK_DIR="C:\path\to\SDK-3.0.0.9"
cmake --build build --config ReleaseThe executable and Everything3_x64.dll are placed in build\Release\.
Everything must run non-elevated so the IPC3 named pipe is accessible to non-admin processes like MCP servers. The recommended setup:
-
Enable the Everything Service (handles indexing as SYSTEM):
sudo pwsh -Command "Set-Service -Name 'Everything' -StartupType Automatic; Start-Service -Name 'Everything'"
-
Set
run_as_admin=0inEverything.ini(stop Everything before editing) -
Start Everything.exe — it connects to the service and creates a user-accessible pipe
If you get ERROR_ACCESS_DENIED connecting to the pipe, an elevated Everything process is holding it — kill it by PID (elevated) and restart non-elevated.
Add to your MCP client configuration (e.g., Qwen Code's mcp_servers.json):
{
"mcpServers": {
"everything-mcp": {
"command": "C:\\path\\to\\build\\Release\\everything-mcp.exe"
}
}
}"Find all PDF files larger than 50MB on my D: drive"
→ smart_search: intent="large pdfs on D:\" → ext:pdf size:>10mb path:"D:\"
"What version of Chrome do I have installed?"
→ preview: path="C:\Program Files\Google\Chrome\Application\chrome.exe"
→ pe_metadata: { file_version: "137.0.7151.69", company_name: "Google LLC" }
"Show me what changed in my project in the last 30 minutes"
→ recently_changed: since="30m", path="C:\Projects\myapp"
"Find duplicate files in my Downloads and tell me how much space I'm wasting"
→ duplicates: method="hash", path="C:\Users\me\Downloads"
→ { wasted_space: 8589934592, duplicate_groups: 47 }
# Run as stdio MCP server
build\Release\everything-mcp.exe
# Show help
build\Release\everything-mcp.exe --help
# Version
build\Release\everything-mcp.exe --versioneverything-jet-plugin/
├── src/
│ ├── main.cpp # Entry point, --help, stdio loop
│ ├── mcp_server.hpp/cpp # MCP JSON-RPC server, resource handlers, tool dispatch
│ ├── everything_wrapper.hpp/cpp # Everything3 SDK v3 wrapper (LoadLibrary/GetProcAddress, IPC3 pipe client)
│ ├── content_search.hpp/cpp # Content search with snippet extraction
│ ├── smart_query.hpp/cpp # Natural language → Everything syntax translator
│ ├── actions.hpp/cpp # ShellExecute / clipboard action tools
│ ├── file_hashing.hpp/cpp # CNG BCrypt MD5 incremental hashing
│ ├── file_preview.hpp/cpp # Type-aware metadata: PE, image, ZIP, text
│ ├── json.hpp # Dependency-free JSON parser + serializer
│ └── string_utils.hpp # UTF-8 ↔ UTF-16 conversion
├── tests/
│ ├── test_main.cpp # Test runner entry point
│ ├── test_json.cpp # JSON parser/serializer tests
│ ├── test_string_utils.cpp # String conversion tests
│ ├── test_everything.cpp # Live Everything3 SDK integration tests
│ ├── test_content_search.cpp # Content search tests
│ ├── test_smart_query.cpp # NL query builder tests
│ ├── test_actions.cpp # Action tool tests (clipboard round-trip)
│ ├── test_file_hashing.cpp # MD5 known-vector + streaming tests
│ ├── test_file_preview.cpp # Image/PE/ZIP parsing tests
│ └── test_mcp_server.cpp # MCP protocol + resource tests
├── CMakeLists.txt
└── README.md
- Zero external dependencies — custom JSON parser, custom test framework, no npm/pip/vcpkg
- Everything3 SDK v3 — named-pipe IPC3 (
Everything3_x64.dll), client-handle architecture with per-search state objects, server-side viewport paging - SDK loaded dynamically —
LoadLibrary/GetProcAddress, auto-reconnect on pipe disconnect - Long-path safe — all path buffers use heap allocation (32K chars), never
MAX_PATH - Thread-safe —
std::atomic<bool>flags,std::mutexfor client connection guard
# Run all 182 tests against live Everything
build\Release\everything-mcp-tests.exeRunning 182 test(s)...
[PASS] md5_abc
[PASS] md5_file_large_streaming
[PASS] smart_query_complex_intent
[PASS] preview_png_dimensions
[PASS] preview_zip_three_entries
[PASS] actions_copy_path_roundtrip
[PASS] mcp_resources_read_search_template
...
================================================
Results: 182 passed, 0 failed (of 182 total)
Test coverage includes:
- MD5 hashing — verified against RFC 1321 known test vectors + 2.5 MB streaming
- Image parsing — fixture PNG/GIF/BMP with known dimensions
- ZIP listing — synthesized central directory with known entries
- NL query builder — file types, sizes, dates, paths, exclusions
- Clipboard —
copy_pathround-trip verified viaGetClipboardData - MCP protocol — init gate, batch requests, resources, error handling
- Live SDK integration — search, pagination, sort, count, version, empty queries
Releases are tag-driven. Push a semantic version tag to build, test, package, and publish a Windows x64 release archive:
git tag v2.0.0
git push origin v2.0.0The release archive contains everything-mcp.exe, Everything3_x64.dll,
README.md, LICENSE, THIRD_PARTY_NOTICES.md, and CHANGELOG.md.
| Component | Version |
|---|---|
| Everything | 1.5.0.1415+ |
| Everything3 SDK | v3.0.0.9+ |
| Windows | 10/11 (x64) |
| Compiler | MSVC 14.50+ (/std:c++latest) |
| CMake | 3.20+ |
| # | Tool | Category | Requires Everything |
|---|---|---|---|
| 1 | search |
Search | ✅ |
| 2 | get_count |
Search | ✅ |
| 3 | is_running |
Diagnostics | ✅ |
| 4 | get_version |
Diagnostics | ✅ |
| 5 | search_content |
Search | ✅ |
| 6 | recently_changed |
Search | ✅ |
| 7 | largest_files |
Search | ✅ |
| 8 | duplicates |
Dedup | ✅ |
| 9 | smart_search |
Smart Query | ✅ (only if execute=true) |
| 10 | open |
Action | ❌ |
| 11 | reveal |
Action | ❌ |
| 12 | copy_path |
Action | ❌ |
| 13 | preview |
File Insight | ❌ |
- Metadata tool — expose Everything's 418-property system (hashes, EXIF, media tags, PE info) with adapter fallback to C++ parsing
- Journal watch —
Everything3_ReadJournalchange stream (USN-based, callback-driven) replacingReadDirectoryChangesW - Search sessions — stateful result sets with
refine_search - HTTP/ETP transport — query remote Everything instances via built-in HTTP server
The README uses this GitHub Actions status badge:
[](https://github.com/0xabadbabe-ops/everything-jet-plugin/actions/workflows/ci.yml)MIT. See LICENSE.
The Everything3 SDK is not vendored by this repository and remains subject to the licensing terms that ship with the SDK package you install.
Built with ⚡ C++23 · MCP · IPC3 named pipes