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 제공자
제공자 독립적. 단일 바이너리, 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 우선임 | 네이티브 Python, Java 및 MCP 클라이언트를 갖춘 Rust 코어 |
시도하기 위해 Postgres + Qdrant + Neo4j가 필요함 | 단일 SQLite 파일(인프라 제로) 또는 필요 시 Postgres |
대화 기록은 지식 메모리가 아님 | 사실 추출 파이프라인 — 메시지에서 구조화된 사실 추출 |
오래된 사실이 표류하고 모순됨 | 충돌 감지 + 통합 — 감쇠, 승격, 중복 제거, 요약 |
메모리 회상은 의미론적 또는 키워드 방식 중 하나임 | 하이브리드 검색 — 단일 쿼리에서 벡터 검색 + FTS5 |
MCP 지원이 부차적임 | MCP 네이티브 — 단일 바이너리로 11개 도구 노출 |
사용자 또는 테넌트별로 메모리를 격리할 수 없음 | 일급 범위(First-class scopes) — 모든 쿼리에 내장된 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