关于 Clippy
Clippy 是面向 macOS 的命令行工具,可将文件以可粘贴的引用形式复制到剪贴板,并可将 Markdown 渲染为富文本邮件或 Slack 消息。它面向习惯在终端中工作的用户,并内置 MCP 服务供 AI 助手调用。
主要功能
- 01以文件引用形式复制到剪贴板
- 02复制最近下载的文件或通过 Spotlight 查找文件
- 03管道数据转为文件
- 04Markdown 转富文本邮件(md2rich)
- 05Markdown 转 Slack 格式消息(md2slack)
- 06内置 MCP 服务,提供剪贴板与缓冲区工具
适用场景
- 01在终端中复制文件并粘贴到 Slack 或邮件
- 02将 AI 助手生成的邮件草稿复制到 Gmail
- 03将 Markdown 内容转换为带格式的 Slack 消息
MCP 相关
Clippy 内置 MCP 服务(clippy mcp-server),向 MCP 客户端暴露 clipboard_copy、copy_email、clipboard_paste、get_recent_downloads 以及用于文件字节操作的 buffer_* 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Clippy 📎
在终端中复制文件,让它们能直接粘贴到 GUI 应用中。无需再切换到 Finder。
仅限 macOS — 专为 Mac 剪贴板系统打造。
为什么选择 Clippy?
pbcopy 复制的是文件 内容,但 GUI 应用需要的是文件 引用。当你执行 pbcopy < image.png 时,无法将其粘贴到 Slack 或电子邮件中——这些应用需要的是文件,而不是原始字节。
Clippy 通过检测你的需求并使用正确的剪贴板格式,弥合了这一差距:
# Copy files as references (paste into any GUI app)
clippy report.pdf # ⌘V into Slack/email - uploads the file
clippy *.jpg # Multiple files at once
# Pipe data as files
curl -sL https://picsum.photos/300 | clippy # Download → clipboard as file
# Copy your most recent download (immediate)
clippy -r # Grabs the file you just downloaded
clippy -r 3 # Copy 3 most recent downloads
# Interactive picker for recent files
clippy -i # Choose from list of recent downloads
clippy -i 5m # Show picker for last 5 minutes only
留在终端中。复制任何内容。随处粘贴。
安装:
brew install clippy
终端优先的剪贴板套件:Clippy 可将文件复制到剪贴板,并为 AI 助手提供 MCP 服务;Pasty 可智能粘贴;Draggy(可选 GUI)可衔接拖放工作流。你也可以将其用作 Go 库,进行自定义集成。所有功能都旨在减少你从终端切换到其他应用的次数。
核心功能
1. 智能文件复制
clippy document.pdf # Copies as file reference (paste into any app)
clippy notes.txt # Also copies as file reference
clippy -t notes.txt # Use -t flag to copy text content instead
clippy *.jpg # Multiple files at once
2. 最近下载
# Immediate copy (no UI)
clippy -r # Copy your most recent download
clippy -r 3 # Copy 3 most recent downloads
clippy -r 5m # Copy all downloads from last 5 minutes
# Interactive picker
clippy -i # Choose from list of recent downloads
clippy -i 3 # Show picker with 3 most recent files
clippy -i 5m # Show picker for last 5 minutes only
# Copy and paste in one step
clippy -r --paste # Copy most recent and paste here
clippy -i --paste # Pick file, copy it, and paste here
3. 使用 Spotlight 查找文件
clippy -f invoice # Search for files matching "invoice"
clippy -f screenshot # Find screenshots
clippy -f .pdf # Find all PDF files (by extension)
clippy -f report.xlsx # Find specific file "report.xlsx"
# Shows interactive picker with results
无需再切换到 Finder 搜索文件——直接在终端中查找并复制文件。
4. 将管道数据作为文件
curl -sL https://example.com/image.jpg | clippy
cat archive.tar.gz | clippy
5. 复制和粘贴一气呵成
clippy ~/Downloads/report.pdf --paste # Copy to clipboard AND paste here
clippy -r --paste # Copy recent download and paste here
clippy -i --paste # Pick file, copy it, and paste here
6. 清空剪贴板
clippy --clear # Empty the clipboard
echo -n | clippy # Also clears the clipboard
7. 内容类型检测
还有一个贴心功能:clippy 会自动检测内容类型(JSON、HTML、XML),让接收应用能正确处理——这是 pbcopy 做不到的。因此,当你粘贴到支持富内容的应用时,它们会正确处理内容——JSON 查看器会进行语法高亮,HTML 会渲染,等等。
echo '{"key": "value"}' | clippy # Recognized as JSON
clippy -t page.html # Recognized as HTML
clippy -t file.txt --mime application/json # Manual override when needed
8. 适用于 Gmail 的 Markdown 邮件
复制 Markdown,将其渲染为富文本邮件内容,然后像往常一样粘贴到 Gmail、 Mimestream、Mail 或其他富文本编辑器中:
clippy md2rich draft.md # from a file
cat draft.md | clippy md2rich # from a pipe
clippy md2rich # render the clipboard in place
剪贴板会同时携带 HTML、RTF 和纯文本格式。富文本编辑器会保留有意设置的段落间距、强调样式、链接、列表、行内代码和 Mimestream 风格的围栏代码块;纯文本目标仍会收到易于阅读的备用内容。
9. 原生 Slack 消息
编写 Markdown,然后粘贴到任意 Slack 编辑框,即可获得真正的格式 — 而不是字面上的星号:
clippy md2slack notes.md # from a file
cat notes.md | clippy md2slack # from a pipe
clippy md2slack # render the clipboard in place
Slack 的编辑框会将消息存储为 Quill Delta 文档,并在你从中复制内容时将同一文档放入剪贴板。md2slack 会生成完全相同的格式,因此普通的 Command-V 就能呈现粗体、斜体、删除线、行内代码、代码块、引用块、标题、链接以及项目符号列表或编号列表(包括嵌套列表)——效果就像直接在 Slack 中输入消息一样。
Slack 不支持表格、图片或水平分隔线,因此表格会变成未对齐的文本行,图片会变成链接,分隔线会变成分隔线文本。无法识别 Slack 格式的内容会显示为纯文本。
要让列对齐,请在围栏代码块中使用以空格填充的文本。将两个围栏各自放在单独一行,并在各行之间使用实际换行:
Current values:
```
name value
alpha 10
beta 20
```
围栏内的缩进会保留;创建代码块并不依赖缩进。编辑时请保留现有的列间距。输入使用 CommonMark/GFM 语法(**bold**、~~strikethrough~~),而非 Slack 的 mrkdwn 语法。
copy_slack MCP 工具会返回 formatting 计数和 warnings。对于包含一个围栏表格的消息,请设置 expected_code_blocks: 1:如果计数不匹配,会在更改剪贴板前返回错误。preview: true 会报告相同的计数和警告,但不会复制内容。clippy --verbose md2slack 也会报告计数,并且 CLI 始终会打印格式警告。
这些计数描述的是生成的格式,并不代表已验证 Slack 中的粘贴效果。请使用普通的 Command-V。纯文本剪贴板读取会省略格式和围栏标记,因此无法验证代码块。如果计数正确但粘贴效果不对,请检查剪贴板/粘贴路径,再考虑修改 Markdown。MCP 工具和 CLI 使用相同的渲染器。
10. 实用标志
clippy -v file.txt # Show what happened
clippy --debug file.txt # Technical details for debugging
为什么叫“Clippy”?
因为它是一位贴心的剪贴板助手,懂你想做什么!📎
MCP 服务
Clippy 内置了 MCP(Model Context Protocol)服务,可让 AI 助手将生成的内容直接复制到你的剪贴板。
让 Claude 生成任意文本——代码、电子邮件、文档——然后就能立即粘贴到任何地方:
- “编写一个用于处理 CSV 文件的 Python 脚本,并复制到我的剪贴板”
- “起草一封关于会议的电子邮件,并放到我的剪贴板上”
- “生成那个正则表达式并复制它,这样我就能粘贴到编辑器里”
不必再从聊天界面手动选择和复制内容。
对于电子邮件草稿,系统会向模型提供专用的 copy_email 工具。
请优先使用明确的 salutation、body_markdown 和 signoff 字段,以便保留电子邮件结构,而无需猜测不同语言的问候语。
完整正文的 markdown 字段仍可用于兼容。该工具只会复制草稿;不会填写收件人或发送邮件。
设置
Claude Code:
# Install for all your projects (recommended)
claude mcp add --scope user clippy $(which clippy) mcp-server
# Or for current project only
claude mcp add clippy $(which clippy) mcp-server
注意:$(which clippy) 会查找系统上的 clippy 二进制文件。在 Apple Silicon Mac 上通常是 /opt/homebrew/bin/clippy,在 Intel Mac 上通常是 /usr/local/bin/clippy。
Claude Desktop:
添加到你的配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"clippy": {
"command": "clippy",
"args": ["mcp-server"]
}
}
}
元数据覆盖(可选)
你可以自定义 MCP 工具/提示词/示例的描述,而不改变其行为:
clippy mcp-server \
--tools /path/to/tools.json \
--prompts /path/to/prompts.json \
--examples /path/to/examples.json
默认情况下,覆盖文件可以只包含部分内容。添加 --strict-metadata,即可要求覆盖所有工具、提示词和参数。
可用工具
系统剪贴板工具
- clipboard_copy - 将文本或文件复制到系统剪贴板
- copy_email - 将结构化电子邮件草稿复制为适用于 Gmail 的富文本(绝不会发送)
- clipboard_paste - 将剪贴板内容粘贴到文件/目录
- get_recent_downloads - 列出最近下载的文件
Agent 缓冲区工具
- buffer_copy - 将文件字节(可选指定行范围)复制到 Agent 的专属缓冲区
- buffer_cut - 将文件中的行剪切到缓冲区(从源文件复制并删除)
- buffer_paste - 以追加/插入/替换模式将字节粘贴到文件
- buffer_list - 显示缓冲区元数据(行数、源文件、范围)
为什么需要缓冲区工具? 它解决了大模型“记住并重新输出”的问题。MCP 服务直接读取/写入文件字节,Agent 无需为复制的内容生成令牌。它支持精准重构(复制第 17–32 行,再粘贴以替换第 5–8 行),确保逐字节准确,而且不会触碰系统剪贴板。
Pasty - 智能剪贴板粘贴
在 Finder 中复制文件,然后在终端按 ⌘V,得到的只是文件名文本。Pasty 会直接将文件复制到当前目录。
核心用例
1. 在 Finder 中复制文件 → 在终端粘贴实际文件
# 1. Copy any file in Finder (⌘C)
# 2. Switch to terminal and run:
pasty
# File gets copied to your current directory (not just the filename!)
2. 智能处理文本文件
# Copy a text file in Finder (⌘C), then:
pasty # Outputs the file's text content to stdout
pasty notes.txt # Saves the file's text content to notes.txt
3. 保存浏览器中的图片
# Right-click "Copy Image" in any browser, then:
pasty photo.png # Saves the image (auto-converts TIFF to PNG)
pasty --preserve-format # Keep original format if needed
它还支持包含嵌入图片的富文本(来自 TextEdit/Notes 的 .rtfd 包)。
4. 调试和提取纯文本
pasty --inspect # Show clipboard types + paste priority (metadata only)
pasty --plain notes.txt # Force plain text, strip all formatting
pasty -f existing.txt # Overwrite existing files instead of creating duplicates
默认情况下,如果文件已存在,pasty 会采用 Finder 风格的重复文件命名方式。
Draggy - 可视化剪贴板助手
Draggy 是一款菜单栏应用,为剪贴板工作流带来可视化功能。clippy 负责从终端复制内容,而 Draggy 则提供可视化界面,可将文件拖到应用中,并查看最近下载的文件。
重要: Draggy 是独立的可选工具,不会随 clippy 自动安装。
功能
核心功能
- 拖放桥接 - 让剪贴板中的文件可拖动到 Web 浏览器、Slack 和其他应用中
- 最近下载查看器 - 单击即可在剪贴板和最近下载之间切换
- 文件缩略图 - 直接在文件列表中预览图片和 PDF
- 快速预览 - 悬停时按住 ⌥ Option,可查看更大的预览
- 零后台活动 - 不会轮询或耗费电量,仅在需要时激活
用户体验
- 双击打开 - 无需离开菜单即可快速访问文件
- 键盘快捷键 - 按 ESC 关闭,按 Space 刷新
设计理念
- 不是剪贴板管理器 - 没有历史记录、数据库,也不复杂
- 终端优先的工作流 - 旨在配合终端使用,而非取而代之
- 简约但完整 - 每项功能都服务于特定的工作流需求
安装
# Separate brew install (not included with clippy)
brew install --cask neilberkman/clippy/draggy
⚠️ 首次启动: 由于 Draggy 未经过代码签名,macOS 可能会显示安全警告。如果看到“Draggy 已损坏,无法打开”:
- Homebrew cask 会在安装时自动移除隔离标记
- 如果警告仍然出现,请运行:
xattr -dr com.apple.quarantine /Applications/Draggy.app - 或者右键点击 Draggy.app 并选择“打开”,以绕过 Gatekeeper
使用方法
# Copy files in terminal:
clippy ~/Downloads/*.pdf # Copy PDFs with clippy
curl -sL image.jpg | clippy # Pipe downloads to clipboard
clippy -r # Copy most recent download
# Use Draggy GUI:
# 1. Click Draggy icon in menu bar
# 2. Drag files to browser upload fields, Slack, etc.
# 3. Toggle to Recent Downloads view with clock icon
# 4. Hold ⌥ Option to preview files
# 5. Double-click to open files
工作流示例
将屏幕截图上传到 GitHub:
# Take screenshot (macOS saves to Desktop)
# In terminal: clippy ~/Desktop/Screenshot*.png
# In Draggy: Drag to GitHub comment box
快速分享文件:
# Terminal: clippy ~/Downloads/report.pdf
# Draggy: Shows thumbnail, drag to Slack or email
最近下载工作流:
# Download file in browser
# Click Draggy → Click clock icon → See your download
# Drag where needed or double-click to open
理念
Draggy 有意不做剪贴板管理器。没有历史记录、搜索或数据库。它是终端剪贴板工作流与 GUI 应用之间的可视化桥梁。对于偶尔需要查看剪贴板内容或将文件拖到其他位置,然后继续工作的终端用户来说,它恰到好处。
从源代码构建
# Clone and build
git clone https://github.com/neilberkman/clippy.git
cd clippy
go build -o clippy ./cmd/clippy
go build -o pasty ./cmd/pasty
sudo mv clippy pasty /usr/local/bin/
# Or use go install
go install github.com/neilberkman/clippy/cmd/clippy@latest
go install github.com/neilberkman/clippy/cmd/pasty@latest
库
Clippy 可作为 Go 库用于你自己的应用程序:
go get github.com/neilberkman/clippy
高级 API
import "github.com/neilberkman/clippy"
// Smart copy - automatically detects text vs binary files
err := clippy.Copy("document.pdf")
// Copy multiple files as references
err := clippy.CopyMultiple([]string{"image1.jpg", "image2.png"})
// Copy text content
err := clippy.CopyText("Hello, World!")
// Copy data from reader (handles text/binary detection)
reader := strings.NewReader("Some content")
err := clippy.CopyData(reader)
// Copy from stdin
err := clippy.CopyData(os.Stdin)
// Get clipboard content
text, ok := clippy.GetText()
files := clippy.GetFiles()
功能
- 智能检测:自动判断是以文件引用还是文本内容的形式复制
- 多个文件:一次操作即可复制多个文件
- 读取器支持:从任何 io.Reader 复制,并自动检测格式
- 剪贴板访问:读取当前剪贴板内容(文本或文件路径)
- 跨平台类型:使用标准 Go 类型,并在内部处理平台特定的剪贴板操作
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。