Skip to main content
Glama

Drop ClipLens into any agent — Claude Code, Kiro, Copilot, Gemini, Cursor, your own — and it can read and write the system clipboard in the native formats real apps use: generate a Slack message with real bold/links, a Mural sticky note, an Outlook-ready HTML email, or read back what you copied from Figma/Mural or a console — with no API keys, no OAuth, no marketplace approval. It's provider-agnostic (an MCP server

  • a plain SKILL.md) and it just works. Just:

generate → clipboard → paste.

Most integrations die on auth, rate limits, and approval queues. The clipboard doesn't. Every app already speaks it. ClipLens turns that into a universal adapter layer.

Drive it in plain English

No flags to memorize. ClipLens ships as a provider-agnostic agent skill (SKILL.md) — drop it into any agent (Claude Code, Kiro, Copilot, Gemini, Cursor…) and just say what you want:

"paste this as a Slack message" · "read the Mural I just copied" · "put this table on my clipboard for Outlook" · "clean up this console dump"

Your agent picks the right lens or pen, writes the native format, and tells you to hit Ctrl+V. A tiny background clip daemon flashes a popup so you see it land. Prefer the CLI? That works too.


Related MCP server: Fimake

The idea: Lenses & Pens

Direction

What it does

Lens

READ

Decodes a clipboard payload (Mural mly://, Figma, Slack Quill Delta, console dumps) into clean, structured, token-friendly data.

Pen

WRITE

Encodes structured input into a real app's clipboard format (Slack rich text, Outlook HTML, Mural widgets, images).

You paste. The app thinks a human did it.

copy / paste
   │
ClipLens  ──►  Lens (read)  ──►  structured data for your agent
          ◄──  Pen  (write) ◄──  your agent's content
   │
native clipboard format  ──►  Ctrl+V into Slack / Mural / Outlook / …

Proven adapters

App

Lens(read)

Pen(write)

Format & notes

Slack

☐

✅

Quill Delta in a Chromium custom-MIME blob — bold / italic / lists / links / code

Mural

✅

✅

mly:// base64 JSON in HTML clipboard — native stickies & diagrams

Figma

✅

☐

selection metadata

Outlook / Teams / Docs

☐

✅

HTML-Format clipboard

DevTools console

✅

☐

plain text — 99%+ noise reduction

Install

git clone https://github.com/TheJesper/cliplens
cd cliplens

# One command — installs deps, links the global CLI, and wires ClipLens into
# EVERY AI client it detects (Claude Code, Claude Desktop, Gemini, Codex,
# Cursor, Windsurf, VS Code Copilot, Kiro). Re-run after every `git pull`.
./install.sh          # macOS / Linux
.\install.ps1         # Windows (PowerShell)

Prefer to do it by hand, or only wire some clients?

npm install && npm link              # global CLI aliases only
node tools/install.mjs --list        # show detected AI clients
node tools/install.mjs               # wire them all (MCP + skill)
node tools/install.mjs --only claude-code,gemini,codex
node tools/install.mjs --dry-run     # preview, write nothing

The installer merges into each client's own config format (JSON mcpServers / servers, or Codex TOML [mcp_servers]) and drops a SKILL.md where the client looks for one. It backs up every file it touches and never removes other servers.

CLI

Command

What

cliplens capture / inspect / diff

Capture & explore raw clipboard formats

cliplens text / cliplens write "…"

Read clipboard plaintext / write plaintext to it (UTF-8, pipe-friendly)

clipit

Markdown → Slack rich text on the clipboard

clipmail

Markdown → HTML (Outlook / Teams / Docs)

clipconsole

Read a pasted DevTools console dump, strip the noise (keep CORS / HTTP / net::ERR_)

clipmural

Write native Mural stickies / diagrams

reclip

Re-put the LAST clip on the clipboard, exactly (no regeneration). Needs cache ON.

💡 Give your agent DevTools eyes. In Chrome, right-click inside the console → Copy console, then run clipconsole (or the cliplens_analyze tool). ClipLens strips 99%+ of the noise — keeping the signal (CORS, HTTP statuses, net::ERR_, failed requests) — so your agent reads only what matters. No screenshots, no copy-paste-scroll.

MCP server (agents)

ClipLens ships an MCP server so agents (Claude Code, Kiro, …) can read/write the clipboard as tools.

{
  "mcpServers": {
    "cliplens": { "command": "node", "args": ["<path-to>/cliplens/src/mcp-server.js"] }
  }
}

Tools: cliplens_analyze · _text · _capture · _formats · _inspect · _save_image · _write_slack · _write_plaintext · _lens. Generated text runs through humanize() (strips em-dashes, curly quotes, zero-width spaces, BOM — the tells that a machine wrote it).

Clip daemon &amp; popup

cliplens-daemon (in cliplens-toast/, cross-platform Rust via wry) is an optional lightweight background service that makes the clipboard visible:

  • Popup toast — when a clip is written, a warm rounded overlay flashes with a per-type pixel-perfect icon (Slack / Mural / Image / Prompt / clipboard), the clip type as a chip (Slack · Mural · Image · Prompt · Normal…) and the sender (which agent made it) as a badge — so you get confirmation without switching windows. Click the card to dismiss it; otherwise it fades on its own, and multiple clips stack.

  • Clip-history picker — a configurable global hotkey (default Shift+Alt+V, cross-platform, macOS + Windows) opens the last N clips to re-paste any of them.

One binary, one identical design on Windows/macOS/Linux (HTML/CSS in the webview — no per-OS fallback). Fire one manually:

cliplens-daemon --notify --title "ClipLens" --subtitle "Ctrl+V" --type Slack --agent my-agent --kind clip
cliplens-daemon --watch      # run persistently (enables the history picker)

Install: download a prebuilt binary from Releases (built by CI for every OS — no Rust needed), or build once with cargo build --release in cliplens-toast/. If the daemon isn't present, writes still work and a plain native OS toast fires instead.

Private adapters (keep company stuff out of the public repo)

ClipLens ships only generic, public lenses &amp; pens. Anything org-specific — an internal tool's format, a proprietary board, a company log filter — goes in gitignored folders so it can never leak upstream:

private-lenses/   ← your read adapters   (gitignored)
private-pens/     ← your write adapters  (gitignored)

Drop a .js file exporting the lens/pen shape (see examples/); it's auto-discovered by src/private.js. Nothing in those folders is ever committed. Fork the core freely; keep your adapters private.

Platform

Plaintext read/write works everywhere; rich native formats are Windows-first.

Capability

Windows

macOS

Linux

Install + wire AI clients

✅

✅

✅

Plaintext read / write (cliplens text / write, _write_plaintext)

✅

✅ pbcopy/pbpaste

✅ wl-clipboard / xclip / xsel

Clip daemon toast (Rust)

✅

✅

✅

Rich native formats (Slack / Mural / Outlook-HTML / all-format capture)

✅

☐

☐

On Linux, install a clipboard tool so read/write works: sudo apt install wl-clipboard (Wayland) or xclip / xsel (X11). macOS needs nothing extra.

Developed on Kiro; works with Claude Code, Gemini, Codex and any MCP agent. The rich-format pens/lenses still lean on the .NET clipboard API — a macOS/Linux port of those (via osascript / native clipboard formats) would be a hugely welcome PR. 🙏

Roadmap — being worked on as we speak

  • macOS / Linux clipboard shims (the daemon is built cross-platform; the Node clipboard bridge needs porting)

  • More lenses &amp; pens (Notion, Miro, Confluence, Jira…)

  • Multiclip ring buffer — recall the last 10 clips by timestamp

Contributing

You can fork — but I'd genuinely rather build this with you. Open an issue or a PR and I'll happily review it. See CONTRIBUTING.md. This is open source (MIT) and meant to stay that way.

License &amp; credits

MIT © Jesper Wilfing

Icons: FatCow Farm-Fresh Web Icons — licensed under CC BY 3.0.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to read and write a user's Figma file through the Figma Plugin API, offline and privately, without API tokens or rate limits.
    257 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to read, create, edit, and organize Figma documents directly through a local plugin bridge, without needing a Figma AI subscription.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to write AI-generated designs into design-tool canvases (MasterGo, Penpot) as native editable layers, and to read canvas selections back out as HTML + Tailwind, design tokens, and SVG assets. Runs locally with progressive tool disclosure and structurally truncated results so large design files stay within an agent's context budget.
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to create, validate, and manage agent-powered workflows across team tools, with tools for inspecting schemas, configuring triggers, and reviewing runs and logs. It provides authorized remote access through OAuth without local installation or shared API keys.
    1
    MIT