mcpField
M
memalyze

memalyze

ローカル
github.comメモリ・ナレッジ01 日前に更新

memalyze について

memalyzeは、オフライン運用とアクセス管理が必要な環境向けの、AIエージェント用セルフホスト型メモリMCPサーバーです。保存前の情報マスキングと、読み取りの監査記録を備えています。

主な機能

  1. 01保存前のマスキングとルール設定
  2. 02メモリ読み取りの監査記録
  3. 03ローカル埋め込みとオフライン運用
  4. 04ベクトル検索とキーワード検索
  5. 054種類のMCPツール
  6. 06SQLite保存と論理削除

活用シーン

  1. 01機密値をエージェントのメモリに残さない
  2. 02メモリを読んだ主体を確認する
  3. 03クラウド接続なしでメモリを運用する

MCP 対応

stdioまたはStreamable HTTP経由で、メモリの追加、検索、削除、接続確認ツールをMCPクライアントに提供します。

設定

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

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

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

リポジトリ
パッケージ
mcpbmemalyze-0.1.0-darwin-arm64.mcpb
mcpbmemalyze-0.1.0-darwin-amd64.mcpb
mcpbmemalyze-0.1.0-windows-amd64.mcpb
mcpbmemalyze-0.1.0-linux-amd64.mcpb

ツール

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

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

詳細

memalyze

AI エージェント向けの MCP ネイティブなセルフホスト可能メモリ — 企業が実際に求めるガバナンスを備えています。

静的バイナリは1つ。ローカル埋め込み。クラウドも、グラフデータベースも、Python スタックも不要です。 書き込み前に必ずマスキングし、読み取りはすべて監査します。

./memalyze          # MCP over stdio, for Claude Code / Cline / any harness

v0.1.0 をリリースしました — linux/darwin/windows 向けの静的 バイナリを公開し、チェックサムも併せて掲載しています。

memalyze のガバナンスデモ


課題

すべてのエージェントフレームワークには、それぞれ独自のメモリ機能が付属しています。あるものはベクターテーブル、別のものは JSON ファイル、また別のものはどこかに「notes」フォルダーがあります。その結果、次の3つの問題が生じ、本番環境でいずれも大きな障害になります。

  1. 監査できません。「先週の火曜日に、エージェントがどの顧客のデータを読み取ったのか?」に答えられないため、セキュリティレビューでプロジェクトが止まります。
  2. **オフラインでデプロイできません。**多くの選択肢はクラウド API を呼び出すか、実行時に HuggingFace からモデルの重みをダウンロードします。どちらも銀行、病院、工場の内部では利用できません。
  3. **小規模に保てません。**23個のツール、グラフデータベース、Python の依存関係ツリーが加わると、「メモリ機能」は運用すべき第2の製品になってしまいます。

memalyze はこの3つの問題だけを解決するミドルウェアです。

何が違うのか

クラウドメモリ APIフレームワーク組み込み機能個人用メモアプリmemalyze
データの保存場所ベンダーのクラウドフレームワーク内ローカルの Markdown自社サーバー/自分のノート PC
接続方法独自 API1つのフレームワークに依存MCPMCP、あらゆるハーネス、stdio または HTTP
書き込み前のマスキング❌❌❌✅ 8つのルール群、設定可能、デフォルトでは不可逆
読み取り監査一部対応❌❌✅ 追記のみ*、アクターごと、エクスポート可能
オフライン❌一部対応⚠️ モデルのダウンロードが必要✅ ローカル埋め込み、ネットワーク不要
デプロイSaaSフレームワークに付属Python パッケージ173個✅ 静的バイナリ1つ/compose ファイル1つ
ツールの数——23個のツール4個のツール

* データベーストリガーにより audit_log の UPDATE は拒否されますが、DELETE はブロックされないため、データベースファイルにアクセスできる人は行を削除できます。これは SQL レベルでの追記専用であり、WORM ではありません。削除が脅威モデルに含まれる場合は、オブジェクトロックまたは syslog ストレージにエクスポートしてください (SECURITY.md)。

mem0 の別バージョンでも Basic Memory でもありません。どちらも記憶することに優れています。memalyze は、記憶がコモディティ化しつつあることを前提に、ガバナンス、オフライン運用、意図的に絞り込んだ機能範囲で差別化します。

30秒デモ

Ollama も、ネットワークも、MCP クライアントも不要です。

./examples/demo/demo.sh
# or: go run ./cmd/memalyze demo

電話番号、メールアドレス、住民 ID を含むメモリを書き込み、次の内容を表示します。

  • 実際に保存されている内容(13800138000 ではなく [REDACTED:phone]);
  • 元の番号を検索しても一致件数が0件であること;
  • 業務用語で検索すれば引き続き一致し、マスキング済みテキストが返されること;
  • 2回の書き込みと2回の読み取りに関する監査行。

詳細と実行記録:docs/s15-redaction-audit.md。

クイックスタート

1. バイナリとローカル埋め込みモデル

ビルド済みでチェックサム検証済み(Linux/macOS 向け。Windows の場合はリリースページから .exe を取得してください):

curl -fsSL https://raw.githubusercontent.com/mahaoboy/memalyze/main/scripts/install.sh | sh
ollama pull qwen3-embedding:0.6b      # ~640 MB, 1024-dim, strong on Chinese
memalyze --version

ソースからビルドする場合(Go 1.27+):make build を実行し、その後 ./memalyze --version を実行します。

2. ハーネスに接続する

Claude Code(プロジェクトスコープ):

claude mcp add --scope project memalyze -- "$(pwd)/memalyze"
cp examples/claude-code/CLAUDE.md ./CLAUDE.md   # makes Claude search before answering

Cline:examples/cline/cline_mcp_settings.json と .clinerules をコピーします。 汎用ハーネス:examples/custom-harness/ — プロンプトの仕様と疑似コードを用意しています。すべての設定については、examples/README.md をご覧ください。

3. または、Claude Desktop でワンクリック(MCPB)

リリース v0.1.0 からお使いのプラットフォーム用のバンドルをダウンロードして開いてください。 Claude Desktop にインストール画面が表示され、memalyze.db の保存先を尋ねられます。

プラットフォームファイル
macOS Apple Siliconmemalyze-0.1.0-darwin-arm64.mcpb
macOS Intelmemalyze-0.1.0-darwin-amd64.mcpb
Windows x64memalyze-0.1.0-windows-amd64.mcpb
Linux x64memalyze-0.1.0-linux-amd64.mcpb

内部のバイナリは、上記と同じ v0.1.0 ビルドです。これらのバンドルは公開されたばかりで、実際の macOS/Windows デスクトップではまだ開かれていません。インストール画面が表示されない場合は、通常のバイナリを使用してください。このサーバーは MCP Registry にも掲載されています。

4. または、Docker で実行(memalyze + Ollama + モデルの取得)
printf 'MEMALYZE_HTTP_TOKEN=%s\n' "$(openssl rand -hex 24)" > .env
docker compose up -d --build
curl -s http://127.0.0.1:8080/healthz     # {"status":"ok","version":"dev"}

Authorization: Bearer $MEMALYZE_HTTP_TOKEN を指定して、Streamable-HTTP MCP クライアントから http://127.0.0.1:8080/mcp に接続します。詳しくは docs/s16-docker.md を参照してください。

ツール

意図的に4つだけにしています。ツールが増えるたびに、モデルが判断しなければならないことも増えます。

ツール機能特筆すべき動作
memory_addメモリを保存します重複する場合は既存の ID を返します。埋め込みに失敗してもメモリは保持されます(embedding_failed=true)。redacted とルール名を返します
memory_searchメモリを取得しますベクトル検索を優先し、キーワードで補完します。ベクトル検索が利用できない場合は degraded と degrade_reason を返します。空のクエリでは最近の項目を一覧表示します
memory_delete論理削除しますすでに削除済みの ID に対しては冪等です。不明な ID の場合はツールエラーを返します
echo接続を確認しますMCP リンクが機能していることを確認します。ビジネスロジックはありません

memory_context ツールはありません。memory_search はプロンプトに貼り付けられるテキストをすでに返し、機能が重複する2つのツールがあるとモデルの選択が難しくなるためです(D-017)。

ガバナンス

マスキング(書き込みパス)。 ルールは、重複排除、FTS、埋め込み処理の前に memory.Service.Add で実行されるため、平文がメインテーブル、全文インデックス、ベクトルに到達することはありません。

ルール入力例保存形式
private_key_block-----BEGIN RSA PRIVATE KEY-----…[REDACTED:private_key]
id_card_cn110101199003071234[REDACTED:id_card]
bank_card6222021234567890123[REDACTED:bank_card]
jwteyJhbGciOi…[REDACTED:jwt]
api_key_known_prefixsk-…、ghp_…、AKIA…[REDACTED:api_key]
credential_assignmentapi_key=abcdef123456api_key=[REDACTED:credential]
email[email protected][REDACTED:email]
phone_cn+86 13800138000[REDACTED:phone]

モード:enforce(デフォルト)、dry-run(調整用。件数のみカウント)、off(デバッグ用)。 カスタムルールパックは JSON 形式です:examples/redaction-rules.json。

監査(読み取りパス)。 追記専用の audit_log(データベーストリガーにより UPDATE を拒否します)に、actor、tenant、scope、action、memory ID、タイムスタンプ、結果件数、degraded、マスキング件数が記録されます。検索テキスト自体は、明示的に MEMALYZE_AUDIT_QUERY_PLAIN=1 を設定しない限り、SHA-256 と長さとして保存されます。

memalyze audit export --from 2026-10-01 --to 2026-10-31 --format csv --out audit.csv
memalyze audit export --tenant acme --format json

まだ対応していない機能: ユーザーごとの認証(プロセスごとに1つのトークンを使用し、actor は環境変数から取得)、監査ログの保持/消去、マスキングの解除、監査 UI。

検索精度の実測値

60件のメモリを含む中国語コーパスで、16件のクエリを使ってS8で測定した数値です。推定値ではありません (docs/s8-retrieval-report.md):

アプローチrecall@3MRR
qwen3-embedding:0.6b(デフォルト)0.940.92
CJK bigram FTS5(キーワードの補完検索)0.88—
nomic-embed-text0.47—

設計に影響した、直感に反する知見が2つあります。SQLite FTS5のデフォルトのトークナイザーは中国語をまったく検索できず、bigramテキストを保存するまでリコールは0.19でした。また、RRFフュージョンのスコアはベクトル検索のみの場合より低かったため、v0.1ではフュージョンを行いません。D-012を参照してください。

レイテンシ(S14、コールドスタートを固定):バックグラウンドでのウォームアップに37.8秒かかり、その後の検索はdegraded=falseで1.14秒です。5分間アイドル状態が続いた後も、新しいプロセスは1.52秒で応答します。ベクトル検索が利用できない場合、検索は応答せずに停止するのではなく、3秒以内にキーワード検索へフォールバックします(D-015/D-018)。

仕組み

harness (Claude Code / Cline / your agent)
   │  MCP: stdio or Streamable HTTP
   ▼
internal/mcp     4 tools, argument conversion only
   ▼
internal/memory  redact → dedup → store → embed; search: vector → keyword → degraded
   ├── internal/govern     rule engine (8 families, JSON configurable)
   ├── internal/store      interface; sqlite impl (memories, embeddings, audit_log)
   ├── internal/embed      float32 BLOB codec, cosine; Ollama client
   └── internal/search     CJK bigram tokenizer + FTS5 MATCH builder
  • ULID ID、重複排除用の部分ユニークインデックス、論理削除、TTLを備えたSQLite(WAL)。
  • ベクトルはリトルエンディアンのfloat32 BLOBです。検索には総当たりコサイン類似度を使います(約1万件未満のメモリなら十分であり、単一バイナリ設計の正直な限界です)。
  • スキーマのマイグレーションはPRAGMA user_versionでバージョン管理されています(v1 → v2では監査テーブルを追加)。

運用

memalyze audit export --from 2026-10-01 --format csv --out audit.csv   # who read what
memalyze backup --out /var/backups/memalyze-$(date +%F).db             # consistent snapshot
memalyze health --url http://127.0.0.1:8080/healthz                    # probe
  • systemd:deploy/systemd/memalyze.service + docs/s16-systemd.md(セキュリティ強化済みのユニット、環境変数ファイル、バックアップタイマー)。
  • Docker:docs/s16-docker.md。
  • backupはVACUUM INTOを使用するため、WAL使用中でも一貫性のあるスナップショットを作成し、監査テーブルも含めます。既存ファイルの上書きは拒否します。

設定

すべて環境変数で設定でき、デフォルト値のままですぐに使用できます。

変数デフォルト意味
MEMALYZE_DB./memalyze.dbSQLiteのパス
MEMALYZE_TENANTdefaultツール呼び出し時のデフォルトテナント
MEMALYZE_OLLAMA_URLhttp://127.0.0.1:11434ローカルの埋め込みエンドポイント
MEMALYZE_EMBED_MODELqwen3-embedding:0.6b埋め込みモデル
MEMALYZE_QUERY_TIMEOUT3sフォールバック前のベクトル検索の制限時間
MEMALYZE_KEEP_ALIVE30mOllamaモデルの常駐時間
MEMALYZE_REDACT_MODEenforceenforce / dry-run / off
MEMALYZE_REDACT_RULES(組み込み)JSONルールパックへのパス
MEMALYZE_AUDITon監査行を追記
MEMALYZE_ACTORlocal監査ログに記録するアクター
MEMALYZE_AUDIT_QUERY_PLAINoffクエリテキストを保存(デフォルト:ハッシュのみ)
MEMALYZE_HTTP_ADDR(空 = stdio)Streamable HTTPの場合は、例::8080
MEMALYZE_HTTP_TOKEN(空)Bearerトークン。ループバック以外にバインドする場合は必須

ステータス

現状を正直に示しています。これは初期段階のプロジェクトであり、1.0ではありません。

マイルストーン状態
M0 立項与定位 (S1–S4)✅
M1 备料与技术验证 (S5–S8)✅
M2 核心链路 (S9–S14)✅
M3 打磨与文档 (S15–S19)✅ S15 governance, S16 Docker, S17 docs, S18 tests+CI, S19 examples
M4 发布 (S20–S23)🟡 S20 ✅, S21 ✅ (v0.1.0 public), S22 GitHub ✅ / HN·Reddit·V2EX pending, S23 ⬜
M5 复盘 (S24)⬜ needs real users
M5 复盘 (S24)⬜

既知の課題:ユーザーごとの認証がないこと、監査ログの保持機能がないこと、DockerイメージをCIでビルドしていないこと(開発環境にデーモンがないため)、ベクトル検索が総当たりであること、中国語を優先したデフォルト設定(英語も使えますが、トークナイザーはCJK向けに調整されています)。

ドキュメント

ドキュメント内容
docs/s15-redaction-audit.mdルール、モード、監査スキーマ、デモのトランスクリプト
docs/s16-docker.mdCompose スタック、トークンポリシー、検証状況
docs/s16-systemd.md強化された systemd ユニット、環境ファイル、バックアップ/復元
docs/s8-retrieval-report.md11 種類の検索手法と、この手法が選ばれた理由
docs/s13-context-injection.mdモデルに検索させるためのプロンプト契約
docs/s14-end-to-end.md実際のハーネス、2 つのセッション、コールドスタート時の数値
docs/s21-distribution.mdリリース成果物、配布チャネル、リリース後のチェックリスト
docs/s21-submissions.mdMCP ディレクトリと ClawHub にそのまま貼り付けられるエントリー
docs/s23-feedback-log.mdフィードバックの記録(現時点では本当に空です)
docs/s24-review.mdマイルストーンレビューのテンプレート(未記入)
SECURITY.md脅威モデル:防御対象と対象外

対象外

  • SaaS ではありません。セルフホストで利用でき、こちらがお客様のデータを保持することはありません。
  • エージェントフレームワークではありません。ハーネスを引き継ぐことはありません。
  • ナレッジグラフではありません。エンティティ抽出パイプラインもグラフデータベースもありません。
  • 機能を最大限に詰め込んだものではありません。ツールは 4 つ、バイナリは 1 つで、オペレーターが必要となる機能は断固として追加しません。

ライセンス

AGPL-3.0-or-later(LICENSE)。クローズド製品への組み込み向けの商用ライセンスについては、 commercial license をタイトルとして Issue を作成してください。

コントリビューションについては CONTRIBUTING.md をご覧ください。セキュリティ報告については SECURITY.md をご覧ください。

コメント

MCP は初めてですか?

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

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