Clippy について
Clippy は macOS 向けのコマンドラインツールで、ファイルを GUI アプリに貼り付け可能な参照としてクリップボードにコピーし、Markdown をリッチなメールや Slack メッセージに変換します。ターミナル中心に作業するユーザー向けで、AI アシスタント用の MCP サーバーも内蔵しています。
主な機能
- 01ファイルを参照形式でクリップボードにコピー
- 02最近のダウンロードのコピーや Spotlight によるファイル検索
- 03パイプの出力をファイルとしてコピー
- 04Markdown からリッチメールへの変換(md2rich)
- 05Markdown からSlack ネイティブメッセージへの変換(md2slack)
- 06クリップボードとバッファのツールを提供する MCP サーバー
活用シーン
- 01ターミナルからファイルをコピーして Slack やメールに貼り付け
- 02AI アシスタントが作成したメール下書きを書式を保って Gmail にコピー
- 03Markdown のメモを書式付きの 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
```
フェンス内のインデントは保持されます。コードブロックを作成するためにインデントを付ける必要はありません。編集時は、既存の列の余白を維持してください。入力には Slack の mrkdwn 構文ではなく、CommonMark/GFM 構文(**bold**、~~strikethrough~~)を使用します。
copy_slack MCP ツールは、formatting のカウントと warnings を返します。フェンス付きテーブルが 1 つあるメッセージでは 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 - 最近ダウンロードしたファイルを一覧表示します
エージェントバッファーツール
- buffer_copy - ファイルのバイト列を(任意の行範囲で)エージェント専用バッファーにコピーします
- buffer_cut - ファイルの行をバッファーに切り取ります(コピーして元のファイルから削除します)
- buffer_paste - 追記/挿入/置換モードで、バイト列をファイルに貼り付けます
- buffer_list - バッファーのメタデータ(行数、元のファイル、範囲)を表示します
バッファーツールを使う理由 LLM の「記憶して再出力する」問題を解決します。MCP サーバーがファイルのバイト列を直接読み書きするため、エージェントはコピーしたコンテンツのためにトークンを生成する必要がありません。システムのクリップボードに触れることなく、バイト単位の正確さを保ったまま、(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 と一緒に自動でインストールされることはありません。
機能
主な機能
- ドラッグ&ドロップブリッジ - クリップボード内のファイルをウェブブラウザー、Slack、その他のアプリにドラッグできるようにします
- 最近のダウンロードビューアー - クリック1回でクリップボードと最近のダウンロードを切り替えます
- ファイルのサムネイル - ファイル一覧に画像や 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()
機能
- スマート検出:ファイル参照としてコピーするか、テキストコンテンツとしてコピーするかを自動的に判定します
- 複数ファイル:複数のファイルを1回の操作でコピーします
- リーダーのサポート:任意の io.Reader から、形式を自動検出してコピーします
- クリップボードへのアクセス:現在のクリップボードの内容(テキストまたはファイルパス)を読み取ります
- クロスプラットフォーム対応の型:標準の Go 型を使用し、プラットフォーム固有のクリップボード処理を内部で行います
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。