zime-memory
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zime-memoryRemember my SSH key is in ~/.ssh/id_rsa"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zime-memory
Qdrant + MinIO + SQLCipher 기반 Multi-Store 개인 메모리 MCP 서버
Claude Code에서 자연어로 메모리를 저장하고, 의미 기반 유사도 검색으로 다시 찾을 수 있는 개인 메모리 시스템입니다.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Claude Code (MCP Client) │
│ │
│ "Docker 네트워크 설정 방법 저장해줘" │
│ "API 키 저장해줘" / "스크린샷 보관해줘" │
└───────────────────────────┬─────────────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────────────────────┐
│ zime-memory MCP Server │
│ │
│ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │ 19 MCP │ │ Store │ │ Embedding│ │ Safety │ │
│ │ Tools │──│ Router │ │ Service │ │ Service │ │
│ └────┬────┘ └────┬─────┘ └────┬─────┘ └────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Store Operations Layer │ │
│ │ │ │
│ │ ┌───────────┐ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ generalOps│ │ fileOps │ │ secretOps │ │ │
│ │ │ (텍스트) │ │(이미지/ │ │ (API 키/ │ │ │
│ │ │ │ │ 파일) │ │ 비밀번호) │ │ │
│ │ └─────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │
│ └────────┼──────────────┼───────────────┼────────────┘ │
└───────────┼──────────────┼───────────────┼────────────────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌──────────────┐ ┌──────────────┐
│ Qdrant │ │ MinIO │ │ SQLCipher │
│ Vector DB │ │ Object Store │ │ Encrypted DB │
│ │ │ │ │ │
│ - 벡터 임베딩 │ │ - 바이너리 │ │ - AES-256 │
│ - 메타데이터 │ │ - Object Lock│ │ - 암호화 저장│
│ - 유사도 검색 │ │ - Presigned │ │ - 개별 CRUD │
│ │ │ URL │ │ │
└───────────────┘ └──────────────┘ └──────────────┘
(Docker) (Docker) (로컬 파일)
┌─────────────────────────────────────────────────┐
│ Embedding Provider (선택) │
│ │
│ ┌───────────┐ ┌────────────┐ ┌──────────────┐ │
│ │ Ollama │ │ Local │ │ Off │ │
│ │ (bge-m3) │ │(transformers│ │ (키워드만) │ │
│ │ 1024차원 │ │ .js 384d) │ │ 임베딩 없음 │ │
│ │ 기본값 │ │ Ollama불필요│ │ │ │
│ └───────────┘ └────────────┘ └──────────────┘ │
│ EMBEDDING_PROVIDER 환경변수로 선택 │
└─────────────────────────────────────────────────┘원격 접속 모드 (Remote Access Mode)
SSH 터널을 통해 원격 Docker 서비스에 연결하고, 로컬 읽기 캐시로 오프라인 폴백을 제공한다.
┌─────────────────────────────────────────────────────────────┐
│ 클라이언트 (현재 컴퓨터) │
│ │
│ MCP Server ──SSH 터널──→ Mac Mini Docker │
│ │ ├── Qdrant (6333) │
│ │ ├── MinIO (9000) │
│ │ └── Ollama (11434) │
│ │ │
│ ├── 로컬 SQLCipher (secrets, 항상 로컬) │
│ └── 로컬 캐시 DB (오프라인 읽기 폴백) │
└─────────────────────────────────────────────────────────────┘모드 | 조건 | 읽기 | 쓰기 |
온라인 | SSH 터널 정상 | 원격 직접 + 캐시 저장 | 정상 |
오프라인 | SSH 터널 끊김 | 캐시 읽기 전용 | 차단 (secrets 제외) |
서버/클라이언트는 동일 코드.
.env의CACHE_ENABLED로 구분한다.
운영 모드 비교
기본 모드 (로컬 Docker) | 원격 접속 모드 (SSH 터널) | |
대상 | 단일 머신 사용자 | 멀티 머신 (서버 + 클라이언트) |
설정 |
|
|
Docker | 로컬에서 실행 | 원격 서버에서 실행 |
Ollama | 로컬에서 실행 | 원격 서버에서 실행 |
오프라인 | Docker 실행 중이면 항상 동작 | SSH 터널 끊기면 캐시 읽기만 가능 |
장점 | 설정 간단, 네트워크 불필요 | 리소스 절약, 여러 컴퓨터에서 접근 |
적합 환경 | 데스크톱 1대 | 노트북 + 서버, 외부에서 접근 필요 |
Related MCP server: Context Pilot
Quick Start
# 1. 프로젝트 클론
git clone https://github.com/zime78/zime-memory.git
cd zime-memory
# 2. 자동 설치 (Docker, Ollama, Node.js, 키 생성 포함)
./install.sh
# 3. Claude Code 재시작 후 사용
# "테스트 메모리 저장해줘" → memory_save
# "테스트 검색해줘" → memory_search수동 설치는 아래 Installation 참고. 원격 접속 모드(SSH 터널)는 원격 접속 설정 참고.
Features
4개 Store
Store | Backend | 용도 | 보안 |
general | Qdrant | 텍스트 메모, 지식, 코드 스니펫 | 벡터 유사도 검색 |
images | MinIO + Qdrant | 이미지, 스크린샷, 다이어그램 | Object Lock (30일) |
files | MinIO + Qdrant | 문서, 설정 파일, 바이너리 | Object Lock (30일) |
secrets | SQLCipher | API 키, 토큰, 비밀번호 | AES-256 전체 DB 암호화 |
19개 MCP 도구
도구 | 설명 |
| 메모리 저장 (자동 임베딩, 중복 감지) |
| 의미 기반 유사도 검색 (크로스 스토어 지원) |
| 단건 상세 조회 (관련 메모리 추천) |
| 필터 기반 목록 조회 (페이지네이션) |
| 메모리 수정 (임베딩 자동 재생성) |
| 단건 삭제 |
| 건수 조회 (그룹별 분류) |
| 4개 스토어 통합 통계 |
| JSON 내보내기 |
| JSON 가져오기 (중복 건너뛰기) |
| 필터 기반 일괄 삭제 |
| 메모리 간 관계 설정 |
| LLM 기반 카테고리 요약 |
| Qdrant + MinIO + SQLCipher 통합 백업, SSH 원격 백업 |
| soft-delete 복원, DB 복원 |
| 이미지/파일 다운로드 (Presigned URL) |
| 임베딩 모델 변경 시 벡터 재생성 |
| 기존 데이터 store 태그 마이그레이션 |
| Obsidian vault 양방향 동기화 |
주요 특징
3-Mode 임베딩 — Ollama(기본), 로컬(transformers.js), Off(키워드만) 선택 가능
의미 기반 검색 — 정확한 키워드 불필요, "Docker 설정" 검색 시 "docker compose 네트워크 구성" 결과 반환
크로스 스토어 검색 —
store: "all"로 4개 스토어 통합 검색Obsidian 연동 — YAML frontmatter 기반 양방향 동기화
자동 백업 — NAS 복사, 스냅샷 프루닝 (최대 20개)
SSH 원격 백업 — 시크릿 2중화, rsync 기반 원격 호스트 백업 + 스냅샷 관리
Draft & TTL — 임시 저장, 자동 만료
메모리 연결 — 계층 구조 (parentId) + 네트워크 구조 (relatedIds)
원격 접속 모드 — SSH 터널 기반 원격 Docker 연결 + 읽기 캐시 오프라인 폴백
Prerequisites
도구 | 버전 | 용도 |
>= 18 | 런타임 | |
latest | Qdrant, MinIO 컨테이너 | |
latest | 임베딩 모델 (기본: bge-m3, | |
latest | MCP 클라이언트 |
Installation
GitHub Clone (권장)
git clone https://github.com/zime78/zime-memory.git
cd zime-memory
./install.shArchive Install
tar xzf zime-memory-installer.tar.gz
cd zime-memory
./install.shinstall.sh 자동 실행 내용
Phase | 내용 | 미설치 시 |
1. 필수 도구 확인 | Docker, Node.js, Ollama, jq | Y/n 확인 후 자동 설치 (macOS brew / Linux) |
2. 소스 배치 + .env | 설치 위치 복사, 환경변수 생성 | MinIO/SQLCipher 키 자동 생성 |
3. Docker 시작 | Qdrant + MinIO 컨테이너 | macOS: Docker Desktop 자동 실행 |
4. 빌드 |
| - |
5. Ollama 모델 | bge-m3 (1024차원) 다운로드 | macOS: Ollama 서비스 자동 시작 |
6. Claude 설정 |
| - |
7. Skill 설치 |
| - |
8. 헬스체크 | 6개 항목 검증 | - |
Upgrade (기존 사용자)
cd ~/mcp/zime-memory
git pull
./install.sh업그레이드 시 자동 처리:
.env및data/보존 (기존 키/데이터 유지)소스 업데이트 →
dist/정리 → 리빌드SKILL.md 변경분만 업데이트
버전 비교 표시 (현재 → 새 버전)
Manual Install
# 1. Clone
git clone https://github.com/zime78/zime-memory.git
cd zime-memory
# 2. 환경변수 설정
cp .env.example .env
# .env 파일을 열어 실제 값 입력
# SQLCipher 키 생성: openssl rand -hex 32
# 3. Docker 서비스 시작
docker compose up -d
# 4. 빌드
npm install
npm run build
# 5. Ollama 임베딩 모델 설치
ollama pull bge-m3
# 6. Claude Code에 MCP 서버 등록
claude mcp add zime-memory node ~/mcp/zime-memory/dist/index.js필수 키 생성 (
install.sh사용 시 자동 생성):# MinIO 비밀번호 openssl rand -base64 24 | tr -d '/+=' | head -c 24 # SQLCipher 암호화 키 (64자 hex) openssl rand -hex 32생성된 값을
.env의MINIO_SECRET_KEY,MINIO_ROOT_PASSWORD,ZIME_ENCRYPTION_KEY에 입력하세요.
원격 접속 설정 (클라이언트 모드)
# 1. autossh 설치
brew install autossh
# 2. SSH 키 인증 설정 (SSH config의 호스트명)
ssh-copy-id your-server
# 3. SSH 터널 시작
./scripts/ssh-tunnel.sh
# 4. launchd 자동시작 등록 (권장 — 재부팅 시 터널 자동 시작)
cp scripts/com.zime.memory-tunnel.plist.example scripts/com.zime.memory-tunnel.plist
# com.zime.memory-tunnel.plist 내 "your-server"를 SSH config Host명으로 변경
ln -sf ~/mcp/zime-memory/scripts/com.zime.memory-tunnel.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.zime.memory-tunnel.plist
# 5. Mac Mini .env에서 캐시 비활성화
# CACHE_ENABLED=falseConfiguration
.env.example을 .env로 복사하고 값을 설정합니다:
cp .env.example .env변수 | 필수 | 기본값 | 설명 |
|
| 임베딩 프로바이더: | |
|
| Qdrant 연결 URL | |
|
| Ollama 서비스 URL (ollama 모드) | |
|
| Ollama 임베딩 모델 (ollama 모드) | |
|
| 로컬 임베딩 모델 (local 모드, 384차원) | |
| * | MinIO 접근 키 (images/files 사용 시) | |
| * | MinIO 비밀 키 (images/files 사용 시) | |
| * | SQLCipher 암호화 키 (secrets 사용 시) | |
| Obsidian vault 경로 | ||
| NAS 백업 경로 | ||
| SSH 원격 백업 대상 호스트 (미설정 시 ZIME_SSH_HOST) | ||
|
| 원격 백업 저장 경로 | |
|
| 원격 스냅샷 최대 보관 수 | |
|
| 읽기 캐시 활성화 (서버 모드에서 | |
|
| 캐시 최대 보관 일수 | |
|
| 캐시 최대 항목 수 | |
| SSH 터널 대상 호스트 (SSH config의 Host명) |
*= 해당 store 사용 시 필수.openssl rand -hex 32로 암호화 키를 생성하세요.
Usage
Claude Code에서 자연어로 사용합니다:
# 텍스트 저장
"Docker Compose에서 네트워크 설정하는 방법 저장해줘"
# 의미 기반 검색
"도커 네트워크 관련 메모 찾아줘"
# API 키 저장
"GitHub API 키 저장해줘" → secrets store 자동 라우팅
# 이미지 저장
"이 스크린샷 저장해줘" → images store 자동 라우팅
# 크로스 스토어 검색
"전체 검색: 인증 관련 모든 메모리"
# 통계 확인
"메모리 저장소 통계 보여줘"Project Structure
zime-memory/
├── src/
│ ├── index.ts # MCP 서버 진입점
│ ├── config.ts # Zod 환경변수 검증
│ ├── instructions.ts # MCP instructions
│ ├── tools/
│ │ ├── registry.ts # 19개 도구 레지스트리
│ │ ├── memorySave.ts # 저장
│ │ ├── memorySearch.ts # 검색
│ │ └── ... # 17개 추가 도구
│ ├── services/
│ │ ├── connectionMonitor.ts # 연결 상태 모니터
│ │ ├── cacheService.ts # 읽기 캐시 (오프라인 폴백)
│ │ ├── qdrantService.ts # Qdrant 벡터 DB
│ │ ├── minioService.ts # MinIO 오브젝트 스토리지
│ │ ├── sqlcipherService.ts # SQLCipher 암호화 DB
│ │ ├── embeddingService.ts # 임베딩 Strategy Pattern (ollama/local/off)
│ │ ├── providers/
│ │ │ ├── ollamaProvider.ts # Ollama REST API 프로바이더
│ │ │ ├── localProvider.ts # @huggingface/transformers 로컬 프로바이더
│ │ │ └── noopProvider.ts # Off 모드 (제로 벡터)
│ │ ├── backupService.ts # 통합 백업 + SSH 원격 백업
│ │ ├── obsidianService.ts # Obsidian 동기화
│ │ ├── safetyService.ts # 워터마크 검증
│ │ ├── storeRouter.ts # store 라우팅
│ │ └── stores/
│ │ ├── generalOps.ts # general store (텍스트)
│ │ ├── fileOps.ts # images/files store
│ │ └── secretOps.ts # secrets store
│ ├── types/
│ │ └── index.ts # 타입 정의
│ └── utils/
│ ├── logger.ts # 로깅
│ └── response.ts # 응답 유틸
├── scripts/
│ ├── check-expiry.cjs # 시크릿 만료 알림 (Slack)
│ ├── test-setup.sh # 테스트 데이터 생성
│ ├── ssh-tunnel.sh # SSH 터널 자동 연결
│ ├── ssh-backup.sh # SSH 원격 백업 (시크릿 2중화)
│ └── com.zime.memory-tunnel.plist.example # launchd 자동시작
├── docker-compose.yml # Qdrant + MinIO
├── install.sh # 자동 설치 스크립트
├── pack.sh # 배포 아카이브 생성
├── .env.example # 환경변수 템플릿
├── package.json
└── tsconfig.jsonSecurity
보호 대상 | 방법 |
secrets store | SQLCipher AES-256 전체 DB 암호화 |
시크릿 검색/목록 |
|
이미지/파일 | MinIO Object Lock (GOVERNANCE 30일) |
Docker 포트 |
|
파일 경로 | Path Traversal 검증 |
SQL 쿼리 | 파라미터 바인딩 + 화이트리스트 검증 |
import/bulk_delete | secrets store 미지원 (안전) |
SSH 터널 통신 | SSH 암호화 터널 (로컬 포트 바인딩) |
Store Support Matrix
도구 | general | images | files | secrets | all |
save/get/update | O | O | O | O | - |
delete | O | O | O | O | - |
search | O | O | O | O | O |
list/count | O | O | O | O | O |
export | O | O | O | O | - |
import | O | O | O | X | - |
bulk_delete | O | O | O | X | - |
download | - | O | O | - | - |
link/summarize | O | - | - | - | - |
reindex | O | - | - | - | - |
obsidian_sync | O | - | - | - | - |
Tech Stack
기술 | 용도 |
Claude Code 통합 프로토콜 | |
벡터 유사도 검색 엔진 | |
S3 호환 오브젝트 스토리지 | |
AES-256 암호화 SQLite | |
임베딩 모델 (기본: bge-m3, local 모드 시 불필요) | |
로컬 임베딩 (local 모드, Ollama 불필요) | |
입력 스키마 검증 | |
타입 안전 코드 |
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/zime78/zime-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server