memory-lancedb MCP server
2026년 10월 22일 커밋LanceDB의 하이브리드 벡터 및 키워드 검색을 사용하여 AI agent에게 지속적인 장기 기억을 제공합니다.
다른 이름 cablate/memory-lancedb-mcp
- 스타
- 0
- Tools
- 20
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 22일
- 라이선스
- MIT
memory-lancedb MCP란?
memory-lancedb은(는) MCP server입니다. LanceDB의 하이브리드 벡터 및 키워드 검색을 사용하여 AI agent에게 지속적인 장기 기억을 제공합니다. 20개 도구를 제공합니다. 예: memory_recall, memory_store, memory_forget.
프로젝트 README에서 생성된 요약
memory-lancedb MCP server 정보
memory-lancedb-mcp는 AI agent가 서로 다른 세션에 걸쳐 과거의 상호작용과 결정을 기억할 수 있는 능력을 부여합니다. LanceDB를 사용하여 지속적인 장기 기억 레이어를 제공하므로, agent는 새로운 채팅이 시작될 때마다 처음부터 시작하는 대신 지식을 자동으로 축적할 수 있습니다. 이 시스템은 Claude Desktop과 같은 MCP 호환 클라이언트를 사용하는 개발자를 위해 설계되었습니다.
사용자는 임베딩 API 키와 text-embedding-3-small과 같은 특정 임베딩 모델에 대한 환경 변수를 설정하여 서버를 구축합니다. 서버는 의미론적 의미와 키워드 검색을 결합한 하이브리드 검색을 사용하여 관련 정보를 찾습니다. 정보를 저장하는 memory_store, 정보를 검색하는 memory_recall, 버전 기록을 유지하면서 기존 항목을 수정하는 memory_update와 같은 전문 도구가 포함되어 있습니다. 지식 베이스를 건강하게 유지하기 위해 끊어진 링크를 수정하는 memory_lint 및 중복 데이터를 결합하는 memory_merge와 같은 유지 관리 도구도 제공합니다.
활용 사례
- 1과거 사용자 선호도 회상AI agent가 이전 대화에서 요청된 특정 애니메이션 스타일이나 내보내기 설정을 기억할 수 있습니다.
- 2깨끗한 지식 베이스 유지개발자는 자동화된 도구를 사용하여 데이터베이스 내의 고립된 메모리나 누락된 링크를 식별하고 수정할 수 있습니다.
- 3메모리 연결 시각화대화형 HTML 그래프를 생성하여 서로 다른 메모리와 주제가 어떻게 클러스터링되는지 확인할 수 있습니다.
- 4모순된 정보 방지새로운 정보가 이미 저장된 내용과 충돌할 경우 시스템이 agent에게 알림을 보낼 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
memory-lancedb MCP 도구 20
README에서 감지됨memory_recallmemory_storememory_forgetmemory_updatememory_mergememory_historymemory_statsmemory_listmemory_lintself_improvement_logself_improvement_extract_skillself_improvement_review
| memory_recall | — | |
| memory_store | — | |
| memory_forget | — | |
| memory_update | — | |
| memory_merge | — | |
| memory_history | — | |
| memory_stats | — | |
| memory_list | — | |
| memory_lint | — | |
| self_improvement_log | — | |
| self_improvement_extract_skill | — | |
| self_improvement_review | — |
도구 20개 모두 보기도구 수 줄이기
memory_visualizetextvectorcategoryscopeimportancetimestampmetadata
| memory_visualize | — | |
| text | — | |
| vector | — | |
| category | — | |
| scope | — | |
| importance | — | |
| timestamp | — | |
| metadata | — |
구성
EMBEDDING_API_KEYEMBEDDING_MODELMEMORY_LANCEDB_CONFIG
| 이름 | 설명 | 유형 |
|---|---|---|
| EMBEDDING_API_KEY | — | |
| EMBEDDING_MODEL | — | |
| MEMORY_LANCEDB_CONFIG | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능cablate/memory-lancedb-mcp is public and reachablegithub.com/cablate/memory-lancedb-mcp ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-22github.com/cablate/memory-lancedb-mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음20 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Persistent, intelligent long-term memory for any MCP-compatible AI agent.
English | 繁體中文
Before / After
Without memory, every session starts from zero. With memory-lancedb-mcp, your agent accumulates knowledge across sessions — automatically.
Before — agent has no context:
User: "Use the same animation style as last time"
Agent: "I don't have any context about previous animations. Could you describe what you'd like?"
After — agent recalls past decisions:
<memories>
1. Remotion spring animation: use duration >= 20, damping 12-15 for smooth easing
2. Video export preset: 1080p, 30fps for social, 60fps for demo
</memories>
<refs>#1=6352a7d2 #2=bed148f0</refs>
Store responses are minimal — no noise, just confirmation:
Stored. [topic: remotion]
Quick Start
1. Install
npm install -g @cablate/memory-lancedb-mcp
2. Configure
Add to your MCP client settings (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@cablate/memory-lancedb-mcp"],
"env": {
"EMBEDDING_API_KEY": "your-api-key",
"EMBEDDING_MODEL": "text-embedding-3-small"
}
}
}
}
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@cablate/memory-lancedb-mcp"],
"env": {
"MEMORY_LANCEDB_CONFIG": "/path/to/config.json"
}
}
}
}
See config.example.json for all options.
How It Works
store recall
│ │
┌────────▼────────┐ ┌────────▼────────┐
│ Filter junk │ │ Search by meaning │
│ Save + embed │ │ AND keywords │
│ Link related │ │ Re-rank results │
│ Flag conflicts │ │ Fade stale ones │
│ Tag topic │ │ Pull in related │
└────────┬────────┘ │ Merge duplicates │
│ └────────┬────────┘
▼ ▼
┌─────────────────────────────────────────────┐
│ LanceDB (local, zero-config) │
└─────────────────────────────────────────────┘
Every memory_store saves to a local database, automatically links related memories, flags contradictions, and assigns topic labels — no extra API calls needed. Every memory_recall searches by both meaning and keywords, pulls in related memories the main search might miss, and includes maintenance hints so the agent can keep its own knowledge base clean.
Features
Retrieval
- Finds the right memory even when you use different words — searches by meaning and exact keywords simultaneously, then combines the best of both
- More precise results, not just surface matches — an optional second pass re-ranks results by actual relevance (6 providers supported)
- Search multiple topics at once — pass a
queriesarray to search several keywords in one call; results are deduplicated and memories that match multiple queries rank higher - Finding A automatically surfaces related B — when a memory is found, its linked neighbors are pulled in too, even if they use completely different words
- Minimal token overhead — responses use compact XML tags (
<memories>,<hints>,<refs>) with short IDs, no category/scope noise
Storage
- Related memories link themselves — when you store something new, it automatically creates bidirectional links to similar existing memories
- Conflicts get flagged — if a new memory contradicts an existing one, you get a warning so nothing silently overwrites
- Topics assigned automatically — each memory gets a topic label inferred from its content and neighbors; you can also set it explicitly
- Junk gets filtered out — greetings, refusals, and meta-questions are rejected before they waste storage
Lifecycle
- Frequently used memories stay sharp, stale ones fade — a decay model balances how recent, how often accessed, and how important each memory is
- Memories earn their keep — three tiers (Peripheral → Working → Core); the more a memory gets used, the faster it promotes
- Full version history — when you update a memory, the old version is preserved in a chain you can trace with
memory_history
Maintenance
- The agent maintains itself — recall results include inline hints about duplicates, dormant memories, and contradictions
- Health checks on demand —
memory_lintfinds orphaned memories, stale entries, and missing links, then fixes what it can - Merge duplicates —
memory_mergecombines two redundant memories into one; originals are marked as superseded - See your memory space —
memory_visualizegenerates an interactive HTML graph you can open in any browser
Visualization
Run memory_visualize to generate an interactive knowledge graph of your memory space:
- Automatic clustering — related memories group together visually
- Similarity edges, duplicate detection, importance sizing
- Time filter, growth animation, cluster view
- Self-contained HTML — open in any browser
Query → embedQuery() ─┐
├─→ RRF Fusion → Rerank → Lifecycle Decay → Length Norm → Filter
Query → BM25 FTS ─────┘
| Stage | Effect |
|---|---|
| RRF Fusion | Combines semantic and exact-match recall |
| Cross-Encoder Rerank | Promotes semantically precise hits |
| Lifecycle Decay | Weibull freshness + access frequency + importance |
| Length Normalization | Prevents long entries from dominating (anchor: 500 chars) |
| Hard Min Score | Removes irrelevant results (default: 0.35) |
| MMR Diversity | Cosine similarity > 0.85 → demoted |
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
EMBEDDING_API_KEY |
Yes | API key for embedding provider |
EMBEDDING_MODEL |
No | Model name (default: text-embedding-3-small) |
EMBEDDING_BASE_URL |
No | Custom base URL for non-OpenAI providers |
MEMORY_DB_PATH |
No | LanceDB storage directory |
MEMORY_LANCEDB_CONFIG |
No | Path to JSON config file |
{
"embedding": {
"apiKey": "${EMBEDDING_API_KEY}",
"model": "jina-embeddings-v5-text-small",
"baseURL": "https://api.jina.ai/v1",
"dimensions": 1024,
"taskQuery": "retrieval.query",
"taskPassage": "retrieval.passage",
"normalized": true
},
"dbPath": "./memory-data",
"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"minScore": 0.3,
"rerank": "cross-encoder",
"rerankApiKey": "${JINA_API_KEY}",
"rerankModel": "jina-reranker-v3",
"rerankEndpoint": "https://api.jina.ai/v1/rerank",
"rerankProvider": "jina",
"candidatePoolSize": 20,
"hardMinScore": 0.35,
"filterNoise": true
},
"enableManagementTools": true,
"enableSelfImprovementTools": false,
"enableVisualizationTools": true,
"scopes": {
"default": "global",
"definitions": {
"global": { "description": "Shared knowledge" },
"agent:my-bot": { "description": "Private to my-bot" }
},
"agentAccess": {
"my-bot": ["global", "agent:my-bot"]
}
},
"decay": {
"recencyHalfLifeDays": 30,
"frequencyWeight": 0.3,
"intrinsicWeight": 0.3
}
}
Works with any OpenAI-compatible embedding API:
| Provider | Model | Base URL | Dimensions |
|---|---|---|---|
| OpenAI | text-embedding-3-small |
https://api.openai.com/v1 |
1536 |
| Jina | jina-embeddings-v5-text-small |
https://api.jina.ai/v1 |
1024 |
| DeepInfra | Qwen/Qwen3-Embedding-8B |
https://api.deepinfra.com/v1/openai |
1024 |
| Google Gemini | gemini-embedding-001 |
https://generativelanguage.googleapis.com/v1beta/openai/ |
3072 |
| Ollama (local) | nomic-embed-text |
http://localhost:11434/v1 |
varies |
| Provider | rerankProvider |
Endpoint | Example Model |
|---|---|---|---|
| Jina | jina |
https://api.jina.ai/v1/rerank |
jina-reranker-v3 |
| Hugging Face TEI | tei |
http://host:8081/rerank |
BAAI/bge-reranker-v2-m3 |
| SiliconFlow | siliconflow |
https://api.siliconflow.com/v1/rerank |
BAAI/bge-reranker-v2-m3 |
| Voyage AI | voyage |
https://api.voyageai.com/v1/rerank |
rerank-2.5 |
| Pinecone | pinecone |
https://api.pinecone.io/rerank |
bge-reranker-v2-m3 |
| DashScope | dashscope |
https://dashscope.aliyuncs.com/api/v1/services/rerank |
gte-rerank |
Core Tools
| Tool | Description |
|---|---|
memory_recall |
Search memories — supports batch queries, relation expansion, topic filtering, and inline maintenance hints |
memory_store |
Save a memory — auto-links related ones, flags contradictions, infers topic, filters junk |
memory_forget |
Delete by ID or search query |
memory_update |
Update a memory; the old version is preserved in a version chain |
memory_merge |
Merge two memories into one |
memory_history |
Trace version history through update/merge chains |
Management Tools (opt-in)
| Tool | Description |
|---|---|
memory_stats |
Usage statistics by scope and category |
memory_list |
List recent memories with filtering |
memory_lint |
Health checks + auto-fix missing relations |
Enable: "enableManagementTools": true
Self-Improvement Tools (opt-in)
| Tool | Description |
|---|---|
self_improvement_log |
Log structured learning/error entries |
self_improvement_extract_skill |
Create skill scaffolds from learnings |
self_improvement_review |
Summarize governance backlog |
Enable: "enableSelfImprovementTools": true
Visualization Tools (on by default)
| Tool | Description |
|---|---|
memory_visualize |
Generate interactive HTML memory graph |
Params: output_path, scope, threshold (default: 0.65), max_neighbors (default: 4)
Disable: "enableVisualizationTools": false
LanceDB table memories:
| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Primary key |
text |
string | Memory text (FTS indexed) |
vector |
float[] | Embedding vector |
category |
string | preference / fact / decision / entity / skill / lesson / other |
scope |
string | Scope identifier |
importance |
float | Importance score 0-1 |
timestamp |
int64 | Creation timestamp (ms) |
metadata |
string (JSON) | Extended metadata (tier, access_count, relations, topic, etc.) |
Development
git clone https://github.com/cablate/memory-lancedb-mcp.git
cd memory-lancedb-mcp
npm install
npm test
Run locally:
EMBEDDING_API_KEY=your-key npx tsx server.ts
Credits
Built on CortexReach/memory-lancedb-pro — original work by win4r and contributors.
License
MIT — see LICENSE for details.
memory-lancedb MCP 질문
memory-lancedb MCP는 어떤 도구를 제공하나요?
20개 도구를 제공합니다. 예: memory_recall, memory_store, memory_forget, memory_update, memory_merge.
메모리 검색은 어떻게 작동하나요?
의미론적 의미와 정확한 키워드를 동시에 검색하는 하이브리드 방식을 사용하며, RRF Fusion을 통해 검색 결과를 결합합니다.
메모리 데이터를 시각화할 수 있나요?
네, memory_visualize 도구를 사용하여 클러스터와 유사성 엣지를 보여주는 대화형 HTML 지식 그래프를 생성할 수 있습니다.
새로운 메모리가 기존 메모리와 모순되면 어떻게 되나요?
시스템이 저장 과정에서 모순을 자동으로 감지하여 데이터가 조용히 덮어쓰여지는 것을 방지합니다.
다양한 임베딩 제공업체를 지원하나요?
네, OpenAI, Jina, Google Gemini 및 로컬 Ollama 인스턴스를 포함하여 OpenAI 호환 임베딩 API라면 무엇이든 사용할 수 있습니다.