Remind MCP server
2026년 10월 23일 커밋AI 에이전트가 에피소드를 캡처하고, 개념을 큐레이션하며, 시간적 사실과 시맨틱 검색을 통해 컨텍스트를 회상할 수 있도록 지속 가능한 메모리 레이어를 제공합니다.
다른 이름 sandst1/remind
- 스타
- 84
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 23일
- 라이선스
- Apache-2.0
Remind MCP란?
Remind은(는) MCP server입니다. AI 에이전트가 에피소드를 캡처하고, 개념을 큐레이션하며, 시간적 사실과 시맨틱 검색을 통해 컨텍스트를 회상할 수 있도록 지속 가능한 메모리 레이어를 제공합니다.
프로젝트 README에서 생성된 요약
Remind MCP server 정보
Remind는 Claude Desktop 또는 Cursor와 같은 도구를 사용하는 개발자가 AI 에이전트에게 지속 가능한 메모리 레이어를 제공할 수 있게 합니다. 에이전트가 가공되지 않은 경험을 에피소드로 캡처하고 이를 일반화된 개념으로 정리할 수 있는 결정론적 기반 역할을 합니다. fastembed를 통한 로컬 임베딩을 사용하므로 기본 설정에는 API 키가 필요하지 않지만, 클라우드 기반 임베딩이 필요한 경우 OpenAI를 지원합니다.
사용자는 CLI, REST API 또는 MCP server 연결을 통해 메모리와 상호작용합니다. 시스템은 시간적 사실을 관리하고, 충돌 감지를 통해 모순을 찾아내며, 지식의 구조화된 큐레이션을 지원합니다. 로컬 JSON 파일, sqlite-vec을 사용하는 SQLite, pgvector를 사용하는 PostgreSQL, MySQL 등 다양한 스토리지 백엔드를 지원합니다. 이를 통해 메모리를 Git 저장소에서 코드와 함께 버전 관리할 수 있어, 브랜치 체크아웃이나 머지 시에도 컨텍스트가 유지되도록 보장합니다.
활용 사례
- 1기술적 결정 사항 캡처에이전트가 특정 아키텍처 선택 사항을 사실로 기록하여 향후 발생할 수 있는 모순을 방지할 수 있습니다.
- 2지식을 개념으로 정리개발자는 여러 개의 가공되지 않은 에피소드를 제목과 요약이 포함된 하나의 구조화된 개념으로 변환할 수 있습니다.
- 3시맨틱 컨텍스트 검색AI 클라이언트가 시맨틱 검색을 수행하여 저장된 메모리를 바탕으로 질문에 답변할 수 있습니다.
- 4메모리 충돌 관리시스템이 새로운 정보가 기존 사실과 충돌하는 시점을 식별하여 수동으로 문제를 해결할 수 있도록 돕습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
REMIND_DB_URL
| 이름 | 설명 | 유형 |
|---|---|---|
| REMIND_DB_URL | — |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
README
GitHub에서 보기Remind
Agent-driven memory layer for LLMs. Remind is a deterministic memory substrate with temporal facts, semantic retrieval, and structured curation — the calling agent is the only intelligence.
Documentation · Examples · Changelog

Quick start
pip install remind-mcp
No configuration required — Remind uses local embeddings by default (fastembed, no API key).
remind remember "This project uses React with TypeScript"
remind remember "Chose PostgreSQL for the database" -t decision
remind remember "Cache TTL is 600 seconds" -t fact -e concept:caching
remind recall "What tech stack are we using?"
Durable local memory
Local memory is stored as deterministic JSON records in .remind/memory/. Commit those files with the code; memories follow branch checkout and merge normally. .remind/cache/ and .remind/runtime/ hold ignored indexes, embeddings, logs, and recovery data. Existing local databases migrate automatically with a retained backup. Explicit sqlite://, PostgreSQL, and MySQL URLs continue selecting SQL directly.
remind --store ./my-memory remember "User prefers concise answers"
remind remember "Cache TTL is 600 seconds" -t fact --json --idempotency-key ttl-change
remind recall "cache configuration" --json --explain
remind doctor
remind export memory.json # complete portable knowledge
remind export backup.json --mode backup # also include embeddings and usage
Edits now require revisions from snapshot; CLI apply accepts --revisions '{"<id>":"<revision>"}', MCP/Python apply accepts expected_revisions. Read-only recall returns a structured RecallResult in Python; use .text for prompt context. Storage and migration describes the breaking changes.
Local evaluations cover capture → curation → restart → recall through Python, CLI, MCP, and REST. Run remind-eval --suite operational, remind-eval --suite retrieval (real local embeddings), or remind-eval --suite agent --agent-command '<runner command>'. See evals/README.md for datasets, gates, and the external runner contract. No internal LLM calls or CI are introduced.
How it works
Remind stores episodes (raw experiences) and concepts (generalized knowledge). You capture and curate memories explicitly using CLI commands or MCP tools.
For facts (-t fact), Remind automatically:
- Creates a
Factrow with validity tracking - Assigns it to a cluster based on entity overlap (Jaccard similarity)
- Detects potential collisions with existing facts — same-cluster collisions and cross-cluster related facts are returned with ready-to-paste
applycommands
For any remember call, the output also surfaces the top-5 nearest episodes and concepts semantically, so you can catch contradictions before they go unnoticed.
For patterns and concepts, you use remind apply to create them from episodes:
remind apply --revisions '<ID-to-revision JSON from snapshot>' << 'EOF'
concept from=ep:11,ep:12 title="Retry-with-backoff for resilience" "Exponential backoff resolves flaky deploys and API timeouts."
processed ids=ep:11,ep:12
EOF
Two batch tools
remind snapshot — Read state
remind snapshot stats pending conflicts health # Full overview
remind snapshot entity:concept:caching # Everything about an entity
remind snapshot concept:abc123 # Concept detail with history
# Browse scopes (for exploring memory)
remind snapshot concepts # All concepts
remind snapshot episodes:20 # Recent 20 episodes
remind snapshot entities:person # Entities filtered by type
remind snapshot labels # All labels with counts
remind snapshot decisions questions # Episodes by type
remind snapshot bootstrap # Query-free stable context
Returns JSON. Combinable scopes:
| Scope | Description |
|---|---|
pending |
Unprocessed episodes with their entities |
conflicts[:<status>] |
Open conflicts (or resolved/dismissed/all) |
health |
Actionable issues: pending episodes, open conflicts, orphan concepts |
stats |
Memory statistics |
concepts[:<n>] |
All concepts (default 50) |
episodes[:<n>] |
Recent episodes (default 20) |
entities[:<type>] |
All entities with mention counts, filterable by type |
labels |
All distinct key/value labels in use, with counts |
decisions[:<n>] |
Recent decision episodes |
questions[:<n>] |
Recent question episodes |
entity:<id> |
Episodes and concepts for a specific entity |
label:<key>=<value> |
All episodes and concepts carrying a label |
concept:<id> |
Concept detail with facts and supersession history |
recent:<n> |
N most recent episodes |
query:<text> |
Semantic search results |
events[:<since_seq>] |
Change-feed events with seq > since_seq (default 0). Prefer remind events. |
bootstrap[:<n>] |
Query-free stable context: top-n actionable concepts by confidence + open conflicts + stats (default 10) |
remind events — Poll the change feed
remind events # All events from the start
remind events --since 42 # Only events after seq 42
remind events --kind conflict_opened --since 42
Every write (remember, supersede, conflict, resolve, dismiss, concept, update, label, unlabel, delete, restore, processed) appends an append-only row atomically with the write it describes. Returns {since_seq, count, events, next_since_seq} — pass next_since_seq back in as --since on the next poll instead of re-scanning snapshot pending.
remind apply — Write changes
remind apply << 'EOF'
remember as=f1 t=fact e=concept:cache "Cache TTL is 600 seconds"
supersede old=fact:old123 new=$f1
concept as=c1 from=ep:1,ep:2 title="Pattern name" "Summary"
evidence concept=$c1 episode=ep:3 type=supports strength=0.8 "confirms pattern"
resolve id=conflict:7 winner=fact:abc "confirmed by alice"
processed ids=ep:1,ep:2
EOF
All operations run in a single transaction. --dry-run validates without executing.
Operations:
| Op | Description |
|---|---|
remember |
Store episode (same params as CLI remember) |
supersede old=<fact> new=<fact> |
Replace old fact — auto-records resolved conflict |
conflict fact_a=<id> fact_b=<id> |
Flag contradiction for triage |
resolve id=<conflict> winner=<fact> |
Resolve conflict; losing fact is superseded |
dismiss id=<conflict> |
Dismiss conflict (both facts stay active) |
concept from=<eps> title="..." "summary" |
Create concept from episodes |
link from=<concept> to=<concept> type=<relation> |
Add concept relation |
evidence concept=<id> episode=<id> type=<supports|contradicts|qualifies> |
Link episode evidence to concept |
unlink concept=<id> episode=<id> |
Remove evidence link |
entity_relation source=<id> target=<id> relation=<type> |
Create entity graph edge |
reshape id=<concept> type=<new_type> |
Change concept type |
merge from=<id1>,<id2> into=<new_id> |
Combine overlapping concepts |
split id=<concept> into=<id1>,<id2> |
Separate distinct concerns |
update id=<id> [field=value...] |
Update episode or concept fields |
label id=<id> key=<key> value=<value> |
Add a key=value label to episode/concept |
unlabel id=<id> key=<key> value=<value> |
Remove a key=value label from episode/concept |
delete id=<id> / restore id=<id> |
Soft delete / restore |
processed ids=<ep1>,<ep2> |
Mark episodes as reviewed |
Agent skills
Install skills to teach AI agents how to use Remind:
remind skill-install
remind skill-install --agent claude # Use .claude/skills instead
remind skill-install --dir ~ # Install into ~/.agents/skills
remind skill-install --agent cursor --dir /path/to/project
By default, skills go into .agents/skills under the current working directory.
Use --agent agents|claude|cursor|codex|opencode to select a layout and --dir
to choose any base folder. Codex uses .agents/skills; OpenCode uses
.opencode/skills in projects and .config/opencode/skills when targeting home.
Re-running the command overwrites installed skill files with the bundled versions.
Three skills:
- remind-capture — When and how to write memories (includes decision tree and entity type guide)
- remind-context — When and how to recall before acting (includes output interpretation guide)
- remind-curate — How to process pending episodes into concepts, resolve conflicts, maintain quality
MCP Server
For IDE agents (Cursor, Claude Desktop, etc.):
remind-mcp --port 8765
{
"mcpServers": {
"remind": {
"url": "http://127.0.0.1:8765/sse?db=my-project"
}
}
}
Tools: remember, recall, snapshot, apply, plus conflict/entity management.
Web UI at http://127.0.0.1:8765/ui/, REST API at /api/v1/.
Key features
- Zero-config embeddings — Local fastembed by default (no API key required)
- Labels as a substrate primitive — Freeform
key=valuetags on episodes/concepts, pushed down as a pre-filter into vector search (recall -l key=value), not just a post-filter - Change feed — Append-only
eventstable written atomically with every write; poll withremind events --since <seq>instead of re-scanning pending state - Query-free bootstrap read —
snapshot bootstrapreturns deterministic, stable context (top concepts + conflicts + stats) with no embedding call, cheap enough to inject every turn - Temporal facts — Validity windows, structural supersession, time-travel queries (
--as-of) - Collision detection — Same-cluster and cross-cluster collisions reported on write with ready-to-paste
applycommands - Nearby surfacing — Every
remembercall returns the top-k semantically nearest episodes and concepts for immediate conflict triage - Evidence-weighted retrieval — Episodes link to concepts with typed relationships (
supports,contradicts,qualifies); more evidence = higher recall rank - Freeform concept types — Concepts can have any type string:
pattern,rule,procedure,hypothesis, or any domain-specific label - Concept evolution —
reshape(change type),merge(combine overlapping),split(separate concerns), all with lineage tracking - Transactional writes —
applyruns all operations atomically - Spreading activation retrieval — Queries activate related concepts through the knowledge graph
- Native vector indexes — sqlite-vec (SQLite), pgvector (PostgreSQL)
- Entity graph — Files, functions, people, tools linked to episodes and concepts via
entity_relation - Memory decay — Rarely-recalled concepts fade
- Soft delete / restore — With permanent purge as a separate step
- Web UI — Dashboard, concept graph, entity explorer
Embedding providers
Local embedding is the default (384-dim all-MiniLM-L6-v2). For cloud embeddings:
pip install "remind-mcp[openai]" # OpenAI embeddings
pip install "remind-mcp[rerank]" # Cross-encoder reranking
{
"embedding_provider": "openai",
"openai": { "api_key": "sk-..." }
}
Database backends
Local JSON records are the default; SQLite is used for disposable indexes. Explicit SQL URLs select a database backend. For PostgreSQL or MySQL:
pip install "remind-mcp[postgres]" # PostgreSQL (psycopg v3 + pgvector)
pip install "remind-mcp[mysql]" # MySQL (PyMySQL)
export REMIND_DB_URL="postgresql+psycopg://user:pass@localhost:5432/mydb"
CLI reference
Core
remember Add an episode (-t type, -e entity, -l key=value label, --asserted-by, --source-ref)
recall Semantic or entity-based retrieval (-k, --episode-k, -l label filter, --as-of)
snapshot Read memory state as JSON (combinable scopes)
apply Apply a batch changeset transactionally
Inspection
inspect List or detail concepts; use --episodes for episodes
stats Memory statistics
entities List entities or show details
Episode types
decisions Show decision episodes
questions Show open question episodes
Conflicts
conflicts list/resolve/dismiss
Editing
update-episode/update-concept
delete-episode/restore-episode/purge-episode
delete-concept/restore-concept/purge-concept
Embeddings
embed-episodes Backfill embeddings
re-embed Recompute embeddings (--episodes/--concepts/--entities/--all)
Import / Export
export/import
Skills
skill-install Install Remind skills
UI
ui Launch the web UI
Entity types: file, function, class, module, subject, person, project, tool — format is type:name (e.g., file:src/auth.ts, person:alice, tool:redis, concept:caching)
Documentation
Full documentation at sandst1.github.io/remind:
- What is Remind? — How it works
- Skills + CLI — Agent integration
- Configuration — Providers, config
- CLI Reference — All commands
- MCP Tools — MCP reference
License
Apache 2.0 (LICENSE)
Remind MCP 질문
Remind를 사용하려면 API 키나 설정이 필요한가요?
아니요. Remind는 기본적으로 fastembed를 통한 로컬 임베딩을 사용하므로 별도의 설정이나 API 키 없이 작동합니다.
Remind가 제공하는 MCP 도구는 무엇인가요?
MCP server는 remember, recall, snapshot, apply 도구와 함께 충돌 및 엔티티 관리 기능을 제공합니다.
Remind는 기본적으로 메모리를 어디에 저장하나요?
로컬 메모리는 .remind/memory/에 결정론적인 JSON 레코드로 저장되며, 코드와 함께 커밋할 수 있습니다. SQLite, PostgreSQL, MySQL URL도 지원합니다.
로컬 임베딩 대신 OpenAI 임베딩을 사용할 수 있나요?
네. openai extra를 설치하고 embedding_provider를 openai로 설정한 뒤 API 키를 입력하면 됩니다.
에이전트가 Remind를 사용하는 법을 어떻게 배우나요?
remind skill-install 명령어를 사용하여 Claude, Cursor, Codex, OpenCode와 같은 에이전트용 번들 Agent Skills(capture, context, curate)를 설치하면 됩니다.