mcpField
M
memex

memex

ローカル
github.com/STiFLeR7メモリ・ナレッジ12今日更新

memex について

memex は、ソフトウェア開発エージェント向けのオープンソース MCP サーバーとフックサービスです。リポジトリの変更を時点と根拠を保ったコンテキストに変換し、Claude Code と Codex に届け、編集根拠の有効性も確認します。

主な機能

  1. 01リポジトリの二時点ナレッジグラフを構築
  2. 02セッション開始時に作業コンテキストを提供
  3. 03編集前にコンテキストの有効性を確認
  4. 04再開時に変更ファイルを通知
  5. 05並行ワークツリーごとに個別ビューを提供
  6. 06決定事項や問題を記録・検索

活用シーン

  1. 01コーディングエージェントに最新のコード背景を提供
  2. 02古いコード根拠に基づく編集を防止
  3. 03モジュール、シンボル、設計決定を検索
  4. 04ファイル変更の影響候補モジュールを特定

MCP 対応

MCP サーバーは、リポジトリのコンテキスト検索、影響予測、変更説明などのツールを提供し、決定事項や問題を記録する書き込みツールも備えます。MCP リソースも公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"stifler7-memex": {
"command": "npx",
"args": [
"-y",
"stifler-memex-mcp"
],
"env": {
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}
起動コマンドnpx -y stifler-memex-mcp
設定が必要な環境変数
NEO4J_URIBolt URI of your Neo4j instance
NEO4J_USERNeo4j username
NEO4J_PASSWORDシークレットNeo4j password
GEMINI_API_KEYシークレットGoogle Gemini API key for entity extraction

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmstifler-memex-mcp1.0.3
pypimemex-mcp1.0.3

ツール

14

掲載時のツール一覧 · 2 日前に更新

パラメーター型必須説明
repostringいいえ結果の範囲を限定する任意のリポジトリの絶対パス。
scopestringいいえ概要を絞り込む任意の相対パス(例:'src/auth')。
projectstringいいえ結果の範囲を限定する任意の project_id('repo' の代わり、またはこれと併用 — `memex init --project-id` を参照)。

詳細

memex:エージェント型ソフトウェアエンジニアリングのための信頼できるエンジニアリングコンテキスト

Claude Code と Codex のエンジニアリングコンテキストをコードの変更に合わせて最新に保ち、 根拠が変わった編集を保留する、オープンソースの MCP サーバーとフックサービスです。

memex.stifler.in

コミットやファイル変更を構造化されたエンジニアリング知識に変換し、鮮度と出所を保ったままエージェントに届けるデーモン、フックサービス、MCP サーバーです。memex が個人の記憶や未加工のセッション状態の保存先になることはありません。

memex は、リポジトリの二時点知識グラフ(モジュール、シンボル、決定事項、問題、根拠、コードの変遷)を構築します。v1 では Claude Code と Codex にもフックします。各セッションは適切なコンテキストで始まり、各編集は現在のコードに照らしてチェックされ、何が変わったのかがエージェントに正確に伝えられます。

Website PyPI PyPI downloads npm npm downloads Claude Code marketplace memex MCP server GitHub stars Tests CodeQL OpenSSF Scorecard License: MIT

Memex on AI Agents Listing

memex の公開先

ウェブサイトmemex.stifler.in
ソースコードgithub.com/STiFLeR7/memex
Python パッケージmemex-mcp on PyPI
Node パッケージstifler-memex-mcp on npm
MCP レジストリregistry.modelcontextprotocol.io。io.github.STiFLeR7/memex として掲載
Claude Code プラグインSTiFLeR7/claude-plugins
ディレクトリGlama · AI Agents Listing

評価記録は BENCHMARK.md、リリース履歴は CHANGELOG.md、報告手順は SECURITY.md、 開発への参加方法は CONTRIBUTING.md をご覧ください。

https://github.com/user-attachments/assets/b14e3185-ea36-4ae5-bd18-2d34e6bf7be4

60 秒でわかる memex v1。プレーヤーが読み込まれない場合は、動画をダウンロードしてください。

ライブコンテキスト(v1)

コーディングエージェントは、コードのスナップショットをもとに作業します。チームメイトが変更をプッシュし、別のエージェントがファイルを編集し、ブランチが移動しても、エージェントは以前に読み取った内容をもとに作業を続けます。v1は、Claude CodeとCodex内でそのスナップショットを最新の状態に保ちます。

タイミングmemexの動作
セッション開始時タスクに必要な範囲に限定した作業セットを提供し、クライアント自身のセッション記録から提供を確認します
各編集の前編集の前提となるコンテキストが引き続き有効かを確認します。有効でない場合は編集を保留し、エージェントに範囲を絞った修正情報を提供して、エージェントが修正します
再開時セッションを離れている間にコードが変更されていた場合、再読み込みが必要なファイルを提示します
並行するエージェントリンクされた各ワークツリーに個別のビューを提供するため、並行して作業する各エージェントがそれぞれのコードを確認できます
試用memex v1 mode shadow は何も変更せず、修正される内容を記録します。フックはフェイルオープンで動作し、memex v1 rollback ですぐにmemexを停止できます
uv tool install memex-mcp          # installs the `memex` command
cd your-repo
memex v1 doctor                    # what is set up, what is missing, what to do next
memex v1 install claude            # hooks in .claude/settings.json; global settings untouched
memex v1 install codex --neo4j-uri bolt://localhost:7687   # optional, for Codex

memexを使用するには、すでに稼働しているNeo4j 5サーバーが必要です(Dockerは必須ではありません)。フックはチェックアウト内のプロジェクト設定にのみ追加され、memexがクライアントの認証情報を要求したり保存したりすることはありません。完全なガイド、ホスト別の手順、ロールバックについては、docs/v1/25_ONBOARDING.mdをご覧ください。

flowchart LR
    A[Your repository<br/>files + git] --> B[memex watcher<br/>tree-sitter + Gemini]
    B --> C[Neo4j graph<br/>bitemporal facts]
    C --> D[memex core<br/>ContextPacket selection]
    D --> H[Hook service<br/>session start · edit checks · resume notice]
    D --> E[Hermes MemoryProvider<br/>automatic read-only prefetch]
    D --> F[MCP tools<br/>explicit lookup]
    H --> G[Claude Code / Codex]
    E --> G
    F --> G

    style B fill:#cfe8ff,stroke:#0066cc,color:#000
    style C fill:#fff4cf,stroke:#cc9900,color:#000
    style H fill:#d4f5d4,stroke:#2d8f2d,color:#000

インストール

Claude Codeマーケットプレイス経由
/plugin marketplace add STiFLeR7/claude-plugins
/plugin install memex-mcp@stifler-marketplace

Claude Codeのセッションを再起動してください。

インストールまたはアップグレード後の初回起動時に、memexのPython依存関係がダウンロードされます(約40秒)。この処理は一度だけClaude CodeのMCP接続タイムアウト時間を超えることがあります。先にウォームアップしてから、再起動してください。

npx -y stifler-memex-mcp --help     # one-time download; later starts take a few seconds

Claude Codeに接続タイムアウトが引き続き表示される場合は、/mcp を開き、memex に再接続してください。ツールにNeo4jへ接続できないと表示された場合は、Neo4jを起動してください(例:docker start memex-neo4j)。ツールは再起動しなくても復旧します。

手動
docker compose -f docker/docker-compose.yml up -d
cat > .env <<EOF
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=memex-local
GEMINI_API_KEY=your-key-here
EOF
npx stifler-memex-mcp init --repo .
npx stifler-memex-mcp watch --repo .
npx stifler-memex-mcp serve --repo .
Hermesとの統合

Hermesとの統合は読み取り専用です。個人のメモリ、生のセッション状態、実行状態はHermesが保持します。memexは、範囲を限定した ContextPacket を通じてリポジトリのエンジニアリングコンテキストを提供します。Hermesの state.db、トランスクリプト、プロンプト、ツールの結果は取り込みません。

Hermesのプロファイル設定にmemexプロバイダーを追加してください。

memory:
  provider: memex
plugins:
  memex:
    repo_path: /absolute/path/to/repository
    prefetch_timeout_seconds: 7
    max_items: 8
    max_chars: 12000

Hermesがインストールされていない場合は、MCPの get_engineering_context ツールで同じコンテキストセレクターを使用してください。どちらの方法も、プロトコルに依存しないmemexコアを共有し、情報を取得できない場合はフェイルオープンで動作します。

チャネルコマンド
Claude Codeマーケットプレイス/plugin install memex-mcp@stifler-marketplace
npx(インストール不要)npx stifler-memex-mcp <cmd>
uvuv add memex-mcp
pippip install memex-mcp
ソースgit clone github.com/STiFLeR7/memex && uv sync
セルフホスト型のチームデプロイ

チームで共有する環境をセットアップする場合(Neo4jを1台、memex-serverを1台使用し、認証はデフォルトで有効、Neo4jのポートはホストに公開されません):

bash docker/bootstrap-team-env.sh
docker compose -f docker/docker-compose.team.yml up -d

初期管理者キーの取得方法や、避けるべき down -v の注意点を含む全手順については、docker/TEAM-DEPLOY.mdをご覧ください。

概要

項目値
出力リポジトリから継続的にデータを取り込んだ Neo4j グラフ
ストレージGraphiti 経由の Neo4j。二時性:すべてのエッジに created_at と、任意で expired_at があります
コンテキスト範囲が限定され、ランク付けされ、出典を追跡できる ContextPacket
ライブコンテキスト(v1)セッション開始時の作業セット、スコープ付き修正を伴う編集チェック、再開時の変更通知、ワークツリーごとのビュー(Claude Code と Codex のフック)
統合Hermes MemoryProvider、MCP リソース/ツール、Claude Code、Cursor、Codex、Gemini CLI
障害時の動作フェイルオープン。memex がなくてもエージェントの実行は継続します
粒度階層型 Leiden クラスタにより、50〜5000 以上のモジュールに対応
要約生成Gemini Flash がコミットを Decision ノードに要約し、根拠に基づく要約生成には Pro を使用します
信頼度クエリ時に計算します。2種類の減衰方式(検証済みの半減期は約139日、未検証は30日で古い情報として扱います)
書き込みガバナンスノードタイプごとの ACL、エージェントによる書き込み時の意図確認、明示的な corroborates/supersedes セマンティクス
Goal 10 のエビデンス有効なペア実行8/8件、処置群の失敗0件、処置群のリグレッション0件

ライフサイクル

flowchart TD
    Init[memex init<br/>extract baseline] --> Watch[memex watch<br/>daemon + git hooks]
    Watch -->|commit| Extract[tree-sitter extract<br/>symbols, imports, lockfile]
    Extract --> Synth[Gemini Flash<br/>diff → Decision nodes]
    Synth --> Write[Graphiti add_episode<br/>+ post-hoc bitemporal SET]
    Write --> Decay[Scheduler<br/>nightly confidence decay]
    Decay -->|stale edges| Archive[expired_at = now]

    Serve[memex serve<br/>MCP stdio/HTTP] -.->|reads| Write
    Agent[AI agent] -->|14 MCP tools| Serve
    Serve -->|record_decision / record_problem| Write

    Cluster[memex cluster<br/>Leiden over hybrid edges] -.->|every N commits| Write

    style Init fill:#e8f4ff,color:#000
    style Watch fill:#fff4cf,color:#000
    style Synth fill:#ffe0cc,color:#000
    style Serve fill:#d4f5d4,color:#000

MCP ツール

14個のツール:読み取り8個、書き込み4個、分析2個。

読み取り
ツール使用するタイミング
get_project_contextセッション開始時。リポジトリのサイズにかかわらず、1500トークン未満のクラスターレベルの概要を返します
get_symbol_context関数またはクラスを編集する前。呼び出し元、呼び出し先、関連する決定を返します
get_recent_decisions直近N日間のアーキテクチャ上の決定を返します。モジュールのスコープを任意で指定できます
get_open_problems対応中のバグと技術的負債を、深刻度順に返します
search_contextハイブリッド検索:セマンティック検索 × キーワード検索 × グラフトラバーサル × RRF マージ
get_stale_context複合信頼度がしきい値を下回ったエッジを返します
explain_changeコミット SHA を指定すると、差分を関連する Decision/Problem ノードと照合し、Gemini Pro に根拠に基づく説明を依頼します
predict_impactファイルパスを指定すると、グラフの結合度に基づいて影響を受ける可能性が高いモジュールをランク順に返します(LLM 呼び出しなし)
書き込み
ツール使用するタイミング
record_decision技術的な選択を行った後。corroborates(補強)と supersedes(置き換え)をサポートします
record_problemバグまたは技術的負債を発見したとき
resolve_problem追跡中の問題を修正したとき
invalidate_edge保存された事実が正しくなくなったとき

二時性信頼度

信頼度は、変化する保存済みの数値ではありません。base_confidence、検証ステータス、最後に補強されてからの経過時間、アクセス回数に基づいて、クエリ時に計算されます。

flowchart LR
    Edge[Edge created<br/>base_confidence] --> Q{Validated by<br/>a human?}
    Q -->|yes| Slow[Slow regime<br/>half-life ~139d]
    Q -->|no| Fast[Fast regime<br/>stale at exactly 30d]
    Slow --> Score[Composite score<br/>conf × recency × rehearsal]
    Fast --> Score
    Score -->|below floor| Stale[get_stale_context surfaces it]
    Score -->|access| Bump[last_reinforced_at updated]
    Bump --> Score

    style Slow fill:#d4f5d4,color:#000
    style Fast fill:#ffd4d4,color:#000
項目値
検証済みの半減期約139日
未検証の古さのしきい値30日(複合信頼度 < 0.3)
鮮度 τ90日(指数減衰)
複合信頼度の式conf × recency × (1 + rehearsal_w × log(1 + access_count))
矛盾の類似度しきい値0.4(これを下回り、有効期間が重複する場合は矛盾)
意図確認のしきい値0.85(MCP 書き込み時の類似度チェック)

階層型クラスタ

memex cluster は、ハイブリッドエッジグラフに対して階層型 Leiden を実行します。

エッジタイプ重み
ディレクトリの近接配置1.0
モジュールのインポート2.0
シンボル呼び出しlog(1 + calls)
項目値
アルゴリズム固定シードを使用する graspologic.partition.hierarchical_leiden
命名モジュールの docstring とシンボル名に対する TF-IDF 上位3件。フォールバックは親ディレクトリ
ID の固定再実行間で Jaccard ≥ 0.5(名前変更後もクラスタ名を安定させます)
ユーザーによる上書き.memex/clusters.yaml。任意の割り当てをロックできます
コンテキストの予算リポジトリのモジュール数が50でも5000でも、get_project_context は1500トークン未満に収まります

節約効果を測定する

memex は、トークン削減の指標と人間によるレビュー操作を SQLite データベース(~/.config/memex/telemetry.db)にローカル保存します。

CLI を使って、いつでも節約効果を確認できます:

memex stats

または、生の JSON ペイロードを表示できます:

memex stats --json

または、特定のリポジトリの範囲を指定できます:

memex stats --repo /path/to/repo

次の項目を集計して返します:

  • 期間ごとの概要:today、last 7 days、last 30 days、lifetime における呼び出し数、返されたトークン数、推定トークン数(要求されたファイルのサイズ)、節約したトークン数、トークン削減率。
  • 上位ツール:節約したトークン数の合計順に並べた、最も価値の高いツール。
  • エージェントクライアント:アクティブなエージェント(Claude Code、Gemini CLI、Cursor、Codex)と、エージェントごとのトークン節約の内訳。
  • 検証状況:検証済み、未検証、相互確認済みのノードの合計数と、前回のレビューから経過した日数。

同じ統計情報は、HTTP MCP トランスポートからも利用できます:

GET /stats?repo=/path/to/repo
Authorization: Bearer <your-key>

エージェントを接続する

Claude Code

上記のマーケットプレイスからインストールすると、自動的に設定されます。手動で設定する場合は、.claude/settings.json に追加します:

{
  "mcpServers": {
    "memex": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Cursor

~/.cursor/mcp.json に追加します:

{
  "mcpServers": {
    "memex": {
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Gemini CLI

~/.gemini/settings.json に追加します:

{
  "mcpServers": {
    "memex": {
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Codex

~/.codex/config.toml に追加します:

[mcp_servers.memex]
command = "npx"
args = ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
Anthropic memory tool (memory_20250818)

memex は Claude のネイティブなメモリツールをバックエンドとして利用できます。エージェントは、セッションごとのグラフ投影から読み取り、書き込み可能なスクラッチ領域に書き込みます。

memex memory-tool serve --repo .                     # in-process
memex memory-tool serve --repo . --transport http    # FastAPI on :7464
from memex.memory_tool import MemexAsyncMemoryTool
memory_tool = MemexAsyncMemoryTool(repo_root=".")
client.beta.messages.run_tools(..., tools=[memory_tool])

運用原則

#原則方針
1双時点管理、破壊的な変更はしないエッジは削除せず、期限切れにします。WHERE r.expired_at IS NULL で有効な状態を絞り込みます
2信頼度は保存せず、計算する数値を変更すると、気付かないうちにずれが生じるおそれがあります。読み取りのたびに再計算します
3減衰には 2 つの方式がある検証済みの事実はゆっくり減衰します。未検証の事実は、アクセスされることで有用性を示す必要があります
4人間がプロセスに関与するmemex review は、信頼度が最も低い Decision ノードをキューに登録し、明示的な検証を促します
5書き込みを管理するノードタイプごとの ACL を設定します。Decision.policy = open、Module.policy = locked。類似コンテンツへの書き込み時には、意図の確認を行います
6トークンは予算内に収めるLeiden クラスターを使い、リポジトリのサイズにかかわらず get_project_context を 1500 トークン未満に保ちます
7統合はコミット時のみ行うウォッチャーはデバウンス期間ごとにまとめて処理します。Gemini Flash がツール呼び出しのホットパスに入ることはありません
8統合には Pro、抽出には Flash根拠付けが重要なため、explain_change には Pro を使います。それ以外はすべて Flash を使います
9複数リポジトリに対応1 つのウォッチャーと 1 つの MCP サーバーで、数百のリポジトリを管理できます。--repo で範囲を切り替えます
10ローカルファーストNeo4j は Docker 内で実行します。外部への呼び出しは Gemini のみで、コミット時に限られます

memex を使う場面

使う場面使わない場面
数週間から数か月にわたるプロジェクト一度きりのスクリプト、使い捨てのプロトタイプ
複数のエージェント(Claude、Cursor、Codex)を使い、コンテキストを共有したい場合1 つのタスクで 1 つのエージェントとしか作業しない場合
アーキテクチャ上の決定を長期にわたって行い、記録しておく必要がある場合プロジェクト全体が 200k トークンのコンテキストウィンドウに収まる場合
どのセッションからでも「X について何を決めたか」を確認したい場合リポジトリが十分に小さく、プロンプトに貼り付けられる場合
複数の開発者が同じコードベースで AI エージェントを使う場合/clear を一度も使わない単独作業の場合

プロジェクト構成

memex/
├── memex/
│   ├── extractor/        tree-sitter + lockfile parsers
│   ├── graph/            Neo4j writes, confidence, archive, cluster engine
│   ├── synthesizer/      Gemini Flash → Decision nodes
│   ├── mcp_server/       14 MCP tools (read + write + analytic)
│   ├── memory_tool/      Anthropic memory_20250818 adapter
│   ├── watcher/          daemon + git hooks
│   └── cli.py            init / watch / serve / review / graph / cluster
├── tests/                unit, integration, and objective evaluation suites
├── docker/               Neo4j compose
├── npm/                  npx wrapper (publishes as stifler-memex-mcp)
└── Dockerfile            introspection-only image for MCP directory sandboxes

コマンド

コマンド説明
memex initベースラインのグラフ状態を抽出し、最初のクラスタリングを実行します
memex watchファイルと Git のイベントを監視し、Neo4j に書き込むデーモンです
memex serveMCP サーバーを実行します(stdio、HTTP、または両方)
memex review信頼度が最も低い判断を順に表示し、人が検証できる TUI です
memex graph --output graph.htmlクラスタのオーバーレイを備えた、自己完結型の D3 フォースレイアウトです
memex cluster [--rerun] [--dry-run]ハイブリッドエッジグラフに対して Leiden を実行します。Jaccard ≥ 0.5 でクラスタ ID を固定します
memex memory-tool serveグラフの投影を使って Anthropic の memory_20250818 ツールを支えます
memex stats [--json] [--repo <path>]コンテキストトークンの節約量とテレメトリ統計を表示します

ライセンス

MIT。詳しくは LICENSE をご覧ください。

作者

Hill Patel (@STiFLeR7)

主な貢献者とメンテナー

  • Hill Patel (@STiFLeR7)、アーキテクト兼メンテナー
  • Nirvaan Lagishetty (@Nirvaan05)、主要な貢献者兼メンテナー

貢献

Issue または PR を作成してください。uv sync --all-extras で開発ツールチェーンをインストールできます。 オフラインテストスイートには uv run pytest -m "not integration" を実行し、PR を作成する前に uv run ruff check . を実行してください。バージョンを更新する場合は、pyproject.toml、 npm/package.json、server.json、およびチームの Docker イメージタグもあわせて更新してください。

リリース履歴は CHANGELOG.md にあります。v1 の設計と 評価記録は docs/v1/ に、v0.9 のアーキテクチャは docs/architecture/v0.9/ にあります。

Vannevar Bush, 1945: 「個人が使う未来の装置を考えてみてください。それは、機械化された個人用ファイル兼図書館のようなものです。名前が必要ですが、思いつきで付けるなら、memex でよいでしょう。」

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。