everything-mcp
# everything-mcp
MCP (Model Context Protocol) server for [Everything](https://www.voidtools.com/) — the lightning-fast Windows file search engine.
Uses [ffi-rs](https://github.com/zhangyuang/node-ffi-rs) to call the Everything SDK natively and [@modelcontextprotocol/sdk](https://www.npmjs.com/package/@modelcontextprotocol/sdk) for the MCP server protocol.
## Prerequisites
- **Windows** (the Everything SDK is Windows-only)
- **Everything 1.5+** installed and running ([download](https://www.voidtools.com/))
- **Node.js 18+** and **pnpm**
## Installation
```bash
pnpm install
pnpm build
```
## Usage
### Running the MCP server
```bash
node dist/index.js
```
The server communicates via stdin/stdout (MCP stdio transport).
### Configuring in Claude Desktop / VS Code Copilot
Add to your MCP client configuration:
```json
{
"mcpServers": {
"everything": {
"command": "node",
"args": ["w:\\projects\\everything-mcp\\dist\\index.js"]
}
}
}
```
### Environment Variables
| Variable | Description | Default |
|---|---|---|
| `EVERYTHING_SDK_DIR` | Path to the Everything SDK directory | `./Everything-SDK-3.0.0.9/dll` |
| `EVERYTHING_DLL_PATH` | Full path to the Everything DLL | `$SDK_DIR/Everything3_x64.dll` |
## Tools
### `everything_search`
Search for files and folders using Everything search syntax.
**Parameters:**
- `query` (required) — Search query using Everything syntax
- `maxResults` — Max results (default: 50, max: 1000)
- `offset` — Zero-based offset for pagination
- `matchCase` — Case-sensitive search
- `matchWholeWord` — Match whole words only
- `matchPath` — Match against full path
- `regex` — Treat query as regex
**Everything search syntax examples:**
- `*.txt` — all .txt files
- `foo bar` — files containing both "foo" AND "bar"
- `foo|bar` — files containing "foo" OR "bar"
- `ext:jpg size:>1mb` — JPEGs larger than 1 MB
- `folder:node_modules` — folders named node_modules
- `content:TODO` — files containing "TODO" in their content
- `datemodified:today` — files modified today
- `parent:C:\Projects` — files under C:\Projects
### `everything_version`
Get the version information of the running Everything instance.
### `everything_status`
Check if Everything is running and its database is loaded.
### `everything_file_info`
Get Windows file attributes and run count for a specific file path.
**Parameters:**
- `path` (required) — Full path to the file or folder
## Architecture
```
src/
├── index.ts # MCP server entry point (tools, request handlers)
├── everything-client.ts # High-level Everything client wrapper
└── ffi-bindings.ts # Low-level FFI bindings to Everything3_x64.dll
```
## License
MIT
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: searching, retrieving file attributes, checking version, and checking service status. There is no overlap between them, so an agent can easily select the right one.
All tools share the 'everything_' prefix and use snake_case, but the second part mixes nouns (file_info, version, status) and a verb (search). This is a minor deviation from a strict verb_noun pattern but remains predictable and readable.
With 4 tools, the server is well-scoped for interacting with the Everything search engine. Each tool covers a necessary aspect without redundancy or bloat.
The tool surface covers the core functionality: searching, getting file metadata, and checking the engine's operational state. Minor gaps like advanced query analysis or database statistics exist but are not essential for basic usage.