mcpField
E
Everything File Search

Everything File Search

本地服务
github.com/elis132搜索与检索295 周前更新

关于 Everything File Search

Everything File Search 通过 MCP 服务将 AI Agent 接入 voidtools Everything 的 Windows 文件索引。五种工具支持查询搜索、按类别及时间查找文件、检查文件信息,以及统计数量和大小。

主要功能

  1. 01Everything 查询搜索
  2. 02按文件类别搜索
  3. 03查找近期变更文件
  4. 04查看元数据和文本预览
  5. 05数量与大小统计

适用场景

  1. 01按名称或类型查找项目文件
  2. 02定位指定时间段内变更的文件
  3. 03查看文件元数据与内容预览
  4. 04估算文件数量和占用空间

MCP 相关

该服务通过 `es.exe` 查询 voidtools Everything,并向 MCP 客户端提供五种工具。它可自动检测可执行文件及 Everything 1.5 实例。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"elis132-everything": {
"command": "uvx",
"args": [
"everything-mcp"
]
}
}
}
启动命令uvx everything-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypieverything-mcp1.0.9

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
paramsany是

详细介绍

⚡ Everything MCP

用于 voidtools Everything 的 MCP 服务 - 从任何 AI Agent 在毫秒内搜索数百万个 Windows 文件。

PyPI Python License


快速开始

/plugin marketplace add elis132/everything-mcp
/plugin install everything-mcp@everything-mcp

Claude Code 的配置就这些 - 该插件捆绑了 MCP 服务和一套讲解查询语法的 skill。其他客户端请参阅下方的安装。

为什么选这个

everything-mcp(本项)mamertofabian(342⭐)Josephur(26⭐)essovius
工具51116
配置自动检测 es.exe手动指定 SDK DLL 路径手动启动 HTTP 服务器 + host/port手动将 es.exe 加入 PATH
Everything 1.5自动检测实例不支持未测试手动指定标志
与 Everything 通信方式es.exe 子进程Everything SDK(DLL)Everything 的 HTTP 服务器插件(未认证)es.exe 子进程
测试 / CIpytest、GitHub Actions未见未见未见

性能

es.exe(Everything 的实时 NTFS 索引)与朴素的文件系统遍历对比,同一查询:

  • everything-mcp:平均 220 毫秒(5 次运行)
  • 朴素遍历 C:\:66,539 毫秒
  • 约快 300 倍
复现此基准测试
@'
import os, subprocess, time, statistics

ES = os.path.expandvars(r"%LOCALAPPDATA%\Everything\es.exe")
QUERY = "everything.exe"

es_runs = []
for _ in range(5):
    t0 = time.perf_counter()
    subprocess.run([ES, "-n", "100", QUERY], capture_output=True, text=True)
    es_runs.append((time.perf_counter() - t0) * 1000)

t0 = time.perf_counter()
matches = []
for dirpath, _, filenames in os.walk(r"C:\\"):
    for name in filenames:
        if name.lower() == QUERY:
            matches.append(os.path.join(dirpath, name))
walk_ms = (time.perf_counter() - t0) * 1000

es_avg = statistics.mean(es_runs)
print("ES avg ms:", round(es_avg, 2))
print("Walk ms:", round(walk_ms, 2))
print("Speedup x:", round(walk_ms / es_avg, 1))
print("Matches:", len(matches))
'@ | python -

安装

前置条件
  1. Windows,已安装并正在运行 Everything
  2. es.exe(Everything 的命令行界面)- Everything 1.5 alpha 已内置,或单独安装:
    • winget install voidtools.Everything.Cli
    • scoop install everything-cli
    • choco install es
    • 或从 github.com/voidtools/es 下载并放入你的 PATH
  3. Python 3.10+ 或 uv
运行服务
uvx everything-mcp          # recommended, no install needed
pip install everything-mcp  # or via pip

从源码运行:

git clone https://github.com/elis132/everything-mcp.git
cd everything-mcp && pip install -e ".[dev]"
添加到你的客户端

以下每个客户端都使用相同的 MCP 服务定义:

{
  "mcpServers": {
    "everything": {
      "command": "uvx",
      "args": ["everything-mcp"]
    }
  }
}
客户端添加方式
Claude Code/plugin install everything-mcp@everything-mcp(见快速开始),或 claude mcp add everything -- uvx everything-mcp
Claude Desktop将上面的 JSON 粘贴到 %APPDATA%\Claude\claude_desktop_config.json
Codex CLIcodex mcp add everything -- uvx everything-mcp
Gemini CLIgemini mcp add -s user everything uvx everything-mcp
Kimi CLIkimi mcp add --transport stdio everything -- uvx everything-mcp
Qwen CLIqwen mcp add -s user everything uvx everything-mcp
Cursor将上面的 JSON 粘贴到 Cursor 的 MCP 设置界面
Windsurf将上面的 JSON 粘贴到 %USERPROFILE%\.codeium\windsurf\mcp_config.json
任何其他 MCP 客户端原样使用上面的 JSON
使用 pip 代替 uvx
{ "mcpServers": { "everything": { "command": "everything-mcp" } } }

或显式指定 Python:{"command": "python", "args": ["-m", "everything_mcp"]}

### 环境变量(可选)

Everything MCP 会自动检测你的设置,但你可以覆盖:

变量描述示例
EVERYTHING_ES_PATHes.exe 的路径C:\Program Files\Everything\es.exe
EVERYTHING_INSTANCE命名 Everything 实例1.5a
EVERYTHING_MAX_RESULTS_CAP每次搜索结果的硬性上限(默认 1000)200

只有在 Everything 中(工具 → 选项 → 常规 → 实例)显式配置了命名实例时, 才设置 EVERYTHING_INSTANCE。大多数安装 - 包括大多数 Everything 1.5 安装 - 都运行在默认实例上; 无必要地设置此项会破坏连接。如有疑问,请勿设置。

{
  "mcpServers": {
    "everything": {
      "command": "uvx",
      "args": ["everything-mcp"],
      "env": { "EVERYTHING_INSTANCE": "1.5a" }
    }
  }
}

工具

1. everything_search - 主力工具
参数默认值描述
query(必填)Everything 搜索查询
max_results501-500
sortdate-modified-descname、path、size、date-modified、date-created、extension(以及 -desc 变体)。date-created 需要 Everything 中的 'Index date created'
match_case / match_whole_word / match_regex / match_pathfalse匹配修饰符
offset0分页偏移量

查询语法:

*.py                          all Python files
ext:py;js;ts                  multiple extensions
ext:py path:C:\Projects       Python files under a path
size:>10mb                    larger than 10 MB
size:1kb..1mb                 between 1 KB and 1 MB
dm:today / dm:last7days       modified today / in the last 7 days
path:D:\Photos dc:2024        created in 2024 (slow function, see below)
"exact name.txt"              exact filename match
project1 | project2           OR search
!node_modules                 exclude a term
ext:py path:C:\proj content:TODO   files containing TODO (slow function, see below)
regex:^test_.*\.py$           regex search
parent:src ext:py             files directly inside 'src' folders
dupe:  /  empty:               duplicate filenames / empty folders

慢速函数。 content:、width:/height:、音乐标签(artist:、album: 等),以及 除非其属性已被索引(Everything > 工具 > 选项 > 索引),否则 dc:、da: 和 attrib:(以及 如果你关闭了它们的索引,则 dm:/size:)会使 Everything 从磁盘读取每个候选文件 - 并且在完成之前 Everything 不会响应其他搜索。因此在 Everything 1.4 上,服务会最后运行 这些词条,且仅当查询的其余部分将候选范围缩小到足够程度时(content: 为 1,000 个文件和 100 MB;图像和标签函数为 1,000 个文件;日期、属性和大小为 30,000 个文件)。否则它会拒绝 并报告候选数量,因此请添加 path:、ext: 或名称。

2. everything_search_by_type - 类别搜索

类别:audio、video、image、document、code、archive、executable、font、3d、data

参数:file_type (必填)、query、path、max_results、sort

3. everything_find_recent - 有什么变化?

周期:1min … 12hours、today、yesterday、1day … 1year

参数:period(默认 1hour)、path、extensions、query、max_results

4. everything_file_details - 深度检查

参数:paths (必填,1-20)、preview_lines(0-200)

返回完整元数据;对于目录,返回项目数量和列表;对于带预览的文本文件,返回前 N 行。

5. everything_count_stats - 快速分析

参数:query (必填)、include_size(默认 true)、breakdown_by_extension

无需列出每个文件即可获得数量和大小统计 - 在大搜索之前检查范围。


示例

询问调用
我的项目中今天修改的 Python 文件everything_find_recent(period="today", extensions="py", path="C:\Projects\myapp")
我的日志文件占用了多少空间?everything_count_stats(query="ext:log", include_size=true, breakdown_by_extension=true)
配置文件的前 50 行everything_file_details(paths=["C:\Projects\app\config.yaml"], preview_lines=50)
Documents 中的重复文件名everything_search(query='dupe: path:"C:\Users\me\Documents"')
大于 5MB 的图片everything_search(query="ext:jpg;png;gif size:>5mb")

故障排查

"es.exe not found" - 安装 Everything 和 es.exe,或设置 EVERYTHING_ES。

"Everything IPC not found" - 确保 Everything 正在运行(检查系统托盘)。如果你设置了 EVERYTHING_INSTANCE,尝试移除它 - 大多数安装不需要它。Everything Lite 不支持 IPC。

有效查询没有结果 - 确认 Everything 的索引已完成构建,在 Everything 的 GUI 中尝试相同的查询,并检查驱动器/路径是否包含在 Everything 的索引设置中。

调试

everything-mcp 2>everything-mcp.log                        # server logs
npx @modelcontextprotocol/inspector uvx everything-mcp      # MCP Inspector

开发

pip install -e ".[dev]"   # install with dev dependencies
pytest                    # run tests
ruff check src/ tests/    # lint

欢迎贡献 - 请参阅 CLAUDE.md 了解架构和设计决策。感兴趣的领域:直接命名管道 IPC、Everything SDK3 for 1.5、内容搜索、文件监控、书签/标签支持。

许可证

MIT - 请参阅 LICENSE

致谢

voidtools 提供的 Everything,Anthropic 提供的 Model Context Protocol,以及 MCP 社区。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。