cliplens
Reads Figma selection metadata from the clipboard, providing structured data about copied design elements to the agent.
Reads and writes Mural's native clipboard format (mly:// base64 JSON), enabling creation of Mural stickies and diagrams via clipboard paste.
Writes clipboard content in Slack's native rich text format (Quill Delta), allowing pasted messages to include bold, italic, lists, links, and code as if typed by a human.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cliplensread the Slack message I just copied and summarize it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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: clippy
The idea: Lenses & Pens
Direction | What it does | |
Lens | READ | Decodes a clipboard payload (Mural |
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 | ✅ | ✅ |
|
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 nothingThe 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 |
| Capture & explore raw clipboard formats |
| Read clipboard plaintext / write plaintext to it (UTF-8, pipe-friendly) |
| Markdown → Slack rich text on the clipboard |
| Markdown → HTML (Outlook / Teams / Docs) |
| Read a pasted DevTools console dump, strip the noise (keep CORS / HTTP / |
| Write native Mural stickies / diagrams |
| Replay clipboard history |
💡 Give your agent DevTools eyes. In Chrome, right-click inside the console → Copy console, then run
clipconsole(or thecliplens_analyzetool). 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 & 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 & 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 ( | ✅ | ✅ | ✅ |
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 & 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 & credits
MIT © Jesper Wilfing
Icons: FatCow Farm-Fresh Web Icons — licensed under CC BY 3.0.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- SkilderOAuthai.skilder
One place to build, share, and govern the skills and tools your AI agents use at work.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants access to the macOS clipboard content, supporting text, images, and binary data via OSAScript.8MIT
- AlicenseNot gradedqualityAmaintenanceGives AI assistants direct access to macOS clipboard - letting Claude copy generated code, text, or files straight to your clipboard for pasting anywhere on Mac.247MIT
- FlicenseAqualityDmaintenanceIntegrates CopyQ clipboard manager with LLM agents, enabling reading, writing, searching, and managing clipboard items organized in tabs with tags and notes through a unified interface.31-
- FlicenseNot gradedqualityCmaintenanceEnables AI coding agents like Claude to read Windows clipboard contents (text and images) from within WSL environments, providing seamless cross-platform clipboard access through the Model Context Protocol.5-