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 集成