본문으로 건너뛰기
cccskills
무료GitHub에 공개

apple-notes-search

Semantic + keyword search and connection-discovery across the user's own Apple Notes via the apple-notes MCP server. Use when the user wants to find, recall, or synthesize something from their notes, or surface non-obvious bridges/related notes. macOS, on-device.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구OpenAI
설치 방법 보기

포함된 파일(1)

  • SKILL.md7.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Apple Notes search & connection-discovery

apple-notes is an MCP server for semantic search and connection-discovery across the user's own Apple Notes — hybrid search, Swanson-ABC bridges, entity threads, and cited synthesis over everything they've written. Embeddings, search, BM25, clustering, and bridges run on-device; only synthesis generation calls an LLM (local OR cloud, the user's choice).

This skill covers (1) the one-time setup you must walk the user through, and (2) which tool to reach for, since the server exposes many.

When to Use This Skill

  • Use when the user wants to find, recall, or look up something from their own Apple Notes ("search my notes for X", "what did I write about X", "did I ever note Y").
  • Use when the user wants to surface non-obvious connections across their notes ("find bridges/connections across my notes", "what links X and Y", "show related notes").
  • Use when the user wants to synthesize a position from their notes ("summarize what I think about X from my notes", "pull together everything I've written on X").
  • Also use for "index my Apple Notes", tag/folder queries, and "what's connected to X".
  • Do not use for creating reminders, or for non-Apple-Notes note systems.

First: is the MCP connected?

If apple-notes tools are not available, the server isn't registered yet — do the Setup below before anything else. If tools exist but a search returns "not indexed" or empty, run index-notes first (see Ranking caveats).

Setup (walk the user through this — it's the skill's real value)

The server reads Apple Notes' SQLite store directly, so the bun binary needs Full Disk Access. Steps, in order:

  1. Install bun (if absent): brew install oven-sh/bun/bun
  2. Clone + install deps:
    git clone https://github.com/connerkward/mcp-apple-notes
    cd mcp-apple-notes
    git checkout <reviewed-tag-or-commit>
    bun install
    
  3. Grant Full Disk Access to bun. Run which bun, then open System Settings → Privacy & Security → Full Disk Access, click +, and add that exact bun binary path (commonly /opt/homebrew/bin/bun or /usr/local/bin/bun). Without this the server cannot read NoteStore.sqlite and every call fails with a permissions error. (bun install's postinstall tries to open this pane automatically.)
  4. Register the MCP server (pick the user's client):
    • Claude Code: claude mcp add apple-notes -- bun /absolute/path/to/mcp-apple-notes/index.ts --stdio
    • Claude Desktop: add to claude_desktop_config.json:
      { "mcpServers": { "apple-notes": {
          "command": "/Users/<you>/.bun/bin/bun",
          "args": ["/Users/<you>/mcp-apple-notes/index.ts", "--stdio"] } } }
      
    • As a Claude Code plugin (bundles this skill too): /plugin marketplace add connerkward/ckw-skills then /plugin install apple-notes@connerkward.
  5. Restart the client, then tell the user to ask "Index my Apple Notes" (or call index-notes). First index of ~1,800 notes takes a few seconds.

Tool map — which tool for which job

ToolUse when
index-notesFirst run, or to force a rebuild. Background job with live progress.
search-notesDefault search. Hybrid semantic + BM25, re-ranked. Optional folder, modifiedAfter, modifiedBefore. "What did I write about X."
find-notesExact substring match (like the Apple Notes search box). Use when the user wants a literal string, not meaning. Optional folder, date range.
get-noteFetch one full note by title (fuzzy fallback).
list-notesNotes by recency. Optional folder, date range, limit.
list-foldersAll folders + note counts.
list-tags / search-by-tag#hashtag inventory / notes carrying a given tag.
related-notesNotes related to a given one via shared tags, [[wikilinks]], and vector similarity. "Show me related notes."
bridge-notesSwanson-ABC bridges — non-obvious connections: pairs (A, C) not directly similar but both strongly tied to a shared intermediary B. "Find non-obvious connections across my notes." Optional folder, limit. No LLM.
feedRanked evidence-first connection stream (bridges + abstraction pairs + entity threads) as JSON. Optional limit.
entity-notes / list-entities"Where else do I talk about Mercedes?" Entity chips → notes by mention weight. Needs the optional entity graph db (~/.mcp-apple-notes/layered_graph.db); if absent these report how to generate it.
get-tablesPull pipe/tab tables out of a note.
create-note / update-noteCreate or edit a note.
check-changesDid notes change since last index? (does not trigger re-index)
index-healthSync status, last-indexed time, note count. Run this if results seem stale.

For "synthesize what I think about X" the synthesis lives in the web app endpoint (GET /api/synthesize?q= at http://localhost:3741/ when run with bun index.ts), which writes a grounded answer with inline [n] citations back to source notes.

Ranking caveats (state these when results look off)

  • Index before the first search. No index → empty/garbage results; run index-notes.
  • Auto re-index: each search does ~1ms change detection and kicks ONE background incremental index if notes changed — search returns immediately from the current index and catches up when the job lands. If a just-edited note is missing, it's the catch-up lag; re-run the search.
  • Score: score = RRF(vector, BM25) × title_boost × recency_factor.
  • Temporal queries (recent, latest, today) auto-shift to a 1-day recency half-life at 70% weight; normal queries keep relevance primary (90-day half-life, 10%).
  • Synthesis is the only cloud-capable part. It needs an LLM: local via LM Studio / Ollama (SYNTH_BASE_URL=http://localhost:1234/v1 SYNTH_MODEL=<model> OPENAI_API_KEY=local, notes stay on-device) or real OpenAI (funded OPENAI_API_KEY, defaults to gpt-4o-mini). Everything else — embeddings, search, BM25, clustering, bridges, entities — is on-device.

Limitations

  • macOS and Apple Notes only; it does not search Obsidian, Notion, Google Docs, or other note stores.
  • The MCP server needs local filesystem permissions to read Apple Notes data, so setup cannot be completed purely inside a remote shell.
  • Search quality depends on a fresh local index. Recently edited notes may require check-changes, index-health, or a rerun after background indexing catches up.
  • Entity tools require the optional layered graph database; without it, use hybrid search, exact search, related notes, or bridges instead.

Credits

Fork of RafalWilinski/mcp-apple-notes; this fork reads SQLite + protobuf directly and adds bridges, entities, feed, and synthesis. Authored by Conner K Ward. License MIT.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

007

무료

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

AI-powered presentation generation via the 2slides API — create slides from text, match a reference image style, summarize documents into decks, add AI voice narration, and export pages/audio. Use for any "make slides", "create a deck", or "slides from this document" request.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phoroth/AGENTIC32026년 8월 8일 업데이트

phoroth의 스킬 모두 보기

이 스킬의 문제 신고