๐Ÿš€ Offline ยท Protokol MCP ยท Tanpa API

mcp-rag-memory

Memori jangka panjang untuk AI kamu ๐Ÿง 
RAG + manajemen konteks โ€” offline penuh, tanpa API key!
Nodejs
TS TypeScript
SQL SQLite
19 Tools
Bisa offline

๐ŸฆธSiapa bosnya?

The Coder โ€” "I'm The Coder, Selamat datang dan Semoga perjalanan mu menyenangkan"

Disimpan sebagai memori importance-1.0, tag identity โ€” tiap sesi menyapa The Coder lebih dulu ๐Ÿ‘‹

โœจFungsi utama

๐Ÿง 
Memori Konteks

Ingat fakta, keputusan, preferensi. Panggil lagi kapan saja. Rating pentingnya, satukan yang dobel!

๐Ÿ“š
RAG Dokumen

Kasih dokumen โ†’ dipecah & di-embed & disimpan di SQLite โ†’ tanya apa saja, dapat bagian yang tepat.

โšก
Tanpa API

Embedder hash lokal 1024-dim, node:sqlite bawaan. Tanpa cloud, tanpa key, tanpa tagihan ๐Ÿ’ธ

๐Ÿ”Ž
Cari Hybrid

BM25 (FTS5) + vektor digabung pakai RRF. Presisi kata kunci, paham makna โ€” dua-duanya!

๐Ÿ”Œ
MCP Universal

Mendukung opencode, Claude Desktop, Cursor, VS Code โ€” satu memori untuk semua teman MCP.

๐Ÿ›ก๏ธ
Input Aman

File gede ditolak (RAG_MAX_FILE_MB), path bisa di-batasi (RAG_ALLOWED_DIRS), dokumen dobel dideteksi.

โšกMulai cepat

3 perintah mudah, langsung jalan! ๐ŸŽฉ
npm install
npm test                 # 160 cek: unit + round-trip MCP
npm run lint             # oxlint
npm run build            # kompilasi ke dist/
npm run cli -- docs      # playground CLI
npx mcp-rag-memory       # langsung jalan dari npm (butuh Node >= 22.12)

๐ŸŒSatu memori, semua agent

โšก
opencode

Config MCP global โ€” ingat kamu di semua project.

๐ŸŸฃ
Claude Desktop

claude_desktop_config.json โ†’ mcpServers.

๐Ÿ”ต
Cursor / Windsurf

Settings โ†’ MCP โ†’ Add server. Trik yang sama jalan!

๐ŸŸฆ
VS Code

.vscode/mcp.json dengan "type": "stdio".

๐Ÿงฉ Tips: perintah sama di mana saja โ€” npx mcp-rag-memory setelah `npm install -g` / publish, atau node --import tsx <path>/src/mcp/rag-server.ts buat dev lokal. Ingat sekali, panggil di mana saja!

๐Ÿงฐ19 Tools MCP

GrupToolFungsi
Sistemsystem_statsLokasi DB, backend embedding, jumlah dok/memori
RAG Inputrag_ingest_textSimpan teks mentah (deteksi dobel otomatis)
rag_ingest_fileSimpan sebuah file
rag_ingest_dirInput satu folder penuh!
RAG Carirag_searchCari hybrid (BM25 + vektor), chunk terurut
rag_retrieveBlok konteks siap-suntik
RAG Dokumenrag_list_documentsInventaris dokumen (ada limit/offset)
rag_document_statsJumlah dokumen & chunk
rag_delete_documentHapus dokumen + chunk
Sinkron Sesirag_sync_sessionInput sesi opencode masuk store RAG
Memorimemory_rememberSimpan memori jangka panjang
memory_recallCari memori semantik
memory_contextBlok ringkas untuk prompt
memory_list/get/update/forgetCRUD lengkap
memory_consolidateDedupe + promosi memori panas
memory_statsJumlah, token, rata-rata penting

๐Ÿ’พInput sesi tersimpan otomatis

Setiap pesan yang kamu ketik di opencode bisa ikut masuk store RAG sebagai dokumen yang bisa dicari โ€” tanpa mencampur memori jangka panjang yang kurasi.

# plugin ".opencode/plugin/session-logger.ts" auto-sync tiap menit (RAG_AUTOSYNC=0 utk matikan)
npm run sync-latest -- --dir "D:/Project/my-app"   # sesi terbaru di workspace itu
npm run sync-session -- ses_abc123                  # sesi tertentu
npm run cli -- sessions                             # daftar sesi terbuka

Data dibaca dari DB opencode sendiri (~/.local/share/opencode/opencode.db), aman karena dedup per (source, sesi, timestamp) โ€” jalan berulang-ulang tidak bikin dobel, tapi pesan sama di sesi berbeda tetap jadi dokumen terpisah. Input panjang otomatis dipadatkan ke point inti (ekstraktif, tanpa LLM) supaya storage ramping; ketik ulang tetap utuh. Tool MCP rag_sync_session nyediain akses yang sama lewat MCP.

๐Ÿ—๏ธArsitektur

database.ts
node:sqlite โ€” dok, chunk, memori, chunks_fts, meta
transcript.ts
Baca sesi opencode (DB global+local) โ€” sinkron input ke store
embedder.ts
Hash lokal 1024-dim (FNV-1a + n-gram)
embeddings.ts
Lapisan provider: local | transformers (opsional)
chunker.ts
Chunking sadar paragraf/kode + overlap
vector-search.ts
Cache vektor + FTS5 BM25 + gabung RRF
pipeline.ts
Ingest async / dedup / guard / kelola dok
memory.ts
Remember / recall (decay) / consolidate / prune
rag-server.ts
Server MCP โ€” 19 tools, transport stdio

๐Ÿช Data tersimpan di .rag-data/rag.sqlite (di-gitignore, memori tidak pernah ter-push!)

๐ŸŽ›๏ธKonfigurasi

๐Ÿ”ฅ opencode (global)

{
  "mcp": {
    "rag-memory": {
      "type": "local",
      "command": ["node", "--import", "tsx", "src/mcp/rag-server.ts"],
      "cwd": "D:/Project/mcp-server",
      "environment": { "RAG_DB_DIR": "D:/Project/mcp-server/.rag-data" }
    }
  }
}

๐ŸŸฃ Claude Desktop

{
  "mcpServers": {
    "rag-memory": {
      "command": "node",
      "args": ["--import", "tsx", "D:/Project/mcp-server/src/mcp/rag-server.ts"],
      "env": { "RAG_DB_DIR": "D:/Project/mcp-server/.rag-data" }
    }
  }
}

๐Ÿ”ง Variabel lingkungan penting

VariabelDefaultGuna
RAG_DB_DIR.rag-dataLokasi penyimpanan SQLite
SEARCH_MODEhybridhybrid | vector | keyword
EMBEDDING_PROVIDERlocallocal (tanpa deps) | transformers
RAG_MAX_FILE_MB10Batas ukuran file yang boleh di-ingest
RAG_ALLOWED_DIRS(bebas)Daftar folder yang diizinkan: ; | ,
RAG_PRUNE01 = konsolidasi boleh hapus memori basi

๐ŸŽฌAlurnya

1
Simpan

rag_ingest_*
memory_remember

2
Panggil

memory_context
rag_retrieve

3
Eksekusi

Suntik konteks โ†’ biar AI kamu makin cemerlang โœจ