Skip to main content
Glama

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 vaultpilot

Cursor 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.py

Optional modes

# HTTP + bearer token
VAULTPILOT_HTTP=1 VAULTPILOT_TOKEN=dev-vaultpilot-token uv run vaultpilot

# Hide write tools
VAULTPILOT_READONLY=1 uv run vaultpilot

Phrasebook

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 tools
bug_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_resourcesA
Read-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_resourceA
Read-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

    B3.2/5.0

    Scored across 13 tools

    Disambiguation4/5

    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.

    Naming Consistency3/5

    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.

    Tool Count5/5

    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.

    Completeness3/5

    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

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers