
Clipboard History MCP
Captures every clipboard event into SQLite with FTS5 search, auto-classifies content (URL, JSON, code, SQL, secret), and encrypts anything matching 252 gitleaks patterns behind Touch ID. Ships as a single Rust binary that runs as a launchd daemon at roughly 1 milliwatt idle. Exposes 15 MCP tools so Claude can search your clipboard history by content or source app, restore old clips, unlock encrypted secrets with a reason string, and pin frequently reused snippets outside the ring buffer. Optionally mirrors non-secret clips into Obsidian as markdown with frontmatter and daily-note timeline entries. Works on macOS and Linux (X11 for window titles, Secret Service for key storage). Install is a drag-and-drop mcpb file or three cargo commands.
- GitHub stars
- 19
- tools
- 15
- transport
- STDIO
- env vars
- 6
- last updated
- May 6, 2026
Tools
15 toolsPublic tool metadata for what this MCP can expose to an agent.
list_historyPaginated history, newest first. `pinned_only=true` returns only pinned clips.
Paginated history, newest first. `pinned_only=true` returns only pinned clips.
No parameter schema in public metadata yet.
get_itemSingle clip by id
Single clip by id
No parameter schema in public metadata yet.
search_historyFTS5 BM25 across preview + window title
FTS5 BM25 across preview + window title
No parameter schema in public metadata yet.
get_urlsURL clips, deduped by hostname
URL clips, deduped by hostname
No parameter schema in public metadata yet.
get_codeCode clips, optional language filter
Code clips, optional language filter
No parameter schema in public metadata yet.
get_jsonJSON clips with parsed structure
JSON clips with parsed structure
No parameter schema in public metadata yet.
get_secrets_indexSecret metadata — no values
Secret metadata — no values
No parameter schema in public metadata yet.
unlock_secretDecrypt one secret — gated by Touch ID
Decrypt one secret — gated by Touch ID
No parameter schema in public metadata yet.
get_statsCounts by kind, oldest/newest, db size
Counts by kind, oldest/newest, db size
No parameter schema in public metadata yet.
daemon_statusPID, running state
PID, running state
No parameter schema in public metadata yet.
copy_itemRestore a clip back to system clipboard
Restore a clip back to system clipboard
No parameter schema in public metadata yet.
pin_itemPin so it survives clear_history
Pin so it survives clear_history
No parameter schema in public metadata yet.
tag_itemFree-form tagging
Free-form tagging
No parameter schema in public metadata yet.
delete_itemHard delete
Hard delete
No parameter schema in public metadata yet.
clear_history'all' | 'older_than_days:N' | 'kind:K'
'all' | 'older_than_days:N' | 'kind:K'
No parameter schema in public metadata yet.
Sponsors
Configuration
CLIPBOARD_VAULT_PATHAuto-mirror non-secret clips to this Obsidian vault directory. Sidecar `.md` per clip + bullet in `daily/YYYY-MM-DD.md`. Secrets are never mirrored.
CLIPBOARD_CAPTURE_WINDOW_TITLESet to '1' to capture the active window title alongside each clip (needs Accessibility permission on macOS, X11 only on Linux).
CLIPBOARD_IGNORE_APPSComma-separated app display names to skip (e.g. '1Password,Bitwarden,KeePassXC').
CLIPBOARD_NEVER_STORE_SECRETSSet to '1' for paranoid mode — secrets are detected and metadata-logged but ciphertext is never stored.
CLIPBOARD_HISTORY_MAXMaximum number of clips kept in the ring buffer. Defaults to 1000.
CLIPBOARD_POLL_MSWatcher poll interval in milliseconds. Defaults to 1500.
Readme
clipboard-history-mcp
Your clipboard, but Claude can read it. Type-classified, secret-encrypted, macOS-native.
Power-draw comparison: a small green Daemon (idle ~1 mW solid, burst ~30 mW dashed) shares a bottom baseline and a vertical edge with a much larger red Chrome tab (Google Doc — idle ~100 mW solid, burst ~500 mW dashed). Square area is proportional to power.
flowchart LR
U[You ⌘C something] --> D[Rust daemon<br/>launchd-managed]
D -->|classify + encrypt| DB[(SQLite + FTS5)]
D -. non-secret clips .-> O[Obsidian vault<br/>optional]
C[Claude] -->|MCP stdio| M[15 tools]
M --> DB
M -->|Touch ID| V[Vault<br/>AES-256-GCM]
One Rust binary. No Node.js, no Swift toolchain, no other apps to install. Drag a .mcpb into Claude Desktop, done.
One process · ~1 mW idle · ~24 MB RAM. Replaces the clipboard-manager + secret-scanner + Obsidian-export stack a typical setup needs three or four background apps to assemble.
Demo: copy a URL, a JSON snippet, code, an OpenAI key — daemon classifies each, then Claude lists them in chat and unlocks the secret behind Touch ID.
Details
- Repository
- github.com/d-khomenko/clipboard-history-mcp
- Package
https://github.com/d-khomenko/clipboard-history-mcp/releases/download/v0.5.0-alpha.0/clipboard-history-mcp.mcpb- Transport
- STDIO
- Registry
- MCP registry, active