mcpField
E
Enzyme

Enzyme

ローカル
memory.enzyme.gardenメモリ・ナレッジ1192 日前に更新

Enzyme について

EnzymeはMarkdownノートなどからローカルインデックスを作成し、意味検索と文脈情報で複数の文書にまたがる関連をエージェントが探せるようにします。Obsidianの保管庫や議事録、Markdown形式のエージェントメモリ向けで、触媒となる質問を使って検索を導きます。

主な機能

  1. 01ノートのローカルインデックス作成
  2. 02意味と表現を組み合わせた順位付け
  3. 03触媒質問による文書間の関連付け
  4. 04MarkdownやSQLiteなどのソース対応
  5. 05知識作業向けプロファイル

活用シーン

  1. 01プロジェクトの判断や障害の経緯を追う
  2. 02複数ノートにまたがるテーマを探す
  3. 03議事録から人物や背景を検索

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbenzyme-mcp-0.13.2-macos-arm64.mcpb
mcpbenzyme-mcp-0.13.2-macos-x86_64.mcpb
mcpbenzyme-mcp-0.13.2-linux-x86_64.mcpb
mcpbenzyme-mcp-0.13.2-linux-arm64.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

🧬 Enzyme

Discord License Release Downloads

Enzyme は、ノートやその他のナレッジソースをローカルインデックスにまとめます。このインデックスは、次のように機能します。

  1. 時間的な文脈に基づいて情報をサンプリングし、タグやウィキリンクの文脈に応じた使われ方や、フォルダー内で自然に蓄積された情報(つまり、擬似的なツェッテルカステン)を捉えます。
  2. この文脈をもとに、バックグラウンドで質問(catalyst と呼びます)を「夢想」して埋め込みます。クエリ時には、それぞれの質問から最も近いドキュメントが見つかるため、完全な要約を「夢想」する必要がありません。(注を参照)
  3. 更新を続けながら、新しいドキュメントの取り込み(ローカルで高速)と catalyst の進化(低コストで定期的)を分離します。

catalyst は、エージェントがウィキ内を把握するのに役立ちます。Enzyme を使うと、grep による通常のエージェント検索と比べて、トークンを最大50%節約できます。

ある人物について言及するノートや、エージェントが書いた記憶が時間とともに届きます。Enzyme はそれらから質問を一度だけ書き出し、後から届くノートは質問を書き換えることなく関連付けられます。クエリが届くと、エージェントは関連する質問を読み、それらが示す期間を対象に2回検索し、複数年にわたる文章を取得します。

(注:システムがすでにさまざまな分類で大量の記憶を生成している場合があります。Enzyme の catalyst は、それらをつなぎ合わせるのに役立ちます。)

はじめに

エージェントで Markdown ノートのフォルダーを開き、このプロンプトを貼り付けてください。

Set up Enzyme for the Markdown notes folder I have open. If you cannot identify it, ask me for its path.

Install Enzyme if needed using https://raw.githubusercontent.com/byenzyme/enzyme/main/install.sh, and install the instructions for this agent. Read and follow the installed enzyme-workspace-setup skill.

Use it to suggest settings from my notes and prepare search. Show me what you propose to include or exclude, and let me correct it before building the local search index.

Then answer one useful question using my notes, with links to the sources, and suggest a question I can ask next. Keep my existing notes in place and unchanged. Ask separately before any cleanup, model download, or recurring task.

セットアップ後は、これまでどおりエージェントを使って作業してください。新しいガイダンスにより、エージェントが Enzyme の使い方と更新のタイミングを把握できます。

最初に自分でインストールしますか?次のコマンドを実行してから、同じプロンプトを貼り付けてください。

curl -fsSL https://raw.githubusercontent.com/byenzyme/enzyme/main/install.sh | bash
cd /path/to/your/notes
enzyme install claude # or: codex, hermes, openclaw

用途

Enzyme は、急速に成長するナレッジベースのために開発されました。

  • 少数のフォルダーに日付付きのノートが蓄積されていく Obsidian の保管庫
  • ミーティングノートや、AI を前提とした Markdown CRM の構成
  • Markdown で書かれたエージェントのメモリー

セットアップ時には、Wiki と既存のエージェント向け指示を読み取り、次のような .enzyme プログラムを提案します。

profile relationships {
  seek "what matters between people"
  notice ["meaningful exchanges", "shared interests", "unfinished conversations"]
}

workspace "notes" {
  source markdown "notes" { path "~/notes" }

  question budget 40
  sample across time
  favor recent periods

  learn questions from folder "people"
    including linked pages
    about relationships
  learn questions from folder "meetings" about operational
  learn questions from tags ["startup", "design"] about decisions
  learn questions from folder "inbox"

  project questions into "~/notes/Readwise"

  // Guidance compiled for your agent, not an enforced hook.
  when asked {
    "Use grep for names, titles, and exact phrases."
    retrieve passages through learned questions
    answer with sources
  }
}

プログラムを変更するためのフィードバックも提供できます。

Enzyme が最も役立つのは、プロジェクトの決定に至った経緯や、ある人との会話から浮かび上がる大きなテーマなど、長い期間にわたって書かれた多くのノートにまたがる質問です。今のタスクに役立つかどうかにかかわらず、後で重要になる可能性のある知識の記録を支援するよう設計されています。Enzyme は、アイデアを積み重ねていくためのツールをエージェントに提供するという、1 つのことに集中して優れた成果を出すことを目指しています。また、個人のナレッジベースを中心に設計され、 2 年間にわたる個人利用を通じて磨き上げられた一連の profiles も備えています。

読み取る対象...用途...プロファイル
プロジェクトノート何が行き詰まり、何が障害になり続けているかoperational
決定の記録なぜその選択が採用され、何があれば変更されるかdecision_trace
保存した記事現在取り組んでいることとのつながりresonance_trace
日記記録をまたいで繰り返し現れることreflective
人物ノートこうした関係において何が重要かrelational
フィードバック/活動ログどのような制約のもとで何がうまくいくかpreference_evidence
(デフォルト)コスト、前提、現在の緊張関係tension_trace

リファレンス

エージェントを使わないセットアップ
enzyme compile -v
# Review the .enzyme settings file at the path printed by compile.
enzyme init --quiet
enzyme doctor
enzyme catalyze "a question about your notes"

compile は設定を提案して保存し、init はその設定からローカルインデックスを構築し、doctor はインデックス化された内容と問題の有無を報告します。

その他のソース

Apple Notes では、プリセットを使って Notes データベースから名前付きの workspace プログラムを作成できます。init を実行する前に、保存された .enzyme プログラムを確認してください。

enzyme --workspace apple-notes compile --preset apple-notes \
  "$HOME/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite"
enzyme --workspace apple-notes init

Are.na では、enzyme --workspace <name> compile --preset arena <channel-url> を使用してから、enzyme --workspace <name> init を実行します。後からの変更を取り込むには、同じ --workspace 名で refresh を実行してください(--collection もエイリアスとして使用できます)。

検索コマンド

enzyme petri は、Enzyme が質問する価値があると判断した内容を表示します。ターミナルではツリー形式で表示し、パイプに渡すと JSON を出力します。

enzyme petri -n 2
Petri
├─ #working-with-others · tag · active · 11 mentions
│  └─ catalysts
│     ├─ Why did every auth change still route through me after I kept promising to write it down?
│     ├─ Why did the third auth extraction attempt stall when nobody wanted to own the session model?
│     ├─ Which reasons for handing the session model to Maya had I stopped believing by then?
│     ├─ Did extraction stay paused once Maya's team owned the session model?
│     └─ …
└─ #system-design · tag · active · 10 mentions
   └─ catalysts
      ├─ Why did I pick a monolith with inner module boundaries over splitting services yet?
      ├─ Did I ever settle who owns the session model once auth moves out?
      ├─ Which part of auth extraction kept adding layers instead of removing one?
      ├─ Does my view that independence means who can change what still hold?
      └─ …

エージェントはまずこのマップを読み、その後に検索します。enzyme catalyze は表現と意味の両方をもとにノートを順位付けし、各結果にはクエリとのつながりを最もよく示す触媒が含まれます。

enzyme catalyze -n 3 "why we keep rewriting the auth layer" \
  | jq '{search_strategy, results: [.results[] | {file_path, similarity, via_catalyst_text, content}]}'
{
  "search_strategy": "hybrid",
  "results": [
    {
      "file_path": "retros/2025-q3-platform-retro.md",
      "similarity": 0.817,
      "via_catalyst_text": "Why did I keep scoping auth extraction as a two-week project, and what kept stalling it?",
      "content": "# Q3 platform retro\n#system-design #working-with-others\n\nScoped auth extraction as a two-week project for the third time. The real blocker was not the token service; nobody wanted to own the session model. Every proposal added a layer instead of removing one. Action: decide ownership before touching code again."
    },
    {
      "file_path": "journal/2025-05-12.md",
      "similarity": 0.693,
      "via_catalyst_text": "Why did every auth change still route through me after I kept promising to write it down?",
      "content": "#working-with-others\n\nReviewed eleven PRs today and wrote none. Every auth change still routes through me because I wrote the session code and nobody else wants to touch it. I keep saying I will write it down so someone else can own it. I have not."
    },
    {
      "file_path": "1on1s/2026-01-maya.md",
      "similarity": 0.579,
      "via_catalyst_text": "What keeps pulling me back to rewriting when Maya's smaller version already worked?",
      "content": "# 1:1 with Maya\n#working-with-others\n\nMaya replaced the token refresh path with something half the size of mine. She asked me twice and then stopped asking, which is the point. I want to do this with billing before I start rewriting it myself."
    }
  ]
}
メッセージアーカイブ(実験的)

Enzyme は Markdown に加えて、iMessage、WhatsApp、Mail などの SQLite テーブルや、日付付きの行を含む任意のテーブルにもインデックスを作成します。

名前付きの workspace プログラム内で source sqlite を宣言し、init と定期的な refresh を実行します。SQLite ソース設定スキルでは、ソースの宣言とソーススコープのリーディングについて説明しています。

これらはどれも特別なケースではありません。handle_id 列は、日付付きの行に繰り返し登場する人物の値であり、日付付きのノートに繰り返し登場する [[links]] と同じです。どちらも有効日付きのエンティティ出現としてまとめられ、その後の処理では元の出所がわからなくなります。つまり、同じプロフィール、予算、触媒が、メッセージスレッドにも会議メモのフォルダーにも適用されます。

ソースでは、アプリの種類ではなく、列の役割を使って列を指定します。

役割意味
id行の識別情報
who参加者。単一値、JSON 配列、または区切り文字付き
when行のタイムスタンプ
what読み取るテキスト
where行が属するコンテナー(任意)
weight出現ごとの数値的な重要度(任意)
API キー

Enzyme が API キーを必要とするのは、触媒の生成と、Markdown の enzyme compile における選択ステップのみです。ソースプリセットのコンパイルではモデルを呼び出しません。デフォルトでは、enzyme init は Enzyme のホスト型ブートストラップを使用し、継承された OPENAI_* 変数は無視するため、個人のキーが消費されることはありません。認証情報は、明示的なキー → 設定済みのローカルモデル → 匿名のブローカー経由の無料設定の順に解決され、追加の設定は不要です。

マシン上の最初の設定済み Vault は、ログインなしで初期化されます。更新、公開、アカウントクレジット、および追加の Vault には enzyme login が必要です。

独自の OpenAI 互換キーを使用するには、--llm env(別名 --use-env-llm)を渡します。このオプションでは、OPENAI_API_KEY と、任意の OPENAI_BASE_URL および OPENAI_MODEL のみが読み込まれます。init と refresh では、--llm local(インストール済みのローカルモデル。モデルがインストールされていない場合は失敗)、--llm hosted、および --llm none(触媒を生成せず、インデックス作成、埋め込み、選択を実行)も指定できます。--llm が指定されておらず、ホスト型キーも環境変数キーもない場合、触媒の生成はスキップされますが、インデックス作成、埋め込み、ローカル検索は引き続き利用できます。

独自のマシン上で稼働するモデル(LM Studio、Ollama、llama.cpp サーバー)は、OPENAI_BASE_URL をそのモデルに向けて --llm env を使うことで利用できます。サーバー側で無視される場合でも、OPENAI_API_KEY は空でない値である必要があります。Enzyme は localhost のアドレスを組み込みの 135M モデルと同様に扱います。コンパクトなプロンプト、エンティティごとに最大 10 件の抜粋、エンティティごとに 1 回の呼び出し、出力上限 512 トークンが適用されます。リモートプロバイダーの前段にある localhost のプロキシも対象です。より大きなモデルの場合は、ENZYME_LOCAL_MODEL=0 を設定すると、ホスト型の生成と同じプロンプトおよびジョブ分割が使われます(別の場所でホストされている小規模なファインチューンモデルでは、逆に ENZYME_LOCAL_MODEL=1 を設定します)。この方法では最大 8 件の呼び出しを同時に実行し、各リクエストは 120 秒以内に完了する必要があります。そのため、低速なモデルでは ENZYME_LLM_CONCURRENCY をサーバーが処理できる値に設定し、ENZYME_CATALYST_MAX_QUESTIONS_PER_CALL を下げて各呼び出しを短くしてください。

Markdown の enzyme compile は、明示的な OpenRouter Decisions 操作です。enzyme login のホスト型リースと無料設定ブローカーを再利用します。OPENAI_BASE_URL=https://openrouter.ai/api/v1 を指定した明示的な OPENAI_API_KEY が優先されます。触媒の生成には OPENAI_MODEL を使用し、Decisions には ENZYME_JEV_MODEL(デフォルトは typesafe/jev-1.13)を使用します。

ライセンス

Enzyme は Apache License 2.0 の下でライセンスされています。

コメント

MCP は初めてですか?

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

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