everything-mcp 1.0.0__py3-none-any.whl → 1.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- everything_mcp/__init__.py +1 -1
- everything_mcp/backend.py +4 -2
- {everything_mcp-1.0.0.dist-info → everything_mcp-1.0.2.dist-info}/METADATA +56 -11
- everything_mcp-1.0.2.dist-info/RECORD +11 -0
- {everything_mcp-1.0.0.dist-info → everything_mcp-1.0.2.dist-info}/licenses/LICENSE +1 -1
- everything_mcp-1.0.0.dist-info/RECORD +0 -11
- {everything_mcp-1.0.0.dist-info → everything_mcp-1.0.2.dist-info}/WHEEL +0 -0
- {everything_mcp-1.0.0.dist-info → everything_mcp-1.0.2.dist-info}/entry_points.txt +0 -0
everything_mcp/__init__.py
CHANGED
everything_mcp/backend.py
CHANGED
|
@@ -199,7 +199,8 @@ class EverythingBackend:
|
|
|
199
199
|
async def count(self, query: str) -> int:
|
|
200
200
|
"""Return the number of results for *query* without listing them."""
|
|
201
201
|
cmd = self._base_cmd()
|
|
202
|
-
|
|
202
|
+
# Important: do not combine with "-n 0" because es.exe then reports 0.
|
|
203
|
+
cmd.extend(["-get-result-count", query])
|
|
203
204
|
stdout, stderr, rc = await self._run(cmd)
|
|
204
205
|
|
|
205
206
|
if rc != 0:
|
|
@@ -213,7 +214,8 @@ class EverythingBackend:
|
|
|
213
214
|
async def get_total_size(self, query: str) -> int:
|
|
214
215
|
"""Return the total size in bytes of all files matching *query*."""
|
|
215
216
|
cmd = self._base_cmd()
|
|
216
|
-
|
|
217
|
+
# Important: do not combine with "-n 0" because es.exe then reports 0.
|
|
218
|
+
cmd.extend(["-get-total-size", query])
|
|
217
219
|
stdout, stderr, rc = await self._run(cmd)
|
|
218
220
|
|
|
219
221
|
if rc != 0:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: everything-mcp
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: The definitive MCP server for voidtools Everything — lightning-fast file search for AI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/elis132/everything-mcp
|
|
6
6
|
Project-URL: Repository, https://github.com/elis132/everything-mcp
|
|
7
7
|
Project-URL: Issues, https://github.com/elis132/everything-mcp/issues
|
|
8
8
|
Project-URL: Changelog, https://github.com/elis132/everything-mcp/blob/main/CHANGELOG.md
|
|
9
|
-
Author
|
|
9
|
+
Author: elis132
|
|
10
10
|
License: MIT
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Keywords: ai-agent,claude,codex,everything,file-search,gemini,mcp,model-context-protocol,voidtools
|
|
@@ -31,15 +31,18 @@ Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
|
31
31
|
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
32
32
|
Description-Content-Type: text/markdown
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
<div align="center">
|
|
35
|
+
<h1>⚡ Everything MCP</h1>
|
|
36
|
+
<p>
|
|
37
|
+
<strong>The definitive MCP server for <a href="https://www.voidtools.com/">voidtools Everything</a> — lightning-fast file search for AI agents.</strong>
|
|
38
|
+
</p>
|
|
39
|
+
<p>
|
|
40
|
+
<a href="https://pypi.org/project/everything-mcp/"><img alt="PyPI" src="https://img.shields.io/pypi/v/everything-mcp"></a>
|
|
41
|
+
<a href="https://pypi.org/project/everything-mcp/"><img alt="Python" src="https://img.shields.io/pypi/pyversions/everything-mcp"></a>
|
|
42
|
+
<a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/elis132/everything-mcp"></a>
|
|
43
|
+
</p>
|
|
44
|
+
<p>Search millions of files in milliseconds. Built for <strong>Claude Code</strong>, <strong>Codex</strong>, <strong>Gemini</strong>, <strong>Kimi</strong>, <strong>Qwen</strong>, <strong>Cursor</strong>, <strong>Windsurf</strong>, and any MCP-compatible client.</p>
|
|
45
|
+
</div>
|
|
43
46
|
|
|
44
47
|
---
|
|
45
48
|
|
|
@@ -57,6 +60,48 @@ Search millions of files in milliseconds. Built for **Claude Code**, **Codex**,
|
|
|
57
60
|
| **Test suite** | ✅ pytest | ❌ | ❌ |
|
|
58
61
|
| **Zero config** | ✅ Works out of the box | ❌ Need SDK DLL path | ❌ Need es.exe in PATH |
|
|
59
62
|
|
|
63
|
+
## Performance
|
|
64
|
+
|
|
65
|
+
Real benchmark from this machine (Windows, query: `everything.exe`):
|
|
66
|
+
|
|
67
|
+
- `everything-mcp` (Everything index via `es.exe`): **220.22 ms avg** (5 runs)
|
|
68
|
+
- Naive filesystem walk over `C:\`: **66,539.03 ms** (single run)
|
|
69
|
+
- Observed speedup: **~302x faster**
|
|
70
|
+
|
|
71
|
+
Reproduce locally (PowerShell):
|
|
72
|
+
|
|
73
|
+
```powershell
|
|
74
|
+
@'
|
|
75
|
+
import os
|
|
76
|
+
import subprocess
|
|
77
|
+
import time
|
|
78
|
+
import statistics
|
|
79
|
+
|
|
80
|
+
ES = os.path.expandvars(r"%LOCALAPPDATA%\Everything\es.exe")
|
|
81
|
+
QUERY = "everything.exe"
|
|
82
|
+
|
|
83
|
+
es_runs = []
|
|
84
|
+
for _ in range(5):
|
|
85
|
+
t0 = time.perf_counter()
|
|
86
|
+
subprocess.run([ES, "-n", "100", QUERY], capture_output=True, text=True)
|
|
87
|
+
es_runs.append((time.perf_counter() - t0) * 1000)
|
|
88
|
+
|
|
89
|
+
t0 = time.perf_counter()
|
|
90
|
+
matches = []
|
|
91
|
+
for dirpath, _, filenames in os.walk(r"C:\\"):
|
|
92
|
+
for name in filenames:
|
|
93
|
+
if name.lower() == QUERY:
|
|
94
|
+
matches.append(os.path.join(dirpath, name))
|
|
95
|
+
walk_ms = (time.perf_counter() - t0) * 1000
|
|
96
|
+
|
|
97
|
+
es_avg = statistics.mean(es_runs)
|
|
98
|
+
print("ES avg ms:", round(es_avg, 2))
|
|
99
|
+
print("Walk ms:", round(walk_ms, 2))
|
|
100
|
+
print("Speedup x:", round(walk_ms / es_avg, 1))
|
|
101
|
+
print("Matches:", len(matches))
|
|
102
|
+
'@ | python -
|
|
103
|
+
```
|
|
104
|
+
|
|
60
105
|
## Installation
|
|
61
106
|
|
|
62
107
|
### Prerequisites
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
everything_mcp/__init__.py,sha256=TzPl7R_wjHUa4VP8tPndrKEDYBTjTKV2vOr5NK7RN7Y,282
|
|
2
|
+
everything_mcp/__main__.py,sha256=vmT0CZ9tECJGqYncEBFRkZsCA8PtWDPsAxZGhip6fN8,125
|
|
3
|
+
everything_mcp/backend.py,sha256=Dr1EYRu1xZG0Mlwp_m4NeLti1ICG-xY87DZAEhK03uQ,16394
|
|
4
|
+
everything_mcp/config.py,sha256=kb4mnPhqk0vAbrDwwrS1DEaA1LIyiuVhagt1lxFzRhE,8840
|
|
5
|
+
everything_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
everything_mcp/server.py,sha256=Vx2wIj77vfVrAoYhBPVaxTu7CJvbclixguNAn-lsiPk,27850
|
|
7
|
+
everything_mcp-1.0.2.dist-info/METADATA,sha256=2Ud4DqEu2a6HhtbhUw6IipzYjQyMZUZutOE1xgx68ZU,15442
|
|
8
|
+
everything_mcp-1.0.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
9
|
+
everything_mcp-1.0.2.dist-info/entry_points.txt,sha256=uML8cv-F-LLAO48ed5Bb8dvt2vue0zkvOIZLPMxskyo,55
|
|
10
|
+
everything_mcp-1.0.2.dist-info/licenses/LICENSE,sha256=lOzySWZ47IwlWsg4jIvVdxDpca_vVry3jnR_Ibqes4g,1064
|
|
11
|
+
everything_mcp-1.0.2.dist-info/RECORD,,
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
everything_mcp/__init__.py,sha256=yMBXYKJopQ2256VMp26LY7m6otpwzH-HtzfNjO7dROw,282
|
|
2
|
-
everything_mcp/__main__.py,sha256=vmT0CZ9tECJGqYncEBFRkZsCA8PtWDPsAxZGhip6fN8,125
|
|
3
|
-
everything_mcp/backend.py,sha256=mEYoIreYx8a6WvpaQua_SsKFk1VbTS6Gmf_8gjxiry8,16258
|
|
4
|
-
everything_mcp/config.py,sha256=kb4mnPhqk0vAbrDwwrS1DEaA1LIyiuVhagt1lxFzRhE,8840
|
|
5
|
-
everything_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
everything_mcp/server.py,sha256=Vx2wIj77vfVrAoYhBPVaxTu7CJvbclixguNAn-lsiPk,27850
|
|
7
|
-
everything_mcp-1.0.0.dist-info/METADATA,sha256=dtAV_uuL75VXp-JbatyunYLEx0983Mf8wUFwViZXR6E,14068
|
|
8
|
-
everything_mcp-1.0.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
9
|
-
everything_mcp-1.0.0.dist-info/entry_points.txt,sha256=uML8cv-F-LLAO48ed5Bb8dvt2vue0zkvOIZLPMxskyo,55
|
|
10
|
-
everything_mcp-1.0.0.dist-info/licenses/LICENSE,sha256=c6FS4K8gERQWxn6ykdwXZKCYhUV3_Av3Qx1oguEyzZU,1061
|
|
11
|
-
everything_mcp-1.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|