Shodh Memory

io.github.varun29ankuS由 GitHub 帳號 varun29ankuS 發布v0.2.0更新於 Oct 24, 2026

Cognitive memory for AI agents — semantic search, Hebbian learning, knowledge graphs.

發布方自己的服務:Memory.fit

已驗證STDIO僅桌面效率與工作流知識與記憶

概覽

AI 產生的概覽

給 AI 代理用的本機持久記憶伺服器:儲存、語意搜尋與管理記憶,另附 GTD 待辦、專案與提醒。

可以做什麼
  • 儲存、語意搜尋、讀取、列出與刪除記憶,支援依標籤與日期搜尋、主動浮現相關脈絡及工作階段脈絡摘要
  • 以知識圖譜組織記憶,具備 Hebbian 關聯強化、衰減、整併與內容雜湊去重
  • 建立、更新、完成、排序與刪除 GTD 待辦、子任務與留言,並檢視待辦統計
  • 將待辦歸入專案,支援子專案、封存與刪除
  • 設定依時間、時長或關鍵字觸發的提醒,並列出或略過提醒
  • 檢查記憶與索引健康、檢視整併報告、統計 token 用量,以及建立、驗證、還原與清除備份
適用情境
適合希望助手在本機跨工作階段記住偏好、專案背景與過去決策,同時維護一份輕量任務與提醒清單的情境。
執行需求
透過 npx(Node.js)在本機執行,首次啟動會自動下載原生後端二進位檔(約 15MB)與嵌入模型(約 23MB),需放寬啟動逾時。需要 SHODH_API_KEY 密鑰。選用設定包括 SHODH_API_URL(預設本機 HTTP 位址)、SHODH_USER_ID 以及 SHODH_IPC_ENDPOINT 等 IPC 選項。支援 Linux x64、macOS x64/ARM64 與 Windows x64。
安裝前請注意
必須提供 API 密鑰,且依 README 該密鑰對所有記憶命名空間都有權限,因此 SHODH_USER_ID 並非安全邊界;互不信任的租戶應使用獨立的伺服器與密鑰執行個體。部分工具會永久刪除資料(記憶、待辦、留言、專案),backup_restore 會覆寫已存記憶。首次執行會從網路下載二進位檔與模型。所有資料都保存在本機。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Shodh Memory,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Shodh-Memory]

Shodh-Memory MCP Server

Persistent cognitive memory for AI agents

[npm] [License]

Documentation | GitHub | Python SDK | Rust Crate


Features

  • Cognitive Architecture: 3-tier memory (working, session, long-term) based on Cowan's model
  • Hebbian Learning: "Neurons that fire together wire together" - associations strengthen with use
  • Semantic Search: Find memories by meaning using MiniLM-L6 embeddings
  • Knowledge Graph: Entity extraction and relationship tracking
  • Memory Consolidation: Automatic decay, replay, and strengthening
  • Idempotent: Content-hash dedup — identical memories are never stored twice
  • 1-Click Install: Auto-downloads native server binary for your platform
  • Offline-First: All models auto-downloaded on first run (~38MB total), no internet required after
  • Fast: <200ms API response, sub-millisecond graph lookup, 30-50ms semantic search
  • GTD Task Management: Full todo system with projects, subtasks, comments, and reminders

Installation

Add to your MCP client config:

Claude Desktop / Claude Code (claude_desktop_config.json):

json
{  "mcpServers": {    "shodh-memory": {      "command": "npx",      "args": ["-y", "@shodh/memory-mcp"],      "env": {        "SHODH_API_KEY": "your-api-key-here"      }    }  }}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Codex CLI (.codex/config.toml):

toml
[mcp_servers.shodh-memory]startup_timeout_sec = 60command = "npx"args = ["-y", "@shodh/memory-mcp"]env = { SHODH_API_KEY = "your-api-key-here" }

By default the MCP server talks to the backend over HTTP, which works on every platform. To route ordinary requests over authenticated local IPC instead, add SHODH_IPC_ENDPOINT with a platform-appropriate value. On Windows, use the per-user named pipe printed by the server (normally \\.\pipe\shodh-memory-<current-user-SID>); on macOS/Linux, use its absolute Unix socket path (under the platform data directory at shodh/shodh-memory.sock by default). A \\.\pipe\... value on macOS/Linux is rejected rather than silently forwarded to the spawned backend. The auto-spawn path passes an explicitly configured endpoint to the backend so both processes use the same value.

Note: First run downloads the server binary (~15MB) plus embedding model (~23MB). The startup_timeout_sec = 60 ensures enough time for initial setup.

For Cursor/other MCP clients: Similar configuration with the npx command.

Environment Variables

VariableDescriptionDefault
SHODH_API_KEYRequired. API key for authentication-
SHODH_IPC_ENABLEDServer listener toggle. The auto-spawned backend honors this value.true
SHODH_IPC_ENDPOINTLocal endpoint for MCP requests: a Unix socket path (macOS/Linux) or \\.\pipe\name (Windows). When set, ordinary MCP requests use local IPC instead of HTTP. A Windows pipe value on macOS/Linux is rejected.-
SHODH_IPC_REQUIREDFail closed when IPC cannot bind or authenticate. The TypeScript client also requires SHODH_IPC_ENDPOINT when enabled.false
SHODH_API_URLBackend server URLhttp://127.0.0.1:3030
SHODH_USER_IDLogical memory namespace; not an authorization tenantclaude-code
SHODH_NO_AUTO_SPAWNSet to true to disable auto-starting the backendfalse
SHODH_STREAMEnable/disable streaming ingestiontrue
SHODH_STREAM_WEBSOCKETIn IPC mode only, explicitly opt into WebSocket streaming through SHODH_API_URLfalse
SHODH_PROACTIVEEnable/disable proactive memory surfacingtrue

Local IPC

When SHODH_IPC_ENDPOINT is set, tool calls, proactive surfacing, health checks, resources, and prompts use local IPC. Each call opens one local connection and exchanges one versioned, newline-delimited JSON request and response. Frames are limited to eight MiB. An empty-auth health challenge first proves the endpoint knows the configured key. Ordinary requests then use HMAC proofs bound to that server instance and request body; the reusable API key is never sent over IPC or written to MCP stdout.

Streaming ingestion remains a WebSocket feature. It is disabled by default in IPC mode because the local protocol is finite request/response. To enable it explicitly, set SHODH_STREAM_WEBSOCKET=true and configure SHODH_API_URL for the server's HTTP WebSocket endpoint. Ordinary operations continue to use IPC.

If SHODH_IPC_ENDPOINT is absent, the MCP server preserves its existing HTTP and WebSocket behavior. When the variable is present, it is an explicit transport selection: an unavailable IPC endpoint is reported rather than silently retried over HTTP.

SHODH_USER_ID remains a logical namespace, as it is over REST. A configured API key has authority across namespaces. Use separate server/key instances when mutually untrusted tenants require an authorization boundary.

MCP Tools (51 total)

Memory — Store, search, and manage memories
ToolDescription
rememberStore a memory with optional type, tags, and metadata
recallSemantic search to find relevant memories. Pass full_content: true for complete bodies inline
proactive_contextAuto-surface relevant memories for current context. Pass full_content: true for complete bodies inline
context_summaryGet categorized context for session bootstrap
list_memoriesList all stored memories
read_memoryRead full content of a specific memory by ID
forgetDelete a specific memory by ID

Memory previews and truncation. recall, recall_by_tags, and proactive_context return previews of each memory body (default cap: 500 characters). When a body is longer than the cap, the output is truncated with an explicit, honest marker that reports the real lengths and the follow-up call, e.g. …[truncated 500/2340 chars — read_memory("<id>") for full]. A preview is never silently cut off — the absence of a marker means you are seeing the complete body. To get complete bodies inline (no markers), pass full_content: true on any of those three tools; this increases token usage, so prefer it for small result sets. read_memory always returns the full, untruncated content.

Todos (GTD) — Task management with projects and subtasks
ToolDescription
add_todoCreate a task with priority, due date, project, contexts
list_todosList/search todos with semantic or GTD-style filtering
update_todoUpdate task properties (status, priority, notes)
complete_todoMark a task as done (auto-creates next for recurring)
delete_todoPermanently delete a task
reorder_todoMove a task up or down within its status group
list_subtasksList subtasks of a parent todo
add_todo_commentAdd a comment to a task (progress, resolution)
list_todo_commentsList all comments on a task
update_todo_commentEdit an existing comment
delete_todo_commentDelete a comment
todo_statsGet todo statistics by status, overdue items
Projects — Organize todos into groups
ToolDescription
add_projectCreate a project with optional parent (sub-projects)
list_projectsList all projects with todo counts
archive_projectArchive a project (hidden but restorable)
delete_projectPermanently delete a project
Reminders — Time, duration, and context-triggered reminders
ToolDescription
set_reminderSet a reminder (time, duration, or keyword trigger)
list_remindersList pending/triggered/dismissed reminders
dismiss_reminderAcknowledge a triggered reminder
System — Health, backups, and diagnostics
ToolDescription
memory_statsGet statistics about stored memories
verify_indexCheck vector index integrity
repair_indexRe-index orphaned memories
token_statusGet current session token usage
reset_token_sessionReset token counter for new session
consolidation_reportView memory consolidation activity
backup_createCreate a backup of all memories
backup_listList available backups
backup_verifyVerify backup integrity (SHA-256)
backup_restoreRestore from a backup
backup_purgePurge old backups, keep most recent N

REST API (for Developers)

The server exposes a REST API at http://127.0.0.1:3030:

javascript
// Store a memoryconst res = await fetch("http://127.0.0.1:3030/api/remember", {  method: "POST",  headers: {    "Content-Type": "application/json",    "X-API-Key": "your-api-key"  },  body: JSON.stringify({    user_id: "my-app",    content: "User prefers dark mode",    memory_type: "Observation",    tags: ["preferences", "ui"]  })});
// Semantic searchconst results = await fetch("http://127.0.0.1:3030/api/recall", {  method: "POST",  headers: {    "Content-Type": "application/json",    "X-API-Key": "your-api-key"  },  body: JSON.stringify({    user_id: "my-app",    query: "user preferences",    limit: 5  })});

Key Endpoints

EndpointMethodDescription
/healthGETHealth check
/api/rememberPOSTStore a memory
/api/recallPOSTSemantic search
/api/recall/tagsPOSTSearch by tags
/api/recall/datePOSTSearch by date range
/api/memoriesPOSTList all memories
/api/memory/{id}GET/PUT/DELETECRUD operations
/api/context_summaryPOSTGet context summary
/api/relevantPOSTProactive context surfacing
/api/batch_rememberPOSTStore multiple memories
/api/upsertPOSTCreate or update by external_id
/api/graph/{user_id}/statsGETKnowledge graph statistics
/api/consolidation/reportPOSTMemory consolidation report
/api/index/verifyPOSTVerify index integrity
/metricsGETPrometheus metrics

Cognitive Features

Hebbian Learning

Memories that are frequently accessed together form stronger associations. The system automatically:

  • Forms edges between co-retrieved memories
  • Strengthens connections with repeated co-activation
  • Enables Long-Term Potentiation (LTP) for permanent associations

Memory Consolidation

Background processes maintain memory health:

  • Decay: Unused memories gradually lose activation
  • Replay: High-value memories are periodically replayed
  • Pruning: Weak associations are removed
  • Promotion: Important memories move to long-term storage

3-Tier Architecture

Based on Cowan's working memory model:

  1. Working Memory: Recent, highly active memories
  2. Session Memory: Current session context
  3. Long-Term Memory: Persistent storage with vector indexing

How It Works

  1. Install: npx -y @shodh/memory-mcp downloads the package
  2. Auto-spawn: On first run, downloads the native server binary (~15MB) and embedding model (~23MB)
  3. Connect: MCP client connects to this MCP server via stdio; backend requests use local IPC when SHODH_IPC_ENDPOINT is set, otherwise HTTP
  4. Ready: Start using remember and recall tools
  5. Session end: when the host closes stdin (e.g. a Claude Desktop thread switch), the shim finishes any in-flight tool call and writes its response to the still-open stdout before exiting, so a mid-flight request is never silently dropped. Draining is bounded by a grace window; if it elapses the caller receives an explicit error instead of waiting out the host timeout.

The backend server runs locally and stores all data on your machine. No cloud dependency.

Usage Examples

"Remember that the user prefers Rust over Python for systems programming""Recall what I know about user's programming preferences""What context do you have about this project?""List my recent memories""Show me the consolidation report"

Platform Support

PlatformArchitectureStatus
Linuxx64Supported
macOSx64Supported
macOSARM64 (M1/M2)Supported
Windowsx64Supported

Related Packages

  • Python SDK: pip install shodh-memory - Native Python bindings
  • Rust Crate: cargo add shodh-memory - Use as a library

Links

License

Apache-2.0

來源:mcp-server/README.md,提交 902daf8

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Memory 整合