Skip to main content
Glama
shxiaj

@shxiaj/everything-mcp

by shxiaj

@shxiaj/everything-mcp

MCP (Model Context Protocol) server for Everything — the lightning-fast Windows file search engine.

Forked and extended from everythingsdk-mcp.

Uses ffi-rs to call the Everything SDK natively and @modelcontextprotocol/sdk for the MCP server protocol.

Features

  • Dual SDK support — Auto-detects Everything 1.5 (SDK v3) or 1.4 (SDK v2)

  • Lightning-fast file search — Leverage Everything's native search capabilities

  • Multiple tools — Search, version check, status, and file info

  • Flexible configuration — Environment variable overrides for SDK paths

Related MCP server: Everything Search MCP Server

Prerequisites

  • Windows (the Everything SDK is Windows-only)

  • Everything 1.4+ installed and running (download)

  • Node.js 18+ and npm

Installation

npm install
npm run build

Usage

Running the MCP server

npx @shxiaj/everything-mcp

The server communicates via stdin/stdout (MCP stdio transport).

Configuring in Claude Desktop / VS Code Copilot

Add to your MCP client configuration:

{
  "mcpServers": {
    "@shxiaj/everything-mcp": {
      "command": "npx",
      "args": ["@shxiaj/everything-mcp"]
    }
  }
}

Environment Variables

Variable

Description

Default

EVERYTHING_SDK_VERSION

Force SDK version (v3 or v2)

Auto-detect

EVERYTHING_SDK_DIR

Path to the Everything SDK v3 directory

./everything_sdk3/dll

EVERYTHING_DLL_PATH

Full path to the Everything SDK v3 DLL

$SDK_DIR/Everything3_x64.dll

EVERYTHING_V2_SDK_DIR

Path to the Everything SDK v2 directory

./Everything-SDK/dll

EVERYTHING_V2_DLL_PATH

Full path to the Everything SDK v2 DLL

$V2_SDK_DIR/Everything64.dll

EVERYTHING_IPC_PIPE_NAME

Override v3 IPC pipe name

Auto-probe

Tools

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

SDK Architecture

src/
├── index.ts              # MCP server entry point (tools, request handlers)
├── everything-client.ts  # EverythingClient + SdkProvider abstraction
├── ffi-bindings.ts       # Raw FFI bindings to Everything3_*.dll (SDK v3, Everything 1.5)
└── ffi-bindings-v14.ts   # Raw FFI bindings to Everything*.dll (SDK v2, Everything 1.4)

EverythingClient auto-detects the SDK version: tries v3 first, falls back to v2. Override with EVERYTHING_SDK_VERSION=v2 or v3 env var.

SDK v3 (Everything 1.5) vs SDK v2 (Everything 1.4)

Aspect

SDK v3 (Everything 1.5)

SDK v2 (Everything 1.4)

DLL names

Everything3_x64.dll

Everything64.dll

API prefix

Everything3_*

Everything_*

Connection

Explicit ConnectW/DestroyClient handles

Implicit via IPC on QueryW

State model

Per-client, per-search-state objects

Global mutable state

Search exec

Search(client, state) returns result list

QueryW(TRUE) populates global results

Result props

Must call AddSearchPropertyRequest first

Use SetRequestFlags bitmask

File info

Direct GetFileAttributesW(client, path)

Requires a search with SetMatchPath(true)

License

MIT

Available Tools

4 tools
everything_file_infoA

Get file attributes (Windows attributes, run count) for a specific file path using Everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFull path to the file or folder.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates the type of data returned (Windows attributes, run count) and the need for a path, but it does not disclose potential errors, permission requirements, whether the tool is a safe read-only operation, or dependencies like the Everything service running. This is a minimal but not fully transparent disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and key details (what it gets, for which path, using which tool). There is no wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has low complexity (one parameter, no output schema, no annotations). The description explains the purpose and hints at the output content ('Windows attributes, run count') but does not specify the output format or behavior on invalid inputs. Given the lack of output schema, a slightly richer description would improve completeness, but it is adequate for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a complete description for the single parameter 'path' ('Full path to the file or folder'), so the baseline is 3. The tool description adds no extra semantic detail about the parameter beyond what the schema contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get file attributes' for 'a specific file path.' It also lists the types of information included ('Windows attributes, run count') and mentions the tool's context ('using Everything'), which clearly distinguishes it from sibling tools like everything_search (search for files) and everything_version (version info).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you need file attributes for a given path. It does not explicitly state when to prefer this tool over siblings, nor does it provide exclusions or alternative recommendations. The context is clear but not elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

everything_statusA

Check if the Everything search engine is running and its database is loaded.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It states the core behavior (status check) but does not disclose whether the tool starts the engine, the return format, or side effects. Given the simplicity of a status check, some might expect a boolean or status object, but that is not explicitly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff. It immediately states the action and subject, making it easy to parse. Every word carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no parameters, no output schema). However, since no output schema exists, the description should explain what the return value is, but it does not. For a status check, knowing whether it returns a boolean, a status object, or a string is important for downstream use. The description is adequate for selection but not fully complete for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter details because none exist. The empty schema is fully consistent, and the description does not need to compensate for undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks whether the Everything search engine is running and its database is loaded. The verb 'Check' and specific resources ('running', 'database loaded') distinguish it from siblings like everything_search (searching) and everything_version (version info).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is a pre-flight check before using other Everything tools, but it does not explicitly say when to use it or mention alternatives. There is no exclusion or comparison to siblings, so the usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

everything_versionA

Get the version information of the running Everything search engine.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The verb 'Get' and the resource clearly indicate a read-only retrieval operation with no side effects. For a simple version check, this is sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous words. Every word earns its place, conveying the exact purpose without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, no output schema), the description fully specifies what it does. The lack of return format is acceptable because the tool's output is self-evident and the description is complete for its intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the empty schema is fully covered. Per the rule, a baseline of 4 is appropriate since there are no parameter details to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Get') and identifies the exact resource ('version information of the running Everything search engine'). This distinguishes it from sibling tools like everything_search and everything_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is used when version information is needed. However, it does not explicitly mention alternatives or provide exclusions, though the sibling tools are clearly distinct in purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.1
    • First observedeverything_file_info
    • First observedeverything_search
    • First observedeverything_status
    • First observedeverything_version

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: file_info for specific file attributes, search for complex queries, status for service health, and version for engine version. No overlap.

Naming Consistency5/5

All tools follow the consistent pattern 'everything_<verb_or_noun>', using snake_case with clear verb/noun (info, search, status, version).

Tool Count5/5

4 tools cover the core operations (search, file info, status, version) without being too few or too many for a search engine wrapper.

Completeness4/5

The set covers primary use cases: search, file details, service status, and version. Missing index management tools (e.g., update index) but those are advanced features.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables instant file and folder searching on Windows using Everything's blazing-fast search engine, supporting powerful search syntax including wildcards, regex, size filters, date filters, and comprehensive file information retrieval.
    545 npm
    12
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides fast file searching across Windows, macOS, and Linux using platform-native tools like Everything SDK, mdfind, and locate.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables instant file searches on Windows using Everything's native SDK, supporting advanced filters, duplicate detection, and content search through MCP tools.
    5
    MIT