npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cardmagic/notes

v1.1.0

Published

CLI and MCP server to search and browse Apple Notes

Readme

@cardmagic/notes

CLI and MCP server to search and browse Apple Notes with fuzzy matching.

Features

  • Fuzzy search - Find notes even with typos using MiniSearch
  • Full-text search - Searches note titles, snippets, and body content
  • Create & delete notes - Manage notes via AppleScript automation
  • PDF text extraction - Automatically extracts and indexes text from PDF attachments
  • Folder browsing - List and filter notes by folder
  • Fast indexing - SQLite FTS5 + MiniSearch for quick searches across thousands of notes
  • Dual mode - Use as CLI tool or MCP server for Claude Code integration

Installation

Homebrew

brew install cardmagic/tap/notes

npm

npm install -g @cardmagic/notes

Claude Code Plugin (recommended)

Install as a plugin to get skills (auto-invoked) and slash commands:

# Add the marketplace
claude plugin marketplace add cardmagic/notes

# Install the plugin
claude plugin install notes@cardmagic

This gives you:

  • Skill: Claude automatically searches notes when you ask about notes
  • Slash commands: /notes:search, /notes:recent, /notes:folders, and more

MCP Server

For direct MCP tool access without the plugin:

claude mcp add --transport stdio notes -- npx -y @cardmagic/notes --mcp

Or install globally first:

npm install -g @cardmagic/notes
claude mcp add --transport stdio notes -- notes --mcp

From source

git clone https://github.com/cardmagic/notes.git
cd notes
make install

# Then add as plugin OR MCP server:
claude plugin marketplace add cardmagic/notes
claude plugin install notes@cardmagic
# OR
claude mcp add --transport stdio notes -- notes --mcp

Requirements

  • macOS - Reads from Apple Notes database
  • Full Disk Access - Terminal/IDE needs access to ~/Library/Group Containers/
  • pdftotext (optional) - For PDF text extraction
# Install pdftotext for PDF support
brew install poppler

Granting Full Disk Access

The tool needs to read your Notes database at ~/Library/Group Containers/group.com.apple.notes/:

  1. Open System Settings > Privacy & Security > Full Disk Access
  2. Click + and add your terminal app (Terminal.app, iTerm, Warp, etc.)
  3. Restart your terminal

CLI Usage

Search notes

# Fuzzy search
notes search "recipe chocolate"

# Filter by folder
notes search "taxes" --folder "2024"

# Limit results
notes search "meeting" --limit 5

# Filter by date
notes search "project" --after 2024-01-01

Browse notes

# Recent notes
notes recent
notes recent --limit 10

# List all folders
notes folders

# Notes in a specific folder
notes folder "Recipes"
notes folder "Work" --limit 20

Read a note

# Get note ID from search results, then read full content
notes read 12345

Create a note

# Create a new note in the default "Notes" folder
notes create "Meeting Notes" --body "Agenda items for today..."

# Create in a specific folder
notes create "Shopping List" --body "Milk, eggs, bread" --folder "Personal"

Delete a note

# Delete a note by title
notes delete "Old Meeting Notes"

# Delete from a specific folder (useful if multiple notes have the same title)
notes delete "Draft" --folder "Work"

Manage index

# Show index statistics
notes stats

# Update index (incremental - only processes changed notes)
notes index

# Force full rebuild
notes index --force

The index uses incremental updates by default:

  • Tracks modification timestamps to detect changed notes
  • Only reprocesses notes modified since last index
  • Detects and removes deleted notes
  • Much faster than full rebuild for small changes

Claude Code Plugin

When installed as a plugin, you get:

Skill (auto-invoked): Claude automatically searches notes when you ask things like:

  • "What's in my notes about recipes?"
  • "Find my notes about the project"
  • "Create a note about the meeting"
  • "Delete my draft notes"

Slash Commands:

| Command | Description | |---------|-------------| | /notes:search <query> | Fuzzy search with optional filters | | /notes:recent | Show recently modified notes | | /notes:folders | List all folders with note counts | | /notes:folder "Name" | List notes in a specific folder | | /notes:read <id> | Read full note content by ID | | /notes:create <title> | Create a new note | | /notes:delete <title> | Delete a note by title |

MCP Server

Run as an MCP server for Claude Code integration:

notes --mcp

Available Tools

| Tool | Description | |------|-------------| | search_notes | Fuzzy search through notes | | recent_notes | Get recently modified notes | | read_note | Read full note content by ID | | list_folders | List all folders with note counts | | notes_in_folder | List notes in a specific folder | | get_note_stats | Get index statistics | | create_note | Create a new note | | delete_note | Delete a note by title |

Manual MCP Configuration

For Claude Desktop or VS Code, add to your MCP configuration:

{
  "mcpServers": {
    "notes": {
      "command": "npx",
      "args": ["-y", "@cardmagic/notes", "--mcp"]
    }
  }
}

PDF Text Extraction

PDF attachments in Notes are automatically extracted and indexed when:

  1. pdftotext is installed - brew install poppler
  2. PDF has been viewed - Notes caches PDFs locally when opened

The extracted text is appended to the note body, making PDF content fully searchable.

How it works

  • PDFs are cached at ~/Library/Group Containers/group.com.apple.notes/Library/Caches/Paper/
  • Each PDF bundle contains the file in Assets.bundle/
  • Text is extracted using pdftotext and indexed with the parent note

Limitations

  • PDFs stored only in iCloud (never opened locally) won't be indexed
  • Password-protected PDFs cannot be extracted
  • Scanned PDFs without OCR won't have searchable text

Data Locations

| Data | Path | |------|------| | Notes database | ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite | | PDF cache | ~/Library/Group Containers/group.com.apple.notes/Library/Caches/Paper/ | | Search index | ~/.notes/index.db | | Fuzzy index | ~/.notes/fuzzy.json | | Stats | ~/.notes/stats.json |

Development

# Clone and install
git clone https://github.com/cardmagic/notes
cd notes
pnpm install

# Build
pnpm build

# Watch mode
pnpm dev

# Link globally for testing
pnpm link --global

# Type check
pnpm typecheck

# Lint
pnpm lint

Project Structure

src/
├── index.ts        # Entry point - routes to CLI or MCP
├── cli.ts          # Commander-based CLI
├── mcp.ts          # MCP server implementation
├── applescript.ts  # AppleScript automation for create/delete
├── indexer.ts      # Builds search indexes from Notes database
├── searcher.ts     # Query engine with fuzzy matching
├── attachments.ts  # PDF text extraction
├── formatter.ts    # Terminal output formatting
└── types.ts        # TypeScript types and utilities

Privacy

This tool accesses your local Notes database for reading and uses AppleScript to create/delete notes. No data is sent externally. The search index is stored locally in ~/.notes/.

License

MIT

Author

Lucas Carlson