search_memoryLABSCO SUMMARY
Search quality is the point, not just persistence.
Most memory servers stop at storing and retrieving; this one runs query expansion, then dense and sparse search in parallel, then a cross-encoder reranker over the candidates — which is why it can find the note you half-remember rather than the one that shares your keywords. Encryption at rest and per-agent ACLs are in the same release, and nothing leaves the machine unless you configure a connector.
What it is
A persistent memory server for MCP clients that runs entirely on your machine. A file watcher indexes the folders you name, chunks them with format-aware parsers, and stores embeddings locally; searches fuse dense and BM25 results with Reciprocal Rank Fusion and then rerank with a cross-encoder.
What you get
search_memory— hybrid search over everything indexed, returning path, preview, score, file type and source, with an optional widerextended_previewlist_sources,get_documentfor the full text of an indexed file, andindex_nowto force a re-index without waiting for the watcherask_memory— retrieval plus a grounded answer from a local Ollama model, with cited sources;summarize_sourcedoes the same for a source's recent content- Memory control —
pin_memorykeeps a chunk in the hot tier so it is never demoted or decayed,forget_memorysuppresses a chunk from results without touching the file,forget_sourcedrops an entire source from the index query_timelinereads the episodic event log for what was retrieved or indexed in the last N daysrelated_documentsfinds files semantically close to one you name,search_by_datefilters by last-modified rangeget_entitylooks up a person, project or concept and its chunks;graph_memoryreturns the entity co-occurrence graph as nodes and edgessync_sourcepulls from a configured external connector — the project ships 47, covering Jira, Notion, GitHub, Slack, email, browser history and more- Parsers for txt, md, pdf, docx, code, Obsidian vaults with wikilinks and frontmatter,
.mboxemail,.icscalendars and browser history
Requirements
No account and no key. Python 3.11+; pip install memorymesh-mcp, copy config.example.yaml to ~/.memorymesh/config.yaml and point the sources list at your folders, then index once with memorymesh index. The client config runs memorymesh start. ask_memory, summarize_source and HyDE query expansion need Ollama running locally and are off until you set ollama.enabled: true. Transport is stdio or streamable-http, and the HTTP listener binds to 127.0.0.1 unless you override it. A global ignore list keeps .env, *.key, id_rsa*, secrets/, .ssh/, .aws/, .git/ and node_modules/ out of the index. Package memorymesh-mcp at 0.8.0, MIT.
Setup effort
One command — pip install memorymesh-mcp
USE CASES
Finding the decision you made months ago
Ask in your own words — hybrid search plus the reranker handles the case where you remember the idea but not the wording.
Asking a question of your own notes
Retrieve and answer in one call through a local model, with the source passages cited so you can check them.
Keeping one fact from ever falling out of context
Pin the chunk so it stays in the hot tier and is never score-decayed, and suppress the outdated one beside it.
Pulling work context in from the tools you already use
Configure a connector and sync it, so Jira tickets or Notion pages are searchable alongside your local files.
Following a thread across documents
Look up the entity, then read its co-occurrence graph to see which projects and people it keeps appearing with.
15 tools
Listed in project docs. Your client may show a different list.
list_sourcesget_documentindex_nowask_memorypin_memoryforget_memoryquery_timelinesync_sourceget_entityrelated_documentssearch_by_dateforget_sourcesummarize_sourcegraph_memoryBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
pip on PATH
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install memorymesh-mcpMCP Clients
Claude Desktop
{
"mcpServers": {
"memorymesh": {
"command": "uv",
"args": [
"run",
"--directory",
"<YOUR_PATH_TO_MEMORY_MESH>",
"memorymesh",
"start"
]
}
}
}