Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Cognitive memory for AI agents — semantic search, Hebbian learning, knowledge graphs.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
SHODH_API_URL, SHODH_API_KEY, SHODH_USER_IDValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"shodh-memory": {
"command": "npx",
"args": [
"-y",
"@shodh/memory-mcp"
],
"env": {
"SHODH_API_URL": "your-value",
"SHODH_API_KEY": "your-value",
"SHODH_USER_ID": "your-value"
}
}
}
}Run this in your terminal
claude mcp add shodh-memory --env SHODH_API_URL=your-value --env SHODH_API_KEY=your-value --env SHODH_USER_ID=your-value -- npx -y @shodh/memory-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"shodh-memory": {
"command": "npx",
"args": [
"-y",
"@shodh/memory-mcp"
],
"env": {
"SHODH_API_URL": "your-value",
"SHODH_API_KEY": "your-value",
"SHODH_USER_ID": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"shodh-memory": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@shodh/memory-mcp"
],
"env": {
"SHODH_API_URL": "your-value",
"SHODH_API_KEY": "your-value",
"SHODH_USER_ID": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
SHODH_API_URL envSHODH_USER_ID envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account varun29ankuS, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: SHODH_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 7 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Shodh-Memory MCP Server
Persistent cognitive memory for AI agents
Documentation | GitHub | Python SDK | Rust Crate
Add to your MCP client config:
Claude Desktop / Claude Code (claude_desktop_config.json):
{
"mcpServers": { "shodh-memory": { "command": "npx", "args": ["-y", "@shodh/memory-mcp"], "env": { "SHODH_API_KEY": "your-api-key-here" } } } }
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonCodex CLI (.codex/config.toml):
[mcp_servers.shodh-memory]
startup_timeout_sec = 60 command = "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- ); 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 = 60ensures enough time for initial setup.
For Cursor/other MCP clients: Similar configuration with the npx command.
| Variable | Description | Default |
|---|---|---|
SHODH_API_KEY | Required. API key for authentication | - |
SHODH_IPC_ENABLED | Server listener toggle. The auto-spawned backend honors this value. | true |
SHODH_IPC_ENDPOINT | Local 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_REQUIRED | Fail closed when IPC cannot bind or authenticate. The TypeScript client also requires SHODH_IPC_ENDPOINT when enabled. | false |
SHODH_API_URL | Backend server URL | http://127.0.0.1:3030 |
SHODH_USER_ID | Logical memory namespace; not an authorization tenant | claude-code |
SHODH_NO_AUTO_SPAWN | Set to true to disable auto-starting the backend | false |
SHODH_STREAM | Enable/disable streaming ingestion | true |
SHODH_STREAM_WEBSOCKET | In IPC mode only, explicitly opt into WebSocket streaming through SHODH_API_URL | false |
SHODH_PROACTIVE | Enable/disable proactive memory surfacing | true |
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.
Memory — Store, search, and manage memories
| Tool | Description |
|---|---|
remember | Store a memory with optional type, tags, and metadata |
recall | Semantic search to find relevant memories. Pass full_content: true for complete bodies inline |
proactive_context | Auto-surface relevant memories for current context. Pass full_content: true for complete bodies inline |
context_summary | Get categorized context for session bootstrap |
list_memories | List all stored memories |
read_memory | Read full content of a specific memory by ID |
forget | Delete a specific memory by ID |
Memory previews and truncation.
recall,recall_by_tags, andproactive_contextreturn 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(" ") 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), passfull_content: trueon any of those three tools; this increases token usage, so prefer it for small result sets.read_memoryalways returns the full, untruncated content.
Todos (GTD) — Task management with projects and subtasks
| Tool | Description |
|---|---|
add_todo | Create a task with priority, due date, project, contexts |
list_todos | List/search todos with semantic or GTD-style filtering |
update_todo | Update task properties (status, priority, notes) |
complete_todo | Mark a task as done (auto-creates next for recurring) |
delete_todo | Permanently delete a task |
reorder_todo | Move a task up or down within its status group |
list_subtasks | List subtasks of a parent todo |
add_todo_comment | Add a comment to a task (progress, resolution) |
list_todo_comments | List all comments on a task |
update_todo_comment | Edit an existing comment |
delete_todo_comment | Delete a comment |
todo_stats | Get todo statistics by status, overdue items |
Projects — Organize todos into groups
| Tool | Description |
|---|---|
add_project | Create a project with optional parent (sub-projects) |
list_projects | List all projects with todo counts |
archive_project | Archive a project (hidden but restorable) |
delete_project | Permanently delete a project |
Reminders — Time, duration, and context-triggered reminders
| Tool | Description |
|---|---|
set_reminder | Set a reminder (time, duration, or keyword trigger) |
list_reminders | List pending/triggered/dismissed reminders |
dismiss_reminder | Acknowledge a triggered reminder |
System — Health, backups, and diagnostics
| Tool | Description |
|---|---|
memory_stats | Get statistics about stored memories |
verify_index | Check vector index integrity |
repair_index | Re-index orphaned memories |
token_status | Get current session token usage |
reset_token_session | Reset token counter for new session |
consolidation_report | View memory consolidation activity |
backup_create | Create a backup of all memories |
backup_list | List available backups |
backup_verify | Verify backup integrity (SHA-256) |
backup_restore | Restore from a backup |
backup_purge | Purge old backups, keep most recent N |
The server exposes a REST API at http://127.0.0.1:3030:
// Store a memory
const 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 search const 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 }) });
| Endpoint | Method | Description |
|---|---|---|
/health | GET | Health check |
/api/remember | POST | Store a memory |
/api/recall | POST | Semantic search |
/api/recall/tags | POST | Search by tags |
/api/recall/date | POST | Search by date range |
/api/memories | POST | List all memories |
/api/memory/{id} | GET/PUT/DELETE | CRUD operations |
/api/context_summary | POST | Get context summary |
/api/relevant | POST | Proactive context surfacing |
/api/batch_remember | POST | Store multiple memories |
/api/upsert | POST | Create or update by external_id |
/api/graph/{user_id}/stats | GET | Knowledge graph statistics |
/api/consolidation/report | POST | Memory consolidation report |
/api/index/verify | POST | Verify index integrity |
/metrics | GET | Prometheus metrics |
Memories that are frequently accessed together form stronger associations. The system automatically:
Background processes maintain memory health:
Based on Cowan's working memory model:
Only the beginning is shown; read the rest in the repo