Skip to main content
Glama
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.


Related MCP server: Semantic Search MCP

Installation

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

pip install mcp-recall-md
{
  "mcpServers": {
    "mcp-recall-md": {
      "command": "mcp-recall-md",
      "args": ["--vaults", "C:/Users/you/notes"]
    }
  }
}
  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

Available Tools

4 tools
indexB

Index a knowledge base article. Replaces any existing article with the same key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the replacement/upsert behavior, which is important for a write operation. However, it lacks details on side effects, required permissions, or whether the operation is idempotent. With no annotations, more behavioral context would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the main function. It is efficiently written but could benefit from structured details for parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the tool lacks parameter descriptions and usage guidelines. This incompleteness forces the agent to guess parameter semantics, reducing its autonomous usability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the meaning or expected format of the 'key' and 'content' parameters. With 0% schema description coverage, the agent has no guidance on what values to supply, making correct invocation difficult.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Index') and resource ('knowledge base article'), and specifies the key behavior of replacing existing articles with the same key, which distinguishes it from sibling tools like 'remove' and 'search'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to avoid usage, or how it relates to the sibling tools beyond implied functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

removeC

Remove an article from the knowledge base by key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'Remove' but does not clarify if the action is permanent, reversible, what happens if the key is missing, or any side effects. The return value is not mentioned despite an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the verb, resource, and method, though it could be slightly more detailed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple (one parameter) and has an output schema, the description is minimally adequate. However, it lacks behavioral details and usage context, making it incomplete for a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The parameter 'key' has no description in the schema, and the tool description adds no meaning beyond stating 'by key'. It does not explain what the key represents or any constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Remove', the resource 'article from the knowledge base', and the method 'by key'. It distinguishes from sibling tools like index, search, and status, as removal is a distinct operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, error conditions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Show the current state of the knowledge base: number of indexed articles and watched vaults.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the output includes counts of indexed articles and watched vaults, but does not address potential behavioral aspects like staleness, caching, or real-time guarantees. Basic but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the verb 'Show', and no unnecessary words. Every part of the description adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the presence of an output schema, the description is mostly adequate. It tells what the tool returns. However, it could briefly mention that no input is required or if any prerequisites exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and schema description coverage is 100%. Per guidelines, baseline for 0 parameters is 4. The description adds no parameter info, which is acceptable given no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Show' and clearly states it displays the current state of the knowledge base, including specific details (number of indexed articles and watched vaults). This distinguishes it from sibling tools like 'index', 'remove', and 'search' which are action-oriented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. The context implies it is for checking status rather than performing actions, but no exclusions or when-not-to-use instructions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.4.1
    • First observedindex
    • First observedremove
    • First observedsearch
    • First observedstatus

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clear and distinct purpose: index adds/replaces articles, remove deletes, search queries semantically, and status shows state. No ambiguity.

Naming Consistency5/5

All tool names are single lowercase verbs (index, remove, search, status), following a consistent and predictable pattern.

Tool Count5/5

4 tools is well-scoped for a knowledge base server, covering essential operations without being too few or too many.

Completeness3/5

The set covers add (index), delete (remove), and search, but lacks direct retrieval by key and a list-all-articles capability, which are notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables semantic search over local Markdown documentation using hybrid retrieval combining embeddings, keyword search, and graph traversal with automatic file watching and zero-configuration setup.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables semantic search over markdown files to find related notes by meaning rather than keywords, and automatically detect duplicate content before creating new notes.
    3
    2
    BSD 2-Clause "Simplified"
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables semantic search over local notes and documents using natural language queries. Supports multiple file types (Markdown, Python, HTML, JSON, CSV, text) with fast local embeddings and persistent ChromaDB vector storage.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local note-taking server that provides intelligent management of markdown files through hybrid keyword and AI-powered semantic search. It enables users to create, find, and retrieve notes using advanced indexing, vector embeddings, and a built-in web viewer.
    MIT