VaultPilot
Provides tools for interacting with an Obsidian vault, including full-text and tag search, reading notes by path, capturing inbox/learning/work notes, appending bullets to daily notes, and managing structured bug notes with timeline and close actions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VaultPilot Search my vault for notes about FastMCP"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VaultPilot
Obsidian vault MCP for Cursor and Claude — capture notes, search your vault, append daily logs, and run bug sessions without leaving the chat.
Built with FastMCP (Python).
Why
LLM chats are ephemeral. VaultPilot turns Cursor/Claude into a remote control for your Obsidian vault so learning, debugging, and daily notes stick.
Related MCP server: Obsidian MCP Server
Features
Area | Capabilities |
Search / read | Full-text search, tag search, read notes by path |
Capture | Quick inbox notes, learning notes, work notes (Auto Note Mover tags) |
Distill | Summarize long chat into a vault note via LLM sampling |
Daily | Append bullets to today's daily note |
Bugs | Start / append / close structured bug notes (with confirm) |
Prompts & skills | Templates + playbooks for capture and debugging |
Safety | Path allowlist, secret redaction, audit log, optional HTTP token auth |
Quick start
git clone https://github.com/Faisal-hn/vaultpilot.git
cd vaultpilot
uv sync
export VAULT_ROOT="$HOME/Obsidian Vault" # path to your vault
uv run vaultpilotCursor MCP config
{
"mcpServers": {
"vaultpilot": {
"command": "uv",
"args": [
"run",
"--directory",
"/ABSOLUTE/PATH/TO/vaultpilot",
"vaultpilot"
],
"env": {
"VAULT_ROOT": "/ABSOLUTE/PATH/TO/YOUR/Obsidian Vault"
}
}
}
}Demo / tests
uv run python clients/demo_client.py
uv run python -B clients/e2e_test.pyOptional modes
# HTTP + bearer token
VAULTPILOT_HTTP=1 VAULTPILOT_TOKEN=dev-vaultpilot-token uv run vaultpilot
# Hide write tools
VAULTPILOT_READONLY=1 uv run vaultpilotPhrasebook
Search my vault for <keyword>
Capture: <title> — <body>
Save learning on <topic>, topic fastmcp
Log: <what you did today>
Start bug note for … / Add to timeline / Close bug …
Summarize this thread into a learning note titled …Config
See vaultpilot.toml for writable folders, domain tags, and FastMCP topic routing.
License
MIT — use and adapt freely.
Available Tools
13 toolsbug_appendB
Append to a bug note section (Timeline, Hypothesis, Fix, Symptom, Root cause). Uses active bug if path omitted.
Inputs: entry (required), section (required), path. Returns: path, title, status, section
bug_closeA
Close the active (or given) bug note after confirmation. Writes Fix + Root cause and sets status=fixed.
Inputs: fix (required), root_cause (required), path. Returns: result
bug_startC
Start a bug-session note in Inbox and remember it as the active bug.
Inputs: title (required), symptom (required), domain. Returns: path, title, status, section
capture_distillB
Summarize long chat/source text via client LLM sampling, then save as a vault note.
kind: learning | work | quick topic_or_domain: for learning use topic (e.g. fastmcp); for work use domain (e.g. auth).
Inputs: title (required), source_text (required), kind, topic_or_domain. Returns: path, tags, title, created
capture_learningB
Create a learning note with a knowledge/* tag. Topic 'fastmcp' writes to 03-Knowledge/FastMCP.
Inputs: body (required), title (required), topic. Returns: path, tags, title, created
capture_quickC
Create a quick capture note in 00-Inbox.
Inputs: body (required), title (required), tags. Returns: path, tags, title, created
capture_workB
Create a work note in Inbox with #work/ tag for Auto Note Mover.
Inputs: body (required), title (required), domain (required). Returns: path, tags, title, created
daily_appendB
Append a bullet to today's daily note (default section: Notes).
Inputs: text (required), section. Returns: path, section, appended
list_resourcesARead-only
List all available resources and resource templates.
Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}.
Inputs: no named parameters. Returns: result
notes_readB
Read a markdown note from the vault by relative path.
Inputs: path (required). Returns: path, tags, title, content
read_resourceARead-only
Read a resource by its URI.
For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in.
Returns the resource content as a string. Binary content is base64-encoded.
Inputs: uri (required). Returns: result
search_by_tagC
Search notes containing a tag (with or without leading #).
Inputs: tag (required), limit. Returns: hits, query, total
search_queryC
Full-text search markdown notes in the vault.
Inputs: query (required), limit. Returns: hits, query, total
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
The bug_* tools form a clear workflow, capture_* variants target different note types, and search_query vs search_by_tag have distinct scopes. However, search_query/search_by_tag and notes_read/read_resource have some overlapping read/search intent, and the four capture_* variants could be confused without careful reading.
Names mix conventions: bug_* uses prefix_verb, while list_resources, read_resource, search_query, and capture_* use verb_noun. notes_read and daily_append use noun_verb, and search_by_tag uses verb_by_noun, so the set is readable but not consistently patterned.
13 tools for a vault assistant covering capture, search, bug tracking, daily notes, and resource access is well-scoped. Each category earns its place, and the four capture variants are granular but not excessive.
Creation, reading, searching, and specialized bug/daily appends are covered, but generic note editing, deletion, moving, and listing vault notes are absent. Agents can work around some gaps but will hit dead ends for common note lifecycle operations.
Maintenance
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Safe folder access for ChatGPT and Claude: read, write and search files, risky tools opt-in.
Long-term memory for Claude, ChatGPT, Cursor: search, save and organize notes, links, docs, videos.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude to read, write, search, and manage Obsidian vault notes with Git-backed sync support for multi-device access and extensible AI workflows.7,397 npm-
- AlicenseNot gradedqualityDmaintenanceConnects Claude Desktop to your Obsidian vault, enabling reading, writing, searching, and organizing notes locally.1MIT
- FlicenseNot gradedqualityDmaintenanceLets Claude save conversations, notes, and structured summaries directly to your Obsidian vault. Supports YAML frontmatter, auto-backlinks, daily notes, and vault search.-
- AlicenseAqualityDmaintenanceConnects Claude Desktop to an Obsidian vault, enabling reading, searching, capturing ideas, and managing notes through natural language.213 npmMIT