smriti_storeLABSCO SUMMARY
The associations are the point: a query that does not match a memory's words can still reach it through the graph.
Plain vector search finds memories that sound like the question. Here the pipeline extracts cues from the query, walks the graph edges from those cues, then expands one more hop through associated memories — so a memory sharing an entity rather than a phrasing is still reachable. The consolidation pass is the other half: memories nobody recalls decay away, which is what stops a long-lived store turning into noise.
What it is
A memory server that stores each memory as a node in a property graph, linked to the cues extracted from it and to other memories. Retrieval combines cue matching, graph traversal and vector similarity; a background pass decays and re-clusters what is stored.
What you get
- smriti_store — save a memory with an importance value, tags and a source label; the content is analysed, embedded and linked into the graph automatically
- smriti_recall — retrieve by natural-language query, in three modes: the full multi-hop pipeline, a fast vector-only search, or a plain browse of recent memories
- Retrieval can be filtered to episodic, semantic or procedural memories
- smriti_manage — delete a memory, or push a backup
- Recalled memories are reinforced, so what gets used surfaces more readily and what does not decays away
- Three graph database backends, one of them embedded with no separate server to run, and per-user isolation on all of them
- Optional backup to a git remote or to object storage
Requirements
A local build with a Go toolchain and a C compiler, or one of the published container images and release binaries. A language model and an embedding provider are required — any OpenAI-compatible endpoint works, including a local one. The external graph databases are only needed if you pick one over the embedded backend.
Setup effort
One command plus a key — go run github.com/tejzpr/smriti-mcp@latest, then supply credentials
USE CASES
Keeping what an agent learned between sessions
Store the fact with an importance and tags; the linking into the graph happens for you.
Recalling something you cannot phrase the way you stored it
Use the full pipeline, which reaches memories through shared entities rather than matching words.
Getting an answer quickly when depth is not needed
Switch to the fast vector-only mode instead of the full multi-hop pass.
Browsing what was stored recently
List mode returns recent memories in access order, with no search at all.
Removing something that turned out to be wrong
Delete the memory by its identifier, or push a backup before you do.
3 tools
Listed in project docs. Your client may show a different list.
smriti_recallsmriti_manageBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation.
Requires
- go on PATH
- Go 1.25+
- LLM_API_KEY in your environment
Where it runs
All 5 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
Setup
git clone https://github.com/tejzpr/Smriti-MCP
cd Smriti-MCP
CGO_ENABLED=1 go build -o smriti-mcp .go run
go run github.com/tejzpr/smriti-mcp@latestMCP Clients
Cursor, Windsurf
{
"mcpServers": {
"smriti": {
"command": "<YOUR_PATH_TO_SMRITI_MCP>",
"env": {
"LLM_API_KEY": "<YOUR_LLM_API_KEY>",
"EMBEDDING_API_KEY": "<YOUR_EMBEDDING_API_KEY>"
}
}
}
}<YOUR_PATH_TO_SMRITI_MCP> is the binary you built (or one downloaded from the project's GitHub Releases page), and set LLM_API_KEY. EMBEDDING_API_KEY falls back to it.
Claude Desktop
{
"mcpServers": {
"smriti": {
"command": "<YOUR_PATH_TO_SMRITI_MCP>",
"args": [],
"env": {
"LLM_API_KEY": "<YOUR_LLM_API_KEY>",
"EMBEDDING_API_KEY": "<YOUR_EMBEDDING_API_KEY>"
}
}
}
}<YOUR_PATH_TO_SMRITI_MCP> is the binary you built (or one downloaded from the project's GitHub Releases page), and set LLM_API_KEY. EMBEDDING_API_KEY falls back to it.
Any MCP client — Docker
{
"mcpServers": {
"smriti": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/Users/<YOUR_USERNAME>/.smriti:/home/smriti/.smriti",
"-e",
"LLM_API_KEY=<YOUR_LLM_API_KEY>",
"-e",
"EMBEDDING_API_KEY=<YOUR_EMBEDDING_API_KEY>",
"tejzpr/smriti-mcp"
]
}
}
}/Users/<YOUR_USERNAME> is your own home directory, written out in full (clients do not expand ~ or $HOME). That folder keeps your memory database. /home/smriti/.smriti is the path inside the container — leave it as it is.
Any MCP client — Go Run
{
"mcpServers": {
"smriti": {
"command": "go",
"args": [
"run",
"github.com/tejzpr/smriti-mcp@latest"
],
"env": {
"LLM_API_KEY": "<YOUR_LLM_API_KEY>",
"EMBEDDING_API_KEY": "<YOUR_EMBEDDING_API_KEY>"
}
}
}
}