Markdown Vault MCP
Generic markdown vault MCP with hybrid search
Connector by pvliesdonk · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/pvliesdonk-markdown-vault-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: note-taking, knowledge-base
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 31 read · 9 write · 1 delete · 1 not yet classified
- Secrets
- 8 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 42
Read from the source code; the running server may list different tools.
Read 31 · Look things up without changing anything.
browse_vaultembeddings_statusget_backlinksget_broken_linksget_connection_pathget_contextget_conventionsget_diffget_historyget_index_statusget_most_linkedget_orphan_notes
Show 19 more tools
get_outlinksget_recentget_similarget_toclist_documentslist_folderslist_tagsokf_convert_linksokf_validatereadsearchshow_contextstatsvault_contextvault_graph_hubsvault_graph_neighborhoodvault_listvault_readvault_search
Write 9 · Create, change, send or run things.
appendeditgit_syncmove_folderokf_generate_indexokf_seed_logokf_verifyrenamewrite
Delete 1 · Delete, drop, revoke or wipe things.
delete
Not yet classified 1 · We could not tell from the name and description.
fetch
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
MARKDOWN_VAULT_MCP_GITHUB_WEBHOOK_SECRETMARKDOWN_VAULT_MCP_GITLAB_WEBHOOK_SECRET_TOKENMARKDOWN_VAULT_MCP_GITLAB_WEBHOOK_SIGNING_TOKENMARKDOWN_VAULT_MCP_GIT_TOKENMARKDOWN_VAULT_MCP_SUMMARIZE_MAX_TOKENSMARKDOWN_VAULT_MCP_SUMMARIZE_OPENAI_API_KEYOPENAI_API_KEYVOYAGE_API_KEY
Other settings (environment variables or headers).
MARKDOWN_VAULT_MCP_ATTACHMENT_EXTENSIONSMARKDOWN_VAULT_MCP_BOOT_REINDEXMARKDOWN_VAULT_MCP_BUILD_TIMEOUT_SMARKDOWN_VAULT_MCP_CHUNKS_PER_FILEMARKDOWN_VAULT_MCP_CHUNK_OVERLAP_WORDSMARKDOWN_VAULT_MCP_CONVENTIONS_FILEMARKDOWN_VAULT_MCP_DEFAULT_SEARCH_MODEMARKDOWN_VAULT_MCP_DISABLE_APPS_UIMARKDOWN_VAULT_MCP_DRAIN_TIMEOUT_SMARKDOWN_VAULT_MCP_EMBEDDINGS_PATHMARKDOWN_VAULT_MCP_EMBEDDING_BATCH_SIZEMARKDOWN_VAULT_MCP_EMBEDDING_PROVIDER
Show 71 more settings
MARKDOWN_VAULT_MCP_EMBED_CONTEXTMARKDOWN_VAULT_MCP_EMBED_TIMEOUT_SMARKDOWN_VAULT_MCP_EXCLUDEMARKDOWN_VAULT_MCP_FASTEMBED_CACHE_DIRMARKDOWN_VAULT_MCP_FASTEMBED_MODELMARKDOWN_VAULT_MCP_FILE_WATCHERMARKDOWN_VAULT_MCP_FILE_WATCHER_DEBOUNCE_SMARKDOWN_VAULT_MCP_FILE_WATCHER_ROOT_FLOORMARKDOWN_VAULT_MCP_FOLDER_WEIGHTSMARKDOWN_VAULT_MCP_FTS_WEIGHTSMARKDOWN_VAULT_MCP_GIT_COMMIT_EMAILMARKDOWN_VAULT_MCP_GIT_COMMIT_EMAIL_CLAIMMARKDOWN_VAULT_MCP_GIT_COMMIT_NAMEMARKDOWN_VAULT_MCP_GIT_COMMIT_NAME_CLAIMMARKDOWN_VAULT_MCP_GIT_LFSMARKDOWN_VAULT_MCP_GIT_PULL_INTERVAL_SMARKDOWN_VAULT_MCP_GIT_PUSH_DELAY_SMARKDOWN_VAULT_MCP_GIT_REPO_URLMARKDOWN_VAULT_MCP_GIT_USERNAMEMARKDOWN_VAULT_MCP_INDEXED_FIELDSMARKDOWN_VAULT_MCP_INDEX_PATHMARKDOWN_VAULT_MCP_INSTANCE_DESCRIPTIONMARKDOWN_VAULT_MCP_INSTRUCTIONSMARKDOWN_VAULT_MCP_INSTRUCTIONS_EXTRAMARKDOWN_VAULT_MCP_JOBS_MAX_PER_SUBJECTMARKDOWN_VAULT_MCP_JOBS_RESULT_TTL_SMARKDOWN_VAULT_MCP_JOBS_SOFT_DEADLINE_SMARKDOWN_VAULT_MCP_KV_STORE_URLMARKDOWN_VAULT_MCP_LENGTH_DOWNWEIGHT_ALPHAMARKDOWN_VAULT_MCP_LOG_FORMATMARKDOWN_VAULT_MCP_LOG_LEVELMARKDOWN_VAULT_MCP_MAX_ATTACHMENT_SIZE_MBMARKDOWN_VAULT_MCP_MAX_CHUNK_CHARSMARKDOWN_VAULT_MCP_MAX_CHUNK_WORDSMARKDOWN_VAULT_MCP_MAX_NOTE_READ_BYTESMARKDOWN_VAULT_MCP_OKF_MODEMARKDOWN_VAULT_MCP_OKF_VERIFYMARKDOWN_VAULT_MCP_OKF_WRITEMARKDOWN_VAULT_MCP_OLLAMA_CPU_ONLYMARKDOWN_VAULT_MCP_OLLAMA_MODELMARKDOWN_VAULT_MCP_OPENAI_BASE_URLMARKDOWN_VAULT_MCP_OPENAI_EMBEDDING_MODELMARKDOWN_VAULT_MCP_PROMPTS_FOLDERMARKDOWN_VAULT_MCP_READ_ONLYMARKDOWN_VAULT_MCP_REPORT_UNRESOLVED_LINKSMARKDOWN_VAULT_MCP_REQUIRED_FIELDSMARKDOWN_VAULT_MCP_SEARCHABLE_FIELDSMARKDOWN_VAULT_MCP_SERVER_NAMEMARKDOWN_VAULT_MCP_SNIPPET_WORDSMARKDOWN_VAULT_MCP_SOURCE_DIRMARKDOWN_VAULT_MCP_STATE_PATHMARKDOWN_VAULT_MCP_SUMMARIZE_MAX_INPUT_CHARSMARKDOWN_VAULT_MCP_SUMMARIZE_MAX_NOTESMARKDOWN_VAULT_MCP_SUMMARIZE_OPENAI_BASE_URLMARKDOWN_VAULT_MCP_SUMMARIZE_OPENAI_MODELMARKDOWN_VAULT_MCP_SUMMARIZE_PROVIDERMARKDOWN_VAULT_MCP_SUMMARIZE_TIMEOUTMARKDOWN_VAULT_MCP_TEMPLATES_FOLDERMARKDOWN_VAULT_MCP_TITLE_FIELDMARKDOWN_VAULT_MCP_TOOLS_ALLOWMARKDOWN_VAULT_MCP_TOOLS_DENYMARKDOWN_VAULT_MCP_TRANSFER_GRACE_TTL_SMARKDOWN_VAULT_MCP_TRANSFER_LEASE_SMARKDOWN_VAULT_MCP_TRANSFER_MAX_UPLOAD_BYTESMARKDOWN_VAULT_MCP_TRANSFER_TTL_DEFAULT_SMARKDOWN_VAULT_MCP_TRANSFER_TTL_MAX_SMARKDOWN_VAULT_MCP_VOYAGE_MODELMARKDOWN_VAULT_MCP_WRITE_PROTECT_EXISTINGOLLAMA_HOSTOPENAI_BASE_URLOPENAI_EMBEDDING_MODEL
Network hosts it talks to 13
api.anthropic.com· found in codeapi.github.com· found in codeapi.openai.com· found in codeapi.voyageai.com· found in codedocs.astral.sh· found in codefonts.googleapis.com· found in codefonts.gstatic.com· found in codegit-lfs.github.com· found in codegithub.com· found in codegofastmcp.com· found in codepvliesdonk.github.io· found in codeunpkg.com· found in codevale.sh· found in code
Files it touches
~/.claude/settings.json~/.gitconfig/etc/markdown-vault-mcp/tokens.toml/opt/markdown-vault-mcp/private/var- Your home directory (~)
- Any path the agent passes to its tools
Tools (42)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
appendAppend to NoteAdd text to the end of an existing note without reading it first. Prefer it over edit when the change only adds at the end, such as a log entry. The text starts on a new line; begin it with a blank line or a heading to start a paragraph or section. Args: path: Path of the note, such as `"Journal/2026.md"`. content: Non-empty text to add after everything the note holds. if_match: Etag from read; the text is then added only to that version. Omit to append regardless. create_if_missing: Create the note with content as its body when path does not exist. Default fa…
browse_vaultBrowse VaultOpen an interactive vault explorer for the user to look through: the file tree, the link graph or one note's relationships. It shows the vault to the user and returns nothing to read; use search, read, list_documents or get_context for content. Args: path: Note to open on, such as `"Journal/2024-01-15.md"`; omit to start from the whole vault. view: `"context"` for a note's relationships, `"graph"` for the link graph, `"browse"` for the file tree, or `"note"` for the note itself; omit for `"context"` with a path and `"browse"` without. Returns: - path (str…
deleteDelete NotePermanently delete a note or attachment; only git history can bring it back. Args: path: Path of the note or attachment. if_match: Etag from read; the file is then deleted only as that version. Omit to delete it as it is. Returns: Dict with path (str) of the deleted file. - remote (dict, optional): present only while the vault's git clone cannot reach its remote, with state, reason, since and detail; the change is committed locally only. Raises: DocumentNotFoundError: If no file exists at the given path. `MCPError`: If if_match is provided and th…
editEdit NoteReplace text in an existing note, chosen by an exact old_text, by a range of lines, or by an old_text within a range of lines. Read the note first for its current text. When old_text has no exact match, a unique match after normalising Unicode, dashes, quotes and whitespace is used and reported as match_type `"normalized"`. Args: path: Path of the note. old_text: Text to replace, occurring once in the note or in the line range; omit to replace the whole line range. new_text: Replacement text; empty deletes the matched text or the lines. if_match: Etag from read. Pass …
embeddings_statusEmbeddings StatusCheck embedding provider and vector-index status.
fetchFetch to VaultDownload a URL on the server and save it in the vault as a note or attachment; returns its path, size and final_url. The bytes never pass through the conversation, so use it for large files and then pass the path to other tools. Args: url: An HTTP or HTTPS URL on the public internet. Redirects are followed, so check final_url in the result when the source host matters. path: Destination path, such as `"notes/report.md"` or `"assets/diagram.png"`; .md saves a note, anything else an attachment. frontmatter: Frontmatter for a note, such as `{"title": "Report"…
get_backlinksBacklinksList the notes that link to a note. Use get_context when you also need its outlinks or similar notes. Args: path: Path of the note linked to, such as `"notes/topic.md"`; case-sensitive. limit: Maximum backlinks to return; omit for all. wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). …
get_broken_linksBroken LinksList the links whose target is missing from the vault, each with the note that holds it. stats reports broken_link_count; a rename without update_links leaves such links behind. Links to attachments are not checked. Args: folder: Only links in notes in this folder and its sub-folders, such as `"Journal"`; `""` for top-level notes only; omit for the whole vault. wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying …
get_connection_pathConnection PathFind the shortest chain of links between two notes, following links in either direction. Args: source: Path of the starting note, such as `"Ideas/spark.md"`. target: Path of the destination note. max_depth: Most links to follow, 1 to 10 (default 10). wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read…
get_contextNote ContextReturn a note's metadata, backlinks, outlinks, similar notes, folder neighbours, indexed tags and applicable conventions in one call. Use it instead of get_backlinks, get_outlinks and get_similar when you need more than one of them. Args: path: Path of the note, such as `"notes/topic.md"`; case-sensitive. similar_limit: Maximum similar notes (default 5); 0 skips them, which suits a vault where stats shows semantic_search_available false. link_limit: Maximum backlinks, and separately outlinks (default 10). wait_for_pending_writes: When True, wait until your recent …
get_conventionsFolder ConventionsReturn the vault owner's authoring conventions for a note or folder, vault root first and the most specific last. Args: path: A note or folder path, such as `"3-Resources/topic.md"` or `"3-Resources"`; a note takes its folder's conventions. `""` (the default) returns the root conventions and lists every folder that has its own. Returns: Dict with: - path (str): The path that was queried. - conventions (list): Applicable convention entries, root-first. Each has folder (str, `""` for vault root), path (str, the convention file's own path), and conte…
get_diffNote DiffReturn how a note or attachment changed from an earlier commit to now, as one unified diff or one per commit. Pass exactly one of since_sha and since_timestamp; find commits with get_history. A vault without git history returns an empty diff. Args: path: A note or attachment path, such as `"notes/alpha.md"`; a binary attachment returns a summary of size and renames instead of a patch. since_sha: A commit SHA to diff from, such as from get_history; at least 4 hex digits. since_timestamp: An ISO 8601 time; diffs from the latest commit at or before it. pe…
get_historyNote HistoryList the commits that touched a note, an attachment, a folder or the whole vault, newest first. A vault without git history returns no commits. Args: path: A note or attachment path, such as `"notes/alpha.md"`, or a folder, such as `"guides"`; omit for the whole vault. Give a note's current name: history from before a rename is included. since: Earliest commit date, inclusive: an ISO 8601 time such as `"2026-04-01T00:00:00"` or a relative date such as `"1 week ago"`; omit for all history. until: Latest commit date, inclusive, in the same forms as s…
get_index_statusIndex StatusReport FTS index readiness, progress, and last build error.
get_most_linkedMost-Linked NotesList the notes with the most backlinks, most first. Use get_backlinks for the notes that link to one of them. Args: limit: Maximum notes to return (default 10). wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). Default False answers immediately from the current index; almost …
Show 27 more tools
get_orphan_notesOrphan NotesList every note with no links in or out, with no limit on the count. stats reports orphan_count; check it first on a large vault. Args: wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). Default False answers immediately from the current index; almost always already up to date; …
get_outlinksOutlinksList the links in a note, each with an exists flag that is false when the target is missing. Use get_context when you also need its backlinks or similar notes. Args: path: Path of the note holding the links, such as `"notes/topic.md"`; case-sensitive. limit: Maximum outlinks to return; omit for all. wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right a…
get_recentRecent NotesList the most recently modified notes, newest first. Use it to pick up recent activity without a search query. Args: limit: Maximum notes to return (default 20). folder: Only notes in this folder and its sub-folders, such as `"Journal"`; `""` for top-level notes only; omit for the whole vault. wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a…
get_similarSimilar NotesFind the notes closest in meaning to a given note; returns them ranked by similarity with their closest sections, the note itself excluded. Needs semantic_search_available from stats. A note whose embeddings are not built yet has no similar notes. Args: path: Path of the note to compare against, such as `"notes/topic.md"`; case-sensitive. limit: Maximum notes to return (default 10). chunks_per_file: Maximum sections per note, at least 1; omit for the server default. folder: Only notes in this folder or below, such as `"3-Resources"`; `""` for top-level…
get_tocTable of ContentsReturn the heading outline of a note, or of every note under a folder. For a note: a list of {heading, level}, the title first as level 1. For a folder: {path, notes, truncated}, each note with its path, title and headings. Args: path: A note path ending in .md, such as `"a/b.md"`, or a folder, such as `"a/b"`. max_level: Deepest heading level to keep, such as 2 for H1 and H2; omit for all. The title always stays. max_notes: Folders only: notes to include, first by path (default 200); truncated is true when more exist. wait_for_pending_writes: When True, wait …
git_syncSync with GitPull from and push to the vault's git remote now; returns what each leg did. With direction "both" the pull runs first, and a failed pull skips the push. Args: direction: `pull`, `push` or `both` (default). dry_run: Report what a pull would do without changing anything; the push leg reports applied false without contacting the remote. Returns: Dict with the following fields: - direction (str): The requested direction, echoed back. - head_sha (str): Local HEAD SHA after the operation. May differ from the pre-call HEAD when the pull leg advanced the br…
list_documentsList DocumentsList notes, and optionally attachments, with path, title and frontmatter but no body text. Use search to find notes by what they say. Args: folder: Only notes in this folder and its sub-folders, such as `"Journal"`; `""` for top-level notes only; omit for the whole vault. pattern: Glob matched against paths, such as `"Journal/*.md"` or `"**/*meeting*.md"`. include_attachments: Also list non-note files, marked kind=`"attachment"` with their mime_type. Default false. filters: Frontmatter values to match, all of them, such as `{"tags": "craft"}`; …
list_foldersList FoldersList every folder that holds notes; `""` stands for the top level. Pass one as the folder argument of search, list_documents and the other folder-scoped tools. Args: wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). Default False answers immediately from the current index; almost …
list_tagsList TagsList the distinct values one indexed frontmatter field takes across the vault. Use the values in the filters argument of search. Args: field: A field from indexed_frontmatter_fields in stats (default `"tags"`). wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). Default False answers…
move_folderMove FolderMove a folder and everything under it to a new location, rewriting every link into it across the vault: rename for a whole folder. Notes whose links could not be rewritten are listed in failed_links. Args: old_dir: Folder to move, such as `"drafts"`. new_dir: Destination folder, such as `"archive/2026"`; an existing folder is merged into. Returns: Dict with old_dir (str), new_dir (str), files_moved (int) and updated_links (int), plus: - failed_links (list[str]): paths of notes whose links could not be rewritten; the move itself stands. - remote (dict, …
okf_convert_linksOKF: Convert WikilinksRewrite wikilinks as bundle-root-absolute Markdown links, the Open Knowledge Format's recommended style; returns counts of links converted and skipped. A wikilink whose target is not in the vault stays as it is. Running it again changes nothing already converted. Args: folder: Only notes in this folder and below, such as `"guides"`; omit for the whole vault. Returns: Dict with: - files_changed (int): notes rewritten. - links_converted (int): wikilinks turned into Markdown links. - links_skipped (int): wikilinks left as they are because the target is not in…
okf_generate_indexOKF: Generate index.mdWrite a folder's Open Knowledge Format index.md: a link to each note directly in it with its description, and one to each subfolder's index.md, replacing the old listing and keeping its frontmatter. Subfolders without an index.md get one too. Args: folder: Folder to index, such as `"guides"`; omit for the bundle root. Returns: Dict with: - path (str): the index.md written. - entries (int): notes and subfolder links listed. - frontmatter_preserved (bool): true when the file already had frontmatter, which is kept; false when it had none, though the fields the …
okf_seed_logOKF: Seed log.mdCreate a folder's Open Knowledge Format log.md from the git history of the notes under it, one dated section per day, newest first. It never replaces an existing log.md. It covers the 100 most recent commits. A vault without git history gets an empty log. Args: folder: Folder to write log.md in, whose history it covers, such as `"guides"`; omit for the bundle root and the whole vault's history. Returns: Dict with path (str), commits (int) and dates (int, the number of distinct days), plus: - remote (dict, optional): present only while the vault's git clone can…
okf_validateValidate OKF BundleAudit how far the vault conforms to the Open Knowledge Format, with example paths per rule; works on a vault not yet declared as a bundle.
okf_verifyOKF: Verify NoteRecord that a person reviewed a note, raising its Open Knowledge Format trust tier to human-reviewed; returns the verifier recorded. The user may be asked to confirm the review. The record means a person looked, not that the content is correct. Args: path: Path of the note the user reviewed. Returns: On the modern protocol's first round, an input request asking the client for human confirmation. After confirmation, a dict with: - `path`: the verified note. - `verifier`: the `human:<subject>` actor recorded. - `verified_count`: the number of verification entries afte…
readRead NoteReturn a note's text, frontmatter and etag, or an attachment's bytes as base64. Look paths up with search or list_documents first rather than guessing them. Args: path: Path in the vault, such as `"Journal/note.md"` or `"assets/diagram.pdf"`; case-sensitive. section: A heading, such as the heading field of a search result; returns that section and its sub-sections instead of the whole note. Notes only. revision: A commit SHA from get_history or from a write result's previous_revision; returns the note as it stood then, without an etag. Pass path as…
renameRename NoteRename or move a note or attachment; with update_links, links to it in other notes follow it. For a note, always pass update_links=True. Parent folders are created as needed. Args: old_path: Current path, such as `"drafts/idea.md"` or `"assets/old.png"`. new_path: New path, such as `"projects/idea.md"`, where nothing exists yet. if_match: Etag from read of old_path; omit when renaming several linked notes together. update_links: Rewrite links to old_path in other notes so they point at new_path; attachment references are not tracked. Default false; pass …
searchSearch VaultSearch notes by keyword and meaning; returns notes ranked by score, each with its best-matching sections as snippets. Use list_documents for a complete listing and read for a path you already know. Args: query: Words to match or a natural-language question. limit: Maximum notes to return (default 10). mode: Omit for the best mode this vault serves. `"keyword"` suits exact terms, operators and filenames; `"semantic"` matches meaning only; `"hybrid"` combines both. `"semantic"` and `"hybrid"` need semantic_search_available from stats. folder: Only notes …
show_contextContext CardOpen an interactive card for the user showing a note's backlinks, outlinks, similar notes, tags and frontmatter. It shows the note to the user and returns only counts; use get_context for the data. Args: path: Path of the note, such as `"Journal/2024-01-15.md"`. Returns: - path (str): The note path. - view (str): Always `"context"`. - summary (str): Text summary with backlink, outlink, and similarity counts.
statsVault StatsReport the vault's size, link health and capabilities: the search modes it serves and the frontmatter fields search can filter on. Args: wait_for_pending_writes: When True, wait until your recent document mutations have been applied to the index before answering, so the results reflect those changes. Use it right after modifying notes when this read must see them (such as right after a document mutation whose effect this read should reflect). Default False answers immediately from the current index; almost always already up to date; …
vault_contextVault ContextReturn the full NoteContext for a note (app-only). Called by the SPA context card view via `app.callServerTool()`. Not visible to the LLM. Args: path: Relative note path (such as `"Journal/2024-01-15.md"`). Returns: Dict with path, title, folder, frontmatter, modified_at, backlinks, outlinks, similar, folder_notes, and tags; see 'get_context' for field details. Returns `{"error": "..."}` if the note is not found.
vault_graph_hubsGraph HubsReturn the most-linked notes and their connections as a graph (app-only). Called by the SPA graph view for the hub overview. Not visible to the LLM. Args: limit: Max number of hub notes to include. Returns: Dict with: - nodes (list): List of dicts, each with: - id (str): Unique identifier for the node. - label (str): Display name for the node. - group (str): `"hub"` or `"note"`. - folder (str): Parent folder path. - backlink_count (int): Number of inbound links. - note_type (str, optional): The note's OKF `type` frontmatter value; pr…
vault_graph_neighborhoodGraph NeighborhoodReturn the link neighborhood of a note as a node/edge graph (app-only). Called by the SPA graph view via `app.callServerTool()`. Not visible to the LLM. Args: path: Center note path. depth: How many hops to traverse (default 1). include_semantic: When True, add dashed semantic-similarity edges for each interior node (requires embeddings to be configured; silently omitted when unavailable). max_nodes: Soft cap on returned node count (default 200). BFS and any semantic expansion both stop once the cap is hit; the response sets `truncated=True`. B…
vault_listVault ListList folders and notes in a vault directory (app-only). Called by the SPA browser view via `app.callServerTool()`. Not visible to the LLM. Args: folder: Folder to list (root if omitted). Returns: Dict with: - folders (list[str]): Direct child folder paths. - notes (list): Notes directly inside this folder. List of dicts, each with: - path (str): Relative path of the note. - title (str): Document title. - kind (str): `"note"` or `"attachment"`.
vault_readVault ReadRead a note's full content for preview rendering (app-only). Called by the SPA browser view via `app.callServerTool()`. Not visible to the LLM. Args: path: Relative note path. Returns: Dict with path, title, frontmatter, content (the full raw file, including the frontmatter block), and modified_at (Unix timestamp), or null if the note is not found.
vault_searchVault SearchSearch the vault (app-only). Called by the SPA browser search bar via `app.callServerTool()`. Not visible to the LLM. Args: query: Search query string. mode: Search mode (keyword, semantic, or hybrid). limit: Max results. Returns: List of result dicts, each with path (str), title (str), snippet (str, first 200 chars of matched chunk), and score (float). Returns `[{"error": "..."}]` on search failure.
writeWrite NoteCreate a note or attachment, or replace one whole; returns its path and whether it was created. Use edit for targeted changes and append to add to the end. Parent folders are created as needed. Args: path: Path in the vault, such as `"Journal/note.md"` or `"assets/photo.png"`; the extension decides between note and attachment. content: The note's Markdown body, without frontmatter. frontmatter: The note's frontmatter, such as `{"title": "My Note", "tags": ["draft"]}`. content_base64: An attachment's bytes, base64-encoded; for paths not ending in .md. …
Signals
- Stars
- 35
- Forks
- 13
- Open issues
- 148
- Contributors
- 13
- Weekly downloads
- 233
- Last commit
- Oct 24, 2026 (4 days ago)
- Last release
- Oct 7, 2026 (21 days ago)
- Last package publish
- Oct 7, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.pvliesdonk/markdown-vault-mcp- Version
- 5.1.0
- Auth
- API key
- Packages
- pypi markdown-vault-mcpoci
ghcr.io/pvliesdonk/markdown-vault-mcp:v5.1.0 - License
- MIT
- Repository
- github.com/pvliesdonk/markdown-vault-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from pvliesdonk
- 0.628score
Scholar MCP
pvliesdonk
FastMCP server for scholarly papers, patents, books and standards with docling PDF conversion
ConnectorAFreshness: ARemoteLocal★ 2↓ 122/wkClaude Code +5 - 0.620score
Paperless MCP
pvliesdonk
Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
ConnectorAFreshness: ARemoteLocal★ 1↓ 111/wkClaude Code +5 - 0.548score
Image Generation MCP Server
pvliesdonk
MCP server for AI image generation via OpenAI, Stable Diffusion (SD WebUI), or placeholders.
ConnectorBFreshness: BRemoteLocal★ 1↓ 138/wkClaude Code +5 - 0.493score
Logo.dev MCP
pvliesdonk
Look up company logos and brand data via the logo.dev API.
ConnectorCFreshness: CRemoteLocalRead-only↓ 38/wkClaude Code +5
Cite this page
Markdown Vault MCP. Agent Mart. https://agentmart.dev/connectors/pvliesdonk-markdown-vault-mcp (last updated 2026-10-24)