d-khomenko avatar

Clipboard History MCP

d-khomenko/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 tools

Public 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_PATH

Auto-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_TITLE

Set to '1' to capture the active window title alongside each clip (needs Accessibility permission on macOS, X11 only on Linux).

CLIPBOARD_IGNORE_APPS

Comma-separated app display names to skip (e.g. '1Password,Bitwarden,KeePassXC').

CLIPBOARD_NEVER_STORE_SECRETS

Set to '1' for paranoid mode — secrets are detected and metadata-logged but ciphertext is never stored.

CLIPBOARD_HISTORY_MAX

Maximum number of clips kept in the ring buffer. Defaults to 1000.

CLIPBOARD_POLL_MS

Watcher 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.



View the full README on GitHub

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