Skip to main content

Local semantic search for markdown notes — MCP server

Project description

mcp-recall-md

Local semantic search for your markdown notes — via MCP.

PyPI version Python versions License Ko-fi


graph LR
    A["<b>.md files</b><br><i>Obsidian · Logseq · plain md</i>"] -- "watch + index" --> B["<b>mcp-recall-md</b><br><i>local vector store</i>"]
    C["<b>AI client</b><br><i>Claude · Cursor · Windsurf</i>"] -- "MCP search" --> B
    style A fill:#f9f4eb,stroke:#c9a96e,color:#333
    style B fill:#e8f0fe,stroke:#4a86c8,color:#333
    style C fill:#e8f5e9,stroke:#5b9a5b,color:#333

"Search my notes about Kubernetes networking"

→ finds kubernetes-networking.md (similarity: 0.53) — even though you phrased it differently than the note


  • Search by meaning, not keywords — finds notes even when your wording doesn't match
  • 100% offline — no API keys, no cloud, nothing leaves your machine
  • Zero config — point at your folders, restart your AI client, done
  • Real-time sync — file watcher picks up changes instantly, re-embeds only what changed

Quick start

Add to your MCP client config and restart:

{
  "mcpServers": {
    "mcp-recall-md": {
      "command": "uvx",
      "args": ["mcp-recall-md", "--vaults", "C:/Users/you/notes"]
    }
  }
}

Config file location: .mcp.json (Claude Code) · claude_desktop_config.json (Claude Desktop) · Cursor / Windsurf MCP settings

That's it. Your notes are searchable.


Installation

The quick start above uses uvx (recommended). Other options:

pip
pip install mcp-recall-md
{
  "mcpServers": {
    "mcp-recall-md": {
      "command": "mcp-recall-md",
      "args": ["--vaults", "C:/Users/you/notes"]
    }
  }
}
Standalone .exe (no Python needed)
  1. Download mcp-recall-md.exe from the latest release
  2. Put it somewhere permanent (e.g. C:\Tools\mcp-recall-md\)
{
  "mcpServers": {
    "mcp-recall-md": {
      "command": "C:/Tools/mcp-recall-md/mcp-recall-md.exe",
      "args": ["--vaults", "C:/Users/you/notes"]
    }
  }
}

Configuration

Multiple vaults

List all folders — each is indexed independently:

"args": ["--vaults", "C:/notes/work", "C:/notes/personal", "C:/docs"]

.recallignore

Drop a .recallignore in any vault root to exclude files. Standard .gitignore syntax:

.obsidian/
_templates/
drafts/

CLI flags

Flag Default Description
--vaults (none) Folders to index and watch
--db-path ~/.mcp-recall-md/db ChromaDB storage location
--verbose off Debug logging to stderr

Tools

Your AI assistant gets these tools automatically via MCP:

Tool Description
search Find notes by meaning — returns ranked results with similarity scores and file paths
status Show indexed article count and watched vaults
index Manually store an article (for use without --vaults)
remove Delete an article from the index

Most users only interact with search — everything else is automatic.


Troubleshooting

Problem Fix
Search returns nothing Check that --vaults points to folders with .md files
First run is slow Embedding model (~80 MB) downloads once on first use
Need to debug Add --verbose, check ~/.mcp-recall-md/server.log
Force re-index Delete ~/.mcp-recall-md/db and restart

Logs: ~/.mcp-recall-md/server.log (5 MB max, 3 rotated backups)


Limitations

  • Single-chunk embedding — large files (10k+ words) may search less precisely than shorter notes
  • English-optimized — other languages work but with lower accuracy

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_recall_md-0.4.1.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_recall_md-0.4.1-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file mcp_recall_md-0.4.1.tar.gz.

File metadata

  • Download URL: mcp_recall_md-0.4.1.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_recall_md-0.4.1.tar.gz
Algorithm Hash digest
SHA256 ca3fa9fdb6741f964d5bdb0178bf3557885b7bb4935680d1bea76569ed56e7f6
MD5 23fd47fb21109707f535ab5c06cac98c
BLAKE2b-256 45661bd4c043d9bd299754ed7731b2ac8e716cddd88f482c2cb80c4b47b952fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_recall_md-0.4.1.tar.gz:

Publisher: release.yml on kalikin-artem/mcp-recall-md

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_recall_md-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_recall_md-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_recall_md-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07551fc9564eb7d5b1995b30f1a99b972757d96ca75cf57c8d0b70839920e2c9
MD5 d8cc09b9936c710b4f9c8ced5de91672
BLAKE2b-256 4265c19a4503599329c334d882fef54dbf14446aa5ff339ec5552316fae97569

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_recall_md-0.4.1-py3-none-any.whl:

Publisher: release.yml on kalikin-artem/mcp-recall-md

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page