Generic markdown collection MCP server with FTS5 + semantic search, frontmatter-aware indexing, and incremental reindexing
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add markdown-vault-mcp -- python -m markdown-vault-mcp{
"mcpServers": {
"markdown-vault-mcp": {
"command": "python",
"args": ["-m", "markdown-vault-mcp"]
}
}
}MCP Servers overview
<!-- DOMAIN-START --> <p align="center"> <img src="assets/icon.svg" alt="Markdown Vault MCP logo" width="128" height="128"> </p> <!-- DOMAIN-END --> # Markdown Vault MCP <!-- mcp-name: io.github.pvliesdonk/markdown-vault-mcp --> [](https://github.com/pvliesdonk/markdown-vault-mcp/actions/workflows/ci.yml) [](https://codecov.io/gh/pvliesdonk/markdown-vault-mcp) [](https://repowise.dev/repo/pvliesdonk/markdown-vault-mcp) [](https://repowise.dev/repo/pvliesdonk/markdown-vault-mcp) [](https://pypi.org/project/markdown-vault-mcp/) [](https://pypi.org/project/markdown-vault-mcp/) [](LICENSE) [](https://github.com/pvliesdonk/markdown-vault-mcp/pkgs/container/markdown-vault-mcp) [](https://pvliesdonk.github.io/markdown-vault-mcp/) [](https://pvliesdonk.github.io/markdown-vault-mcp/latest/llms.txt) [](https://github.com/pvliesdonk/fastmcp-server-template) Generic markdown vault MCP with hybrid search **[Documentation](https://pvliesdonk.github.io/markdown-vault-mcp/)** | **[Config wizard](https://pvliesdonk.github.io/markdown-vault-mcp/latest/configuration-generator/)** | **[PyPI](https://pypi.org/project/markdown-vault-mcp/)** | **[Docker](https://github.com/pvliesdonk/markdown-vault-mcp/pkgs/container/markdown-vault-mcp)** ## Features <!-- DOMAIN-START --> - **Hybrid search**: SQLite FTS5 keyword search (BM25, porter stemming) and semantic search (FastEmbed, Ollama, OpenAI, or Voyage AI embeddings, plus any OpenAI-compatible endpoint via `OPENAI_BASE_URL`), fused with Reciprocal Rank Fusion; diversity-aware ranking returns sentence-scale snippets with full-section recovery via `read(path, section=heading)`. See the [Embeddings guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/embeddings/), including the [recipe for OpenAI-compatible endpoints](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/embeddings/#openai-compatible-endpoints). - **Frontmatter-aware indexing**: YAML frontmatter fields become filterable and searchable, with optional required-field enforcement and adaptive heading-level chunking for long documents. - **Write operations**: the write tools (`write`, `edit`, `append`, `delete`, `rename`, `move_folder`, `fetch`, `git_sync`, the `okf_*` tools, `create_upload_link`) are registered by default and hidden when `MARKDOWN_VAULT_MCP_READ_ONLY=true`; writes update the index automatically, per-folder `_conventions.md` authoring rules are surfaced to LLM clients at write time, and attachments (PDFs, images, and other non-markdown files) are read/write too. - **Incremental reindexing**: hash-based change detection with boot-time reconciliation; the vector index converges to the reconciled chunk set, and parse-pipeline upgrades rebuild the index once automatically. - **Git integration**: optional auto-commit (one commit per write tool call) with deferred push, plus a pull loop or a GitHub or GitLab push webhook for external changes; history and diff tools read the log back. An overwriting `write` returns the revision holding the content it replaced, and `read(path, revision=sha)` reads a note back at that revision, so an overwrite is recoverable from the client that made it. When the clone stops reaching its remote, every write result carries a `remote` warning saying the content is committed locally only, and the log marks the transition rather than repeating each cycle. See the [Git integration guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/git-integration/). - **OKF-aware**: recognizes [Open Knowledge Format](https://github.com/GoogleCloudPlatform/knowledge-catalog) bundles and annotates results with each note's type, lifecycle status, staleness, and trust tier, plus conformance audit and migration tooling. See the [OKF guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/okf/). - **MCP surface**: 34 LLM-visible tools, 9 resources, and 8 prompt templates, plus browser-based MCP Apps views and one-time transfer links. Full references: [Tools](https://pvliesdonk.github.io/markdown-vault-mcp/latest/tools/), [Resources](https://pvliesdonk.github.io/markdown-vault-mcp/latest/resources/), [Prompts](https://pvliesdonk.github.io/markdown-vault-mcp/latest/prompts/), [MCP Apps](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/mcp-apps/), [Transfer links](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/transfer-links/), [CLI](https://pvliesdonk.github.io/markdown-vault-mcp/latest/cli/). Overwrite protection is enabled by default. Before replacing an existing file with `write` or `fetch`, read that destination and pass its etag as `if_match`. New files need no etag. Transfer upload links require a new destination because they have no `if_match` option. Set `MARKDOWN_VAULT_MCP_WRITE_PROTECT_EXISTING=false` to allow blind overwrites; see the [transfer guide](docs/guides/transfer-links.md#upload-walkthrough). <!-- DOMAIN-END --> ## What you can do with it <!-- DOMAIN-START --> With this server mounted in Claude, you can: - **Capture a URL as a note.** "Fetch <url>, summarize as a Resource note under `3-Resources/`, and link any existing notes on the topic." Claude composes `fetch` + `search` + `write`. - **Research a topic into your vault.** "Research product security regulations, compare them, and create a set of interlinked notes: one per regulation, plus a map-of-content." Claude composes web-search tools (client-side) + `write` with wikilinks. See the [Research workflows guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/research-workflows/) for the full loop. - **Distill today's thinking.** "Summarize today's conversations into Inbox notes." Claude.ai only; uses `conversation_search` + `recent_chats` + `write`. The [`para-capture-chats`](examples/para/prompts/para-capture-chats.md) prompt is the one-click version. - **Find missing links.** Fire the [`propose-links`](https://pvliesdonk.github.io/markdown-vault-mcp/latest/prompts/#propose-links) prompt from the `+` menu: it scans recently modified notes and proposes links between notes that aren't yet connected, writing them on confirmation. - **Split or merge captures.** "Split this Inbox note into two." / "Merge this into `<existing note>` instead of duplicating." Claude composes `read` + `write` + `delete`. The vault needs no external scheduler or separate capture app: it sits behind your conversations and absorbs their output. <!-- DOMAIN-END --> <!-- ===== TEMPLATE-OWNED SECTIONS BELOW — DO NOT EDIT; CHANGES WILL BE OVERWRITTEN ON COPIER UPDATE ===== --> ## Installation ### From PyPI ```bash pip install markdown-vault-mcp ``` If you add optional extras via the `PROJECT-EXTRAS-START` / `PROJECT-EXTRAS-END` sentinels in `pyproject.toml`, document them below: <!-- DOMAIN-START --> ```bash pip install markdown-vault-mcp[mcp] # FastMCP server pip install markdown-vault-mcp[embeddings-api] # Ollama/OpenAI embeddings via API pip install markdown-vault-mcp[embeddings] # FastEmbed local embeddings pip install markdown-vault-mcp[file-watcher] # watchdog-based external-change watcher pip install markdown-vault-mcp[all] # MCP + FastEmbed + API embeddings ``` For the Claude Code plugin channel (`/plugin install markdown-vault-mcp@pvliesdonk`) and all other install routes, see the [Installation guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/installation/) and the [Claude Code plugin guide](https://pvliesdonk.github.io/markdown-vault-mcp/latest/guides/claude-code-plugin/). <!-- DOMAIN-END --> ### From source ```bash git clone https://github.com/pvliesdonk/markdown-vault-mcp.git cd markdown-vault-mcp uv sync --all-extras --all-groups ``` ### Docker ```bash docker pull ghcr.io/pvliesdonk/markdown-vault-mcp:latest ``` To run the newest merged code instead of the newest release, use the rolling `edge` tag. It is rebuilt on every merge to `main` and carries no version identity. See [Image tags](docs/deployment/docker.md#image-tags) for the full tag list. ```bash docker pull ghcr.io/pvliesdonk/markdown-vault-mcp:edge ``` A `compose.yml` ships at the repo root and runs as-is: copy `.env.example` to `.env`, then `docker compose up -d`. It publishes port 8000 on the host and assumes no reverse proxy; [Docker Compose](docs/deployment/docker.md#docker-compose) covers the configuration split, the domain sentinel blocks, and a Traefik overlay. To attach a remote Python debugger (development only; the protocol is unauthenticated), see [Remote debugging](docs/deployment/docker.md#remote-debugging). ### Linux packages (.deb / .rpm) Download `.deb` or `.rpm` packages from the [GitHub Releases](https://github.com/pvliesdonk/markdown-vault-mcp/releases) page. Both install a hardened systemd unit; env configuration is sourced from `/etc/markdown-vault-mcp/env` (copy from the shipped `/etc/markdown-vault-mcp/env.example`). ### Claude Desktop (.mcpb bundle) Download the `.mcpb` bundle from the [GitHub Releases](https://github.com/pvliesdonk/markdown-vault-mcp/releases
What people ask about markdown-vault-mcp
What is pvliesdonk/markdown-vault-mcp?
+
pvliesdonk/markdown-vault-mcp is mcp servers for the Claude AI ecosystem. Generic markdown collection MCP server with FTS5 + semantic search, frontmatter-aware indexing, and incremental reindexing It has 33 GitHub stars and its last recorded update is dated 2026-09-13.
How do I install markdown-vault-mcp?
+
You can install markdown-vault-mcp by cloning the repository (https://github.com/pvliesdonk/markdown-vault-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is pvliesdonk/markdown-vault-mcp safe to use?
+
Our security agent has analyzed pvliesdonk/markdown-vault-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains pvliesdonk/markdown-vault-mcp?
+
pvliesdonk/markdown-vault-mcp is maintained by pvliesdonk. The last recorded GitHub activity is dated 2026-09-13, with 98 open issues.
Are there alternatives to markdown-vault-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy markdown-vault-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/pvliesdonk-markdown-vault-mcp)<a href="https://claudewave.com/repo/pvliesdonk-markdown-vault-mcp"><img src="https://claudewave.com/api/badge/pvliesdonk-markdown-vault-mcp" alt="Featured on ClaudeWave: pvliesdonk/markdown-vault-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
The fastest path to AI-powered full stack observability, even for lean teams.