pickaxe

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2026 License: GPL-3.0 Imports: 1 Imported by: 0

README

pickaxe

Expose Obsidian vault files to Claude Code via MCP.

Install

go install github.com/matteoggl/pickaxe@latest

Or build from source:

go build -o dist/pickaxe .

Setup

pickaxe config set vault ~/your-vault
pickaxe init

config set vault writes the vault root to ~/.config/pickaxe/config.json (used by the TUI picker). init creates .pickaxe.json in the current project directory.

Adding files

pickaxe pick                 # open TUI picker
pickaxe add path/to/file.md  # register directly
pickaxe add path/to/dir      # register a directory

TUI key bindings: space=toggle, enter=navigate into dir, ctrl+d=confirm, /=filter, q=cancel.

Directories show a tri-state checkbox: [x] all files selected, [~] some files selected, [ ] none. Toggling a dir selects or deselects all .md files inside recursively. A partial dir ([~]) toggles to fully selected.

Flags: --as <name> to set a custom name, --recursive to include nested directories.

Directory entries expand to all .md files inside. Child names are prefixed as dir-name/file-name.

MCP server

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "pickaxe": {
      "command": "pickaxe",
      "args": ["serve"]
    }
  }
}

Changes to .pickaxe.json are picked up immediately — no server restart needed.

Commands

Command Aliases Description
config set vault <path> c Set Obsidian vault root
init i Create .pickaxe.json in current dir
add <path> a Register a file or directory directly
remove <name|hash> rm, r Unregister an entry by name or hash prefix
list ls, l Show registered entries with hash IDs
serve s Start MCP server (stdio)

Hash IDs

Each entry gets a deterministic 8-character hex ID derived from its name. list displays them with the shortest unique prefix highlighted:

  3a7f[c291] [file] my-notes ~/vault/my-notes.md ✓

remove accepts a hash prefix instead of a full name — any unambiguous prefix works:

pickaxe remove 3a7f

Privacy

YAML frontmatter is stripped from .md files before sending content to Claude. Tags, properties, and other metadata stay in your vault. Only the note body is shared.

To opt out, add "strip_frontmatter": false to .pickaxe.json.

How it works

.pickaxe.json stores registered entries (files and dirs). pickaxe serve runs an MCP stdio server exposing list_vault_files and read_vault_file. The registry is re-read on every tool call, so pickaxe add changes are visible immediately without restarting the server.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
mcp
tui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL