jamjet-labs/engram-mcp-server
AIエージェントのための永続メモリ — 時系列ナレッジグラフ、ハイブリッド検索、SQLiteまたはPostgreSQL対応。
java-ai-memory.dev · ソースコード · JamJetドキュメント · Discord
Engramは、AIエージェントのための永続メモリ層です。会話から事実を抽出し、時系列ナレッジグラフに保存します。また、単一のSQLiteファイルまたはPostgreSQLデータベースをバックエンドとして、セマンティック検索とキーワード検索を組み合わせたハイブリッド検索による取得が可能です。
このリポジトリはGlamaレジストリのリストをホストしています。ソースコードはJamJetメインリポジトリにあります。
クイックスタート — 30秒
# Docker — uses local Ollama by default
docker run --rm -i \
-v engram-data:/data \
ghcr.io/jamjet-labs/engram-server:0.5.0またはcrates.ioからインストール:
cargo install jamjet-engram-server
engram serveClaude Desktopの設定
~/Library/Application Support/Claude/claude_desktop_config.json に追加します:
{
"mcpServers": {
"engram": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "engram-data:/data",
"ghcr.io/jamjet-labs/engram-server:0.5.0"
]
}
}
}再起動後、11個のMCPツールがモデルで利用可能になります。
MCPツール (11)
メモリツール (7)
ツール | 説明 |
| LLMによる事実抽出を使用して、会話メッセージから事実を抽出・保存します。副作用: 設定されたLLMを呼び出して事実を解析し、ナレッジグラフに書き込みます。抽出された事実のIDを返します。 |
| ベクトル類似性を使用して、保存された事実に対してセマンティック検索を行います。読み取り専用、副作用なし。 |
| 階層を意識した事実選択を行い、LLMプロンプト用のトークン制限付きコンテキストブロックを組み立てます。読み取り専用。指定されたトークン制限内で、最も関連性の高い事実をフォーマットされた文字列として返します。すぐに使えるプロンプトスニペットが必要な場合に、 |
| 全文検索(SQLite FTS5 / Postgres)を使用して、事実に対してキーワード検索を行います。読み取り専用、副作用なし。正確なキーワードに一致する事実を返します。 |
| IDを指定して事実を論理削除(ソフトデリート)します(理由の指定も可能)。副作用: ナレッジグラフ上で事実を削除済みとしてマークします(物理的には削除されません)。このツールで元に戻すことはできません。ユーザーが特定の情報の削除を求めた場合に使用します。 |
| 集計統計を取得します:事実の総数、有効な(削除されていない)事実の数、エンティティ数、関係数。読み取り専用、副作用なし。メモリストアのサイズと健全性を把握するために使用します。 |
| ナレッジグラフのメンテナンスサイクルを実行します。古い事実の減衰、信頼度の高い事実の昇格、重複に近い事実の統合、クラスターの要約を行います。副作用: 事実のスコアを変更し、事実を統合またはアーカイブする場合があります。メモリを正確に保つために定期的に実行してください。 |
メッセージストアツール (4)
ツール | 説明 |
| IDを指定して会話のチャットメッセージを保存します。副作用: メッセージをストアに書き込み、オプションで事実抽出をトリガーします( |
| IDを指定して会話の全メッセージを取得します。読み取り専用、副作用なし。順序付けられたメッセージ配列を返します。過去の会話を再生または確認するために使用します。 |
| メッセージストア内のすべての会話IDをリストします。読み取り専用、副作用なし。会話ID文字列の配列を返します。 |
| IDを指定して会話の全メッセージを削除します。副作用: ストアから会話のメッセージを完全に削除します。元に戻すことはできません。抽出された事実には影響しません(その場合は |
すべてのメモリツールは(org_id, user_id, session_id)によってスコープされます。orgが最も粗く、sessionが最も細かいスコープです。
LLMプロバイダー
プロバイダー非依存。 バイナリは1つ。ENGRAM_LLM_PROVIDER=...を設定するだけです:
プロバイダー | 環境変数値 | 備考 |
Ollama |
| ローカル、無料、APIキー不要 |
OpenAI互換 |
| OpenAI, Azure, Groq, Together, Mistral, DeepSeek, vLLM, LM Studioなど |
Anthropic |
| Messages API経由のClaude |
| generateContent経由のGemini | |
シェルコマンド |
| 任意の外部スクリプトへのパイプ |
Mock |
| 決定論的、テスト専用 |
# Example: use Groq instead of Ollama
docker run --rm -i \
-e ENGRAM_LLM_PROVIDER=openai-compatible \
-e ENGRAM_OPENAI_BASE_URL=https://api.groq.com/openai/v1 \
-e OPENAI_API_KEY=gsk_... \
-v engram-data:/data \
ghcr.io/jamjet-labs/engram-server:0.5.0なぜEngramなのか?
問題 | Engramの回答 |
エージェントメモリライブラリはPythonが主流 | Rustコア、ネイティブPython、Java、MCPクライアントを提供 |
試すためにPostgres + Qdrant + Neo4jが必要 | 単一のSQLiteファイル(インフラ不要)、必要に応じてPostgresへ移行可能 |
会話履歴はナレッジメモリではない | 事実抽出パイプライン — メッセージから構造化された事実を抽出 |
古い事実が漂流し矛盾する | 競合検出 + 統合 — 減衰、昇格、重複排除、要約 |
メモリの取得はセマンティックかキーワードのどちらか | ハイブリッド検索 — ベクトル検索 + FTS5を1つのクエリで実行 |
MCPサポートは後付け | MCPネイティブ — 単一バイナリで11個のツールを公開 |
ユーザーやテナントごとにメモリを分離できない | ファーストクラスのスコープ — org / user / sessionがすべてのクエリに組み込み済み |
クライアントSDK
言語 | パッケージ | インストール |
Python |
|
|
Java |
| Maven Central |
Spring Boot |
| Maven Central |
Rust |
|
|
関連情報
JamJet — エージェントネイティブなフルランタイム(親プロジェクト)
java-ai-memory.dev — Mem0, Zep, LangChain4j, Spring AIなどとの比較
ライセンス
Apache 2.0 — LICENSEを参照してください。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jamjet-labs/engram-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server