LabscoMCP early access ↗
STiFLeR7MCP SERVER

Memex MCP

A bitemporal knowledge graph of your repository — modules, symbols, decisions, problems — built from commits and served to any MCP agent.

by STiFLeR7 ↗Agent MemoryCommunity

LABSCO SUMMARY

Bitemporal, so "we decided that, then we changed our mind" is representable.

Most memory tools store facts. This stores when a fact was believed and when it stopped being true, with supersedes and corroborates as explicit relationships and a confidence that decays rather than a boolean. The session briefing capped at 1500 tokens is the other design choice worth noting — it is what keeps a large repository from eating the context window at session start. The cost is real infrastructure: Neo4j and a Gemini key are both required.

What it is

A daemon and MCP server that turns every commit and file change into structured graph state in Neo4j. tree-sitter extracts symbols, imports and lockfile facts; Gemini Flash distils diffs into Decision nodes; every edge carries a created_at and an optional expired_at, so the graph records what was true when, not just what is true now. Confidence is computed at query time and decays, so stale knowledge fades instead of being asserted forever.

What you get

  • A cluster-level session briefing held under 1500 tokens no matter how large the repository — get_project_context
  • Callers, callees and linked decisions for a function or class, before you edit it — get_symbol_context
  • Recent architectural decisions over the last N days, optionally scoped to a module, and the open bugs and tech debt sorted by severity — get_recent_decisions, get_open_problems
  • Hybrid search combining semantic, keyword and graph traversal with an RRF merge — search_context
  • Edges whose composite confidence fell below a threshold, so you can see what the graph no longer trusts — get_stale_context
  • A commit explained by cross-referencing its diff with the linked decision and problem nodes — explain_change
  • The modules a file change is likely to affect, ranked by graph coupling and computed without any model call — predict_impact
  • Writes back into the graph, with corroborates to reinforce and supersedes to replace — record_decision, record_problem, resolve_problem, invalidate_edge
  • Per-node-type write ACLs and intent confirmation on agent writes, so the agent cannot quietly rewrite history

Requirements

A Neo4j instance — the repository ships a Docker Compose file for it — plus four values: NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD and GEMINI_API_KEY, since Gemini is what turns diffs into decisions. Install through the Claude Code marketplace, or run npx stifler-memex-mcp with init, watch and serve; the same tool is on PyPI as memex-mcp and on npm as stifler-memex-mcp; the npm package hands off to the PyPI one through uv, so uv has to be installed. For a shared team setup there is a separate bootstrap script and Compose file that turn auth on by default and keep Neo4j's ports off the host — with a documented down -v footgun to avoid.

Setup effort

Follow the published steps — git clone https://github.com/STiFLeR7/memex