MCP Prompts¶
Prompt templates guide the LLM through multi-step workflows using the vault tools. Write prompts (research, discuss, create_from_template) are hidden when MARKDOWN_VAULT_MCP_READ_ONLY=true; they are available by default.
Quick Reference¶
| Prompt | Parameters | Category | Description |
|---|---|---|---|
summarize |
path |
Read | Structured summary of a document |
summarize-subtree |
paths, focus (optional) |
Read | Multi-note or folder summary using the client's own model, processed in batches (delegated to subagents when the client has them) |
research |
topic |
Write | Search, synthesize, and create a research note |
discuss |
path |
Write | Analyze and suggest improvements using edit |
create_from_template |
template_name (optional) |
Write | Create a new note from a template in your templates folder |
related |
path |
Read | Find related notes and suggest cross-references |
compare |
path1, path2 |
Read | Side-by-side comparison of two documents |
propose-links |
scope, per_note_limit (both optional) |
Write | Propose new links between semantically close notes that aren't already connected |
summarize¶
Read a document and produce a structured summary with key themes and takeaways.
Parameters:
| Parameter | Type | Description |
|---|---|---|
path |
string | Relative path to the document being summarized |
Workflow: Calls read on the given path, then produces a concise overview covering the document's main topics and key points.
For a folder or several notes, use summarize-subtree (or the summarize tool where a backend is configured) instead of repeating this prompt per note.
summarize-subtree¶
Summarize a folder subtree or a set of notes with the client's own model. The prompt ships the same map-reduce recipe the server-side summarize tool runs internally: partition into batches, one partial summary per batch, combine. Note bodies stay out of the retained conversation context: with subagents each phase runs in its own subagent, and without them the client processes batches sequentially, carrying only partial summaries forward. It needs no summarization backend and no API key on the server.
The prompt adapts to the server's configuration. Whether summarization runs server-side or client-side is an operator decision, expressed by configuring a summarization backend or not:
- Backend configured: the
summarizetool is registered and the prompt opens by preferring it: a single call with no context overhead for the client. The recipe remains available for when the user wants their own model to do the work. - No backend: the tool is absent and the prompt carries the recipe alone, without mentioning a tool the server does not have. The server instructions point clients at the prompt in this case.
For operators deciding whether to configure a backend: the tool is the most efficient path for the client's primary model. Its backend usage is billed separately from the client, though; that matters when client usage is already covered by a subscription plan, and not at all for a local endpoint or a pay-per-token setup. Neither route is inherently more private: the backend can be a local model that discloses less than a cloud-hosted client model. And the backend receives frozen text, where a mapper subagent can follow a link mid-summary to resolve a reference.
Parameters:
| Parameter | Type | Description |
|---|---|---|
paths |
string | One or more note paths and/or folder prefixes, separated by commas (such as projects/alpha or notes/a.md, notes/b.md) |
focus |
string | null | Optional free-text steer, such as "extract action items". Empty produces a general summary. |
Workflow:
- Plan: expand folder prefixes via
get_toc, de-duplicate, and pack the note paths into batches (delegated to a subagent when available; the toc carries paths, titles, and headings, never bodies). - Map: one detailed partial summary per batch, preserving concrete specifics and referencing every note by path. Parallel subagents fan out one mapper each; sequential subagents run one at a time; without subagents the client reads one batch at a time, keeping only each batch's partial summary.
- Reduce: partial summaries are combined into one cohesive summary, by a reducer subagent or inline.
- Deliver: the final summary plus a coverage note (notes summarized, notes skipped).
research¶
Search for a topic, synthesize findings across multiple documents, and create a new research note.
Parameters:
| Parameter | Type | Description |
|---|---|---|
topic |
string | The topic to research |
Workflow:
- Calls
searchwith the topic (uses hybrid mode if available) - Reads the top 3-5 results
- Writes a structured summary with source links to
Research/{topic-slug}.md
Write prompt
This prompt creates a new document and is hidden when READ_ONLY=true.
discuss¶
Analyze a document and suggest improvements, applying changes via edit (not write).
Parameters:
| Parameter | Type | Description |
|---|---|---|
path |
string | Relative path to the document to discuss |
Workflow:
- Calls
readto review the document - Identifies specific improvements (factual corrections, clarity, structure, completeness)
- Presents proposed changes to the user
- Applies approved changes using
editcalls
Write prompt
This prompt modifies existing documents and is hidden when READ_ONLY=true.
create_from_template¶
Create a new note by adapting a template from your configured templates folder.
Parameters:
| Parameter | Type | Description |
|---|---|---|
template_name |
string | null | Optional template filename/path relative to MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER |
Workflow:
- If
template_nameis not provided, callslist_documents(folder=<templates folder>) - Calls
readon the selected template path - Presents template structure and asks the user for values
- Proposes/collects target path for the new note
- Calls
writewith the filled content
Template convention
Templates are regular markdown files. Set MARKDOWN_VAULT_MCP_TEMPLATES_FOLDER (default _templates) to control where template files live.
Write prompt
This prompt creates a new document and is hidden when READ_ONLY=true.
related¶
Find related notes via search and suggest cross-references as markdown links.
Parameters:
| Parameter | Type | Description |
|---|---|---|
path |
string | Relative path to the document to find related notes for |
Workflow:
- Calls
readto extract main topics and key terms - Calls
searchusing those terms (prefers semantic mode) - Presents a list of related documents with connection explanations
This is a read-only prompt; it does not modify any documents.
compare¶
Read two documents and produce a side-by-side comparison.
Parameters:
| Parameter | Type | Description |
|---|---|---|
path1 |
string | Relative path to the first document |
path2 |
string | Relative path to the second document |
Workflow: Reads both documents and presents a comparison covering:
- What both documents agree on
- Where they differ or contradict
- Information present in one but absent from the other
propose-links¶
Scan a bounded set of notes for semantically close pairs that aren't already linked, filter by LLM judgment to keep only substantive connections, and write them to the vault on confirmation.
Parameters:
| Parameter | Type | Description |
|---|---|---|
scope |
string | null | Candidate set: a folder path (such as "1-Projects"), "recent" (default; notes modified in the last 30 days), or "all". No trailing slashes. |
per_note_limit |
integer | null | Max candidates per note to evaluate. Defaults to 5. |
Workflow:
- Resolve
scopeto a list of notes, warning if more than 100 notes match. - For each note, gather candidates via
get_similar(with asearch(mode='keyword')fallback when embeddings aren't configured). - Filter out pairs where A already links to B (via
get_outlinks), then check folder conventions viaget_conventionsand drop or reverse pairs a convention forbids (such as a self-contained resources folder that must not link out to projects). - LLM judgment: read each candidate's title and opening to confirm the connection is substantive, not merely lexical.
- Pick direction (one-way
A → B) and placement per note shape (inline citation,## Relatedsection, hub bullet list, or footnote, whichever fits). Folder conventions override these heuristics. - Show a batch preview of every proposed edit.
- Write approved edits; skip failures (such as
ConcurrentModificationError) and report reasons.
Write prompt
This prompt modifies documents and is hidden when READ_ONLY=true.
Embeddings recommended
propose-links falls back to keyword search without embeddings, but the quality of candidates is noticeably better when get_similar is available. See Embeddings for setup.
Ambient patterns without prompts¶
Not every LLM-native workflow needs a codified MCP prompt. With a capable model and the server's tools, several high-value flows work from prose intent alone. The examples below document these composable patterns: which tools the model orchestrates and why each pattern doesn't need its own prompt.
Capture a URL as a note¶
"Fetch https://example.com/article, summarize as a Resource note under
3-Resources/, and link any existing notes on the topic."
Tools composed: fetch → LLM summarization → search (to find related existing notes) → write (with frontmatter and wikilinks).
Why no codified prompt: the only knob is the target folder, and the user expresses it in the ask. No structure worth pre-specifying.
Research a topic into interlinked notes¶
"Research product security regulations, compare the major standards, and create a set of interlinked notes: one per regulation, plus a map-of-content."
Tools composed: client-side web search → LLM synthesis → multiple write calls with [[wikilinks]] connecting the resulting notes.
Why no codified prompt: modern LLMs cross-link naturally when asked for "a set of interlinked notes." The single-note version (research prompt) handles the simpler case where one note is enough.
Distill conversations into Inbox notes¶
"Summarize today's conversations into Inbox notes, one per topic."
Tools composed: conversation_search + recent_chats (Claude.ai client-side) → LLM distillation → write per topic.
Why (partially) codified: the para-capture-chats prompt exists as the one-click version because it has platform-specific tool names to call out and constraints on what to skip (pure Q&A, debugging). Outside the PARA pack, the ambient ask works fine.
Split and merge captures¶
"Split this Inbox note into two: one for the Postgres upgrade, one for the CRA compliance work."
"Merge this into
3-Resources/distributed-consensus.mdinstead of creating a duplicate."
Tools composed: read + search (to find merge target) + write (new notes or extended target) + delete (the source note).
Why no codified prompt: the split/merge heuristic is codified inside para-triage where it's most useful. Outside triage, the ambient ask is a direct one-sentence instruction.
Ad-hoc link proposal for a single note¶
"Get the context for
1-Projects/migrate-postgres.mdand identify any notes we haven't linked yet."
Tools composed: get_context (surfaces the similar field) → LLM filtering → edit or write to add selected links.
Why no codified prompt: related covers the find-candidates case read-only; the per-note write case is a natural extension and doesn't add enough structure to warrant a standalone prompt. The vault-wide sweep has a codified prompt: propose-links.
How to invoke prompts¶
Three invocation affordances, roughly in order of convenience:
1. Claude.ai: the + menu (recommended)¶
On Claude.ai, once the server is added as a connector, every prompt appears in the compose area's + menu. Click +, select connectors, pick the server, pick a prompt. Claude opens with the invocation scaffolded. No typing; no remembering argument names.
This is the best UX for frequent prompts (propose-links, summarize, the PARA / Zettelkasten workflow prompts).
2. Claude Code: the / menu¶
In Claude Code, MCP prompts appear in the slash-command menu after the server is configured in the workspace's MCP settings. Same effect as the Claude.ai + menu: the prompt is pre-scaffolded.
3. Plain conversation¶
Every prompt can be invoked from prose ("use the propose-links prompt with scope='1-Projects'"). The model resolves the name and calls the prompt. This is the fallback: more typing, but works in any MCP client.
The ambient-pattern flows above only use plain conversation; they don't have a prompt name to invoke. The trade-off: no menu shortcut, but no prompt to maintain either.