stifler-memex-mcp 0.8.0 → 1.0.0
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.
- package/README.md +82 -20
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
# memex
|
|
1
|
+
# memex: trusted engineering context for agentic software engineering
|
|
2
2
|
|
|
3
3
|
<!-- mcp-name: io.github.STiFLeR7/memex -->
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> A protocol-neutral engineering-context layer for AI coding agents. memex
|
|
6
|
+
> builds a bitemporal knowledge graph of your repository (modules, symbols,
|
|
7
|
+
> decisions, problems, evidence, and code evolution) and exposes bounded,
|
|
8
|
+
> provenance-aware context through Hermes MemoryProvider or MCP.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
**[memex.stifler.in](https://memex.stifler.in)**
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
A daemon and MCP server that turns commits and file changes into structured
|
|
13
|
+
engineering knowledge. Agents can receive relevant repository context before a
|
|
14
|
+
task, with freshness and provenance preserved, without making memex a source of
|
|
15
|
+
personal memory or raw session state.
|
|
16
|
+
|
|
17
|
+
[](https://memex.stifler.in)
|
|
18
|
+
[](https://pypi.org/project/memex-mcp/)
|
|
10
19
|
[](https://pypistats.org/packages/memex-mcp)
|
|
11
|
-
[](https://www.npmjs.com/package/stifler-memex-mcp)
|
|
12
21
|
[](https://www.npmjs.com/package/stifler-memex-mcp)
|
|
13
22
|
[](https://github.com/STiFLeR7/claude-plugins)
|
|
14
23
|
[](https://glama.ai/mcp/servers/STiFLeR7/memex)
|
|
@@ -18,15 +27,37 @@ A daemon and MCP server that turns every commit and every file change into struc
|
|
|
18
27
|
[](https://securityscorecards.dev/viewer/?uri=github.com/STiFLeR7/memex)
|
|
19
28
|
[](LICENSE)
|
|
20
29
|
|
|
21
|
-
](https://aiagentslisting.com/mcp/memex)
|
|
31
|
+
|
|
32
|
+
## Where memex lives
|
|
33
|
+
|
|
34
|
+
| | |
|
|
35
|
+
|---|---|
|
|
36
|
+
| Website | [memex.stifler.in](https://memex.stifler.in) |
|
|
37
|
+
| Source | [github.com/STiFLeR7/memex](https://github.com/STiFLeR7/memex) |
|
|
38
|
+
| Python package | [`memex-mcp` on PyPI](https://pypi.org/project/memex-mcp/) |
|
|
39
|
+
| Node package | [`stifler-memex-mcp` on npm](https://www.npmjs.com/package/stifler-memex-mcp) |
|
|
40
|
+
| MCP Registry | [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io/), listed as `io.github.STiFLeR7/memex` |
|
|
41
|
+
| Claude Code plugin | [STiFLeR7/claude-plugins](https://github.com/STiFLeR7/claude-plugins) |
|
|
42
|
+
| Directories | [Glama](https://glama.ai/mcp/servers/STiFLeR7/memex) · [AI Agents Listing](https://aiagentslisting.com/mcp/memex) |
|
|
43
|
+
|
|
44
|
+
Evaluation record in [BENCHMARK.md](BENCHMARK.md), release history in
|
|
45
|
+
[CHANGELOG.md](CHANGELOG.md), reporting process in [SECURITY.md](SECURITY.md),
|
|
46
|
+
and how to work on it in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
47
|
+
|
|
48
|
+
[](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex-v1.mp4)
|
|
49
|
+
|
|
50
|
+
▶ **[Watch memex v1 in 60 seconds](https://raw.githubusercontent.com/STiFLeR7/memex/master/assets/memex-v1.mp4)**
|
|
22
51
|
|
|
23
52
|
```mermaid
|
|
24
53
|
flowchart LR
|
|
25
54
|
A[Your repository<br/>files + git] --> B[memex watcher<br/>tree-sitter + Gemini]
|
|
26
55
|
B --> C[Neo4j graph<br/>bitemporal facts]
|
|
27
|
-
C --> D[
|
|
28
|
-
D --> E[
|
|
29
|
-
|
|
56
|
+
C --> D[memex core<br/>ContextPacket selection]
|
|
57
|
+
D --> E[Hermes MemoryProvider<br/>automatic read-only prefetch]
|
|
58
|
+
D --> F[MCP fallback<br/>explicit lookup]
|
|
59
|
+
E --> G[AI coding agent]
|
|
60
|
+
F --> G
|
|
30
61
|
|
|
31
62
|
style B fill:#cfe8ff,stroke:#0066cc,color:#000
|
|
32
63
|
style C fill:#fff4cf,stroke:#cc9900,color:#000
|
|
@@ -59,6 +90,30 @@ npx stifler-memex-mcp watch --repo .
|
|
|
59
90
|
npx stifler-memex-mcp serve --repo .
|
|
60
91
|
```
|
|
61
92
|
|
|
93
|
+
### Hermes integration
|
|
94
|
+
|
|
95
|
+
The v0.9 Hermes integration is read-only. Hermes retains personal memory, raw
|
|
96
|
+
session state, and execution state. memex supplies repository engineering
|
|
97
|
+
context through a bounded `ContextPacket`; it does not ingest Hermes
|
|
98
|
+
`state.db`, transcripts, prompts, or tool results.
|
|
99
|
+
|
|
100
|
+
Add the memex provider to Hermes' profile configuration:
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
memory:
|
|
104
|
+
provider: memex
|
|
105
|
+
plugins:
|
|
106
|
+
memex:
|
|
107
|
+
repo_path: /absolute/path/to/repository
|
|
108
|
+
prefetch_timeout_seconds: 7
|
|
109
|
+
max_items: 8
|
|
110
|
+
max_chars: 12000
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If Hermes is not installed, use the same context selector through the MCP
|
|
114
|
+
`get_engineering_context` tool. Both paths share the protocol-neutral memex
|
|
115
|
+
core and fail open when retrieval is unavailable.
|
|
116
|
+
|
|
62
117
|
| Channel | Command |
|
|
63
118
|
|---|---|
|
|
64
119
|
| Claude Code marketplace | `/plugin install memex-mcp@stifler-marketplace` |
|
|
@@ -85,14 +140,15 @@ initial admin key, and the `down -v` footgun to avoid.
|
|
|
85
140
|
| Property | Value |
|
|
86
141
|
|---|---|
|
|
87
142
|
| Output | A Neo4j graph populated continuously from your repo |
|
|
88
|
-
| Storage | Neo4j via [Graphiti](https://github.com/getzep/graphiti). Bitemporal
|
|
89
|
-
|
|
|
90
|
-
|
|
|
143
|
+
| Storage | Neo4j via [Graphiti](https://github.com/getzep/graphiti). Bitemporal: every edge has `created_at` and optional `expired_at` |
|
|
144
|
+
| Context | Bounded, ranked, provenance-aware `ContextPacket` |
|
|
145
|
+
| Integrations | Hermes MemoryProvider, MCP resources/tools, Claude Code, Cursor, Codex, Gemini CLI |
|
|
146
|
+
| Failure mode | Fail-open; agent execution continues without memex |
|
|
91
147
|
| Granularity | Scales from 50 to 5000+ modules via hierarchical Leiden clusters |
|
|
92
148
|
| Synthesis | Gemini Flash distills commits into `Decision` nodes; Pro for grounded synthesis |
|
|
93
149
|
| Confidence | Computed at query time. Two-regime decay (validated half-life ~139d, unvalidated stale at 30d) |
|
|
94
150
|
| Write governance | Per-node-type ACL, intent-confirmation on agent writes, explicit `corroborates` / `supersedes` semantics |
|
|
95
|
-
|
|
|
151
|
+
| Goal 10 evidence | 8/8 valid paired runs, 0 treatment failures, 0 treatment regressions |
|
|
96
152
|
|
|
97
153
|
## The lifecycle
|
|
98
154
|
|
|
@@ -119,7 +175,7 @@ flowchart TD
|
|
|
119
175
|
|
|
120
176
|
## MCP tools
|
|
121
177
|
|
|
122
|
-
14 tools
|
|
178
|
+
14 tools: eight read, four write, two analytic.
|
|
123
179
|
|
|
124
180
|
### Read
|
|
125
181
|
|
|
@@ -186,7 +242,7 @@ flowchart LR
|
|
|
186
242
|
| Algorithm | `graspologic.partition.hierarchical_leiden` with fixed seed |
|
|
187
243
|
| Naming | TF-IDF top-3 over module docstrings + symbol names, parent-dir fallback |
|
|
188
244
|
| ID pinning | Jaccard ≥ 0.5 across reruns (cluster names stay stable through renames) |
|
|
189
|
-
| User overrides | `.memex/clusters.yaml
|
|
245
|
+
| User overrides | `.memex/clusters.yaml`, where any assignment can be locked |
|
|
190
246
|
| Context budget | `get_project_context` stays under 1500 tokens whether your repo has 50 or 5000 modules |
|
|
191
247
|
|
|
192
248
|
## Measure Your Savings
|
|
@@ -289,7 +345,7 @@ args = ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
|
|
|
289
345
|
<details>
|
|
290
346
|
<summary><b>Anthropic memory tool (memory_20250818)</b></summary>
|
|
291
347
|
|
|
292
|
-
memex can back Claude's native memory tool
|
|
348
|
+
memex can back Claude's native memory tool: agents read from a per-session graph projection plus a writable scratch zone.
|
|
293
349
|
|
|
294
350
|
```bash
|
|
295
351
|
memex memory-tool serve --repo . # in-process
|
|
@@ -340,7 +396,7 @@ memex/
|
|
|
340
396
|
│ ├── memory_tool/ Anthropic memory_20250818 adapter
|
|
341
397
|
│ ├── watcher/ daemon + git hooks
|
|
342
398
|
│ └── cli.py init / watch / serve / review / graph / cluster
|
|
343
|
-
├── tests/
|
|
399
|
+
├── tests/ unit, integration, and objective evaluation suites
|
|
344
400
|
├── docker/ Neo4j compose
|
|
345
401
|
├── npm/ npx wrapper (publishes as stifler-memex-mcp)
|
|
346
402
|
└── Dockerfile introspection-only image for MCP directory sandboxes
|
|
@@ -369,11 +425,17 @@ Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7))
|
|
|
369
425
|
|
|
370
426
|
## Core Contributors & Maintainers
|
|
371
427
|
|
|
372
|
-
- Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7))
|
|
373
|
-
- Nirvaan Lagishetty ([@Nirvaan05](https://github.com/Nirvaan05))
|
|
428
|
+
- Hill Patel ([@STiFLeR7](https://github.com/STiFLeR7)), architect and maintainer
|
|
429
|
+
- Nirvaan Lagishetty ([@Nirvaan05](https://github.com/Nirvaan05)), lead contributor and maintainer
|
|
374
430
|
|
|
375
431
|
## Contributing
|
|
376
432
|
|
|
377
|
-
Open an issue or PR. `uv sync --all-extras
|
|
433
|
+
Open an issue or PR. `uv sync --all-extras` installs the development toolchain.
|
|
434
|
+
Run `uv run pytest -m "not integration"` for the offline suite and `uv run ruff
|
|
435
|
+
check .` before opening a PR. Version bumps must update `pyproject.toml`,
|
|
436
|
+
`npm/package.json`, `server.json`, and the team Docker image tag together.
|
|
437
|
+
|
|
438
|
+
The v0.9 release record is in [`CHANGELOG.md`](CHANGELOG.md), with the
|
|
439
|
+
architecture and evaluation evidence under [`docs/architecture/v0.9/`](docs/architecture/v0.9/).
|
|
378
440
|
|
|
379
441
|
> *Vannevar Bush, 1945:* "Consider a future device for individual use, which is a sort of mechanized private file and library. It needs a name, and to coin one at random, **memex** will do."
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stifler-memex-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"mcpName": "io.github.STiFLeR7/memex",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Trusted engineering context for agentic software engineering via Hermes MemoryProvider and MCP.",
|
|
6
6
|
"bin": {
|
|
7
7
|
"stifler-memex-mcp": "./bin/memex-mcp.js",
|
|
8
8
|
"memex-mcp": "./bin/memex-mcp.js",
|