QMD CLI
Local search over Markdown notes, docs and meeting transcripts: keywords, semantic search and reranking, with an MCP server
- 30,724 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- Reads and indexes selected folders on disk
- Downloads models from the network on first use
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add cli/qmdDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Reads and indexes selected folders on disk
- Downloads models from the network on first use
This is third-party code. Review the repository files before installing.
What it does
QMD indexes folders of Markdown files as collections and searches them three ways: BM25 full text, vector embeddings, and a hybrid mode with model reranking. All GGUF models run on your machine. You can attach context descriptions to collections, which come back with matching documents and help the agent pick the right file. Results come as JSON or file lists, and the MCP server gives the agent search and document retrieval tools.
Who it is for. For people who keep notes, a knowledge base or docs in Markdown and want an agent to search them without the cloud.
Good fit when
- The agent needs to search a large set of notes or docs
- Data must not go to external search services
- You need semantic search, not only word matching
Not a fit when
- There are few files and plain grep is enough
- Documents are not text files, for example PDFs or scans
Example request
Find everything in my notes about quarterly planningLimitations
Requires Node.js 22 or newer, plus Homebrew SQLite on macOS. Three GGUF models are downloaded from Hugging Face on first use, and embedding and reranking load the CPU or GPU. For non-English text the README suggests switching the embedding model.
How to disable. Remove the qmd entry from the MCP config or the qmd plugin in Claude Code, then run npm uninstall -g @tobilu/qmd. The index and models live in ~/.cache/qmd.
FAQ
Is MCP required?
No. The agent can call qmd in the terminal, and the --json and --files flags exist for that. MCP gives tighter integration.
Can one server serve several clients?
Yes, qmd mcp --http starts a long-lived server on localhost:8181 so models are not reloaded for each client.
Discussion
No questions or reviews yet.
Related
CLI toolsMinutes
minutes
A local-first MCP server for meeting memory: on-device recording and transcription into Markdown, searchable from Claude Code, Codex, Cursor and any MCP client
mcp-logseq: MCP server for Logseq
MCP server for LogSeq
MCP server for Logseq: the agent reads, searches and edits pages and blocks of your graph over the local HTTP API
A Rust MCP server for a folder of Markdown notes: an agent searches and reads notes and sees backlinks, tags, tasks and version history
An MCP server that lets an agent work on your computer: terminal and long-running processes, file search and edits, Excel, PDF and DOCX
An Obsidian vault template with hooks, commands and skills that gives Claude Code, Codex and Gemini CLI persistent memory across sessions
An MCP server for an Obsidian vault via the Local REST API plugin: search, read, append and patch notes
README in short
The README explains the search pipeline: the query is expanded, sent to full-text and vector search, then fused and reranked by a model. It covers commands for collections, context and embeddings, the MCP server over stdio and HTTP, a Claude Code plugin and library use from Node.js and Bun. It also details how the HTTP server blocks requests from foreign web pages, and lists system requirements. MIT licensed.