关于 Everything File Search
Everything File Search 通过 MCP 服务将 AI Agent 接入 voidtools Everything 的 Windows 文件索引。五种工具支持查询搜索、按类别及时间查找文件、检查文件信息,以及统计数量和大小。
主要功能
- 01Everything 查询搜索
- 02按文件类别搜索
- 03查找近期变更文件
- 04查看元数据和文本预览
- 05数量与大小统计
适用场景
- 01按名称或类型查找项目文件
- 02定位指定时间段内变更的文件
- 03查看文件元数据与内容预览
- 04估算文件数量和占用空间
MCP 相关
该服务通过 `es.exe` 查询 voidtools Everything,并向 MCP 客户端提供五种工具。它可自动检测可执行文件及 Everything 1.5 实例。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| params | any | 是 |
详细介绍
快速开始
/plugin marketplace add elis132/everything-mcp
/plugin install everything-mcp@everything-mcp
Claude Code 的配置就这些 - 该插件捆绑了 MCP 服务和一套讲解查询语法的 skill。其他客户端请参阅下方的安装。
为什么选这个
| everything-mcp(本项) | mamertofabian(342⭐) | Josephur(26⭐) | essovius | |
|---|---|---|---|---|
| 工具 | 5 | 1 | 1 | 16 |
| 配置 | 自动检测 es.exe | 手动指定 SDK DLL 路径 | 手动启动 HTTP 服务器 + host/port | 手动将 es.exe 加入 PATH |
| Everything 1.5 | 自动检测实例 | 不支持 | 未测试 | 手动指定标志 |
| 与 Everything 通信方式 | es.exe 子进程 | Everything SDK(DLL) | Everything 的 HTTP 服务器插件(未认证) | es.exe 子进程 |
| 测试 / CI | pytest、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 -
安装
前置条件
- Windows,已安装并正在运行 Everything
- es.exe(Everything 的命令行界面)- Everything 1.5 alpha 已内置,或单独安装:
winget install voidtools.Everything.Cliscoop install everything-clichoco install es- 或从 github.com/voidtools/es 下载并放入你的 PATH
- 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 CLI | codex mcp add everything -- uvx everything-mcp |
| Gemini CLI | gemini mcp add -s user everything uvx everything-mcp |
| Kimi CLI | kimi mcp add --transport stdio everything -- uvx everything-mcp |
| Qwen CLI | qwen 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_PATH | es.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_results | 50 | 1-500 |
sort | date-modified-desc | name、path、size、date-modified、date-created、extension(以及 -desc 变体)。date-created 需要 Everything 中的 'Index date created' |
match_case / match_whole_word / match_regex / match_path | false | 匹配修饰符 |
offset | 0 | 分页偏移量 |
查询语法:
*.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 社区。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。