Skip to main content
Glama

mcp-clipboard

PyPI version Python versions License CI Coverage Downloads Glama

pip downloads pipenv downloads pipx downloads uv downloads poetry downloads pdm downloads

linux downloads macos downloads windows downloads

An MCP server that gives your AI assistant direct access to your system clipboard: read what you copied, or write clean text straight to it. Works with any MCP-compatible client, including Claude Code, Claude Desktop, Cursor, Windsurf, and others.

Why This Exists

Pasting loses structure

When you copy cells from Google Sheets or Excel and paste into a chat input, the tabular structure (rows and columns) is destroyed. It arrives as a flat string with no delimiters. The model has to guess where one cell ends and the next begins, and it often guesses wrong.

mcp-clipboard preserves it. Instead of pasting, tell your assistant to "read my clipboard." The server reads the clipboard directly, detects tabular data from the HTML that spreadsheet apps put on the clipboard, and returns it as a properly formatted Markdown table, JSON, or CSV. No structure lost, no guessing.

Bonus: it also fixes copying from Claude Code

Claude Code's terminal renderer adds 2-character padding, hard line breaks at ~80 columns, and trailing whitespace to all output. When you select and copy text from the terminal, those artifacts come along for the ride:

  echo "this is a long command that wraps and
  breaks when you paste it because of the hard
  newlines and leading spaces"

This has been reported repeatedly on the claude-code repo (issues #4686, #6827, #7670, #13378, #15199, #25040, #25427, #26016) with dozens of upvotes and no fix shipped.

mcp-clipboard sidesteps the problem entirely. Instead of copying text from the terminal, ask Claude Code to put it on your clipboard:

"Copy that command to my clipboard"

Claude Code calls clipboard_copy, writes the clean text directly to your system clipboard, and you paste it wherever you need it. No padding, no hard wraps, no cleanup.

Tip: To make this automatic, add a line to your project or global CLAUDE.md:

When you produce a shell command for the user to run, also copy it to the clipboard using clipboard_copy.

Claude Code will then copy every command it suggests without you having to ask.

Bonus: read your X11/Wayland selection without Ctrl-C

Linux desktops have two clipboards: the CLIPBOARD that Ctrl-C / Ctrl-V uses, and the PRIMARY selection. PRIMARY is whatever text you currently have highlighted, pasted by middle-click. It updates as soon as you select something; you don't have to copy it.

mcp-clipboard reads PRIMARY too. Pass selection="primary" to clipboard_paste, clipboard_read_raw, or clipboard_list_formats and the server reads the selection buffer instead of the Ctrl-C clipboard. Some workflows this enables:

  • Terminal triage. An error message scrolls past, mouse-select it, ask the model what it means. Your Ctrl-C buffer stays intact for whatever you had on it.

  • vim / IDE visual selection. v-select a function, ask the model to explain it or refactor it.

  • Browser / PDF reading. Drag-select a paragraph, ask "what's this saying?" without leaving the reading flow.

  • Two-buffer workflows. Keep a snippet in CLIPBOARD (Ctrl-C) and pull a different one through PRIMARY in the same conversation.

Linux only. macOS and Windows have no equivalent buffer; passing selection="primary" on those platforms returns a clear error.

Related MCP server: Clipboard MCP

Tools

Tool

Description

clipboard_paste

Primary tool. Read any clipboard content: tables, text, code, JSON, URLs, images. Tables are formatted as Markdown/JSON/CSV; pass include_schema=true to append inferred column types. Images are returned as image content the model can see. Optional selection="primary" reads the X11/Wayland PRIMARY selection (middle-click / select-text-to-paste buffer) instead of the default Ctrl-C clipboard.

clipboard_copy

Write text content to the system clipboard. Accepts an optional mime_type parameter (text/plain by default; also text/html, text/rtf, image/svg+xml, or any text/* on Wayland/X11).

clipboard_copy_markdown

Render markdown to HTML and place both formats on the clipboard so paste targets pick the right one — Slack/Gmail/Notion/Discord get rich text; vim/terminal get the source. macOS/Windows write both atomically; Wayland/X11 are single-MIME and write only text/html.

clipboard_copy_image

Write a PNG or JPEG image to the system clipboard from base64-encoded bytes. Pass-through with no re-encoding; magic bytes are validated against the declared MIME. Use clipboard_copy for text.

clipboard_list_formats

List what MIME types are currently on the clipboard. Accepts selection="primary" for the X11/Wayland PRIMARY selection.

clipboard_read_raw

Return raw clipboard content for a given MIME type (diagnostic). Any non-binary type passes through; only image/*, audio/*, video/*, and application/octet-stream are rejected. Use clipboard_paste for images. Accepts selection="primary" for the X11/Wayland PRIMARY selection.

clipboard_version

Return the running mcp-clipboard package version as {"name": "mcp-clipboard", "version": "<x.y.z>"}. Diagnostic. Useful for hosts that don't surface the standard MCP serverInfo block to the model, and for test harnesses that need to record which build served a given run.

Setup

Step 1: Install a Python package runner

mcp-clipboard is a Python package on PyPI. Any Python tool that can install and launch console-script entry points works for running it as an MCP server. The two most common choices are pipx and uv; both appear in the install-counts badges at the top of this README and both are in active use. Pick whichever you have or prefer:

  • pipx: install instructions per platform are in the official pipx install docs. On most distros pipx is available via the system package manager (apt, dnf, pacman, brew, etc.).

  • uv: install instructions per platform are in the official uv install docs. Astral documents package-manager paths, signed standalone-binary downloads, and shell installers for each platform.

Verify your chosen runner is on PATH:

pipx --version   # if you chose pipx
uv --version     # if you chose uv

The rest of this section shows commands for both runners; substitute the one you installed.

Step 2: Install the platform clipboard tool (Linux only)

macOS and Windows have everything they need built in. Linux needs one CLI utility:

Platform

Tool

Install

Fedora / RHEL (Wayland)

wl-copy / wl-paste

sudo dnf install wl-clipboard

Ubuntu / Debian (Wayland)

wl-copy / wl-paste

sudo apt install wl-clipboard

Linux (X11)

xclip

sudo dnf install xclip or sudo apt install xclip

macOS

Built-in

No install needed (pbcopy / pbpaste)

Windows

Built-in

No install needed (PowerShell)

Platform status: Linux with Wayland is tested and actively used. Windows has been exercised end-to-end on a QEMU Windows guest (a real Windows-only encoding bug, #129, was found and fixed via that testing in v2.5.x). X11 and macOS implementations are complete but unverified beyond the unit tests. Bug reports and PRs are welcome.

Step 3: Verify mcp-clipboard works on your system

Before wiring it into a client, confirm the package installs and detects your platform correctly. With pipx:

pipx run mcp-clipboard --check

Or with uv:

uvx mcp-clipboard --check

Both forms fetch the package on demand without a permanent install (use pipx install mcp-clipboard or uv tool install mcp-clipboard first if you'd rather install it persistently). Expected output:

mcp-clipboard 2.5.1
Platform: ...
Backend: ... (detected)
OK: mcp-clipboard should work on this system.

If you see Backend: NOT AVAILABLE, follow the platform-specific hint in the error message (typically: install the Linux clipboard tool from Step 2) and re-run.

Step 4: Register the server with your MCP client

The MCP host launches mcp-clipboard via a command + args pair. Both pipx and uv expose a one-shot run subcommand that fetches and executes the package, so the most convenient configs use those forms.

Claude Code

With pipx:

claude mcp add clipboard --scope user -- pipx run mcp-clipboard

With uv:

claude mcp add clipboard --scope user -- uvx mcp-clipboard

Claude Desktop

Locate your Claude Desktop config file (paste the path into your file manager's address bar to jump straight there):

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add an entry to mcpServers using one of the forms below. With pipx:

{
  "mcpServers": {
    "clipboard": {
      "command": "pipx",
      "args": ["run", "mcp-clipboard"]
    }
  }
}

Or with uv:

{
  "mcpServers": {
    "clipboard": {
      "command": "uvx",
      "args": ["mcp-clipboard"]
    }
  }
}

Save the file, then fully quit and relaunch Claude Desktop for the new server to load.

Windows tip: Claude Desktop caches the environment (including PATH) from the moment it launches. If pipx/uvx was installed after Claude Desktop was started, Claude Desktop will not see it until restart. If the snippet above produces "Server failed to start" or a "command not found" style error in the MCP logs, right-click the Claude Desktop tray icon, choose Quit, then reopen Claude Desktop. A taskbar-X close just hides the window; the cached environment is still there.

Other MCP clients

Any client that supports MCP stdio servers can use mcp-clipboard. Common one-shot forms are pipx run mcp-clipboard and uvx mcp-clipboard; if you've installed mcp-clipboard persistently (pipx install mcp-clipboard or uv tool install mcp-clipboard), the resulting mcp-clipboard binary on PATH also works as the command. Consult your client's documentation for how to register MCP servers.

Step 5: Confirm it works end-to-end

In your client, ask:

What's on my clipboard?

The client should call clipboard_paste and return the content. If you copied a spreadsheet selection or a URL beforehand, you'll see it formatted appropriately.

If nothing happens or you get a tool error, re-run --check (whichever runner you used in Step 3) to confirm the package install is healthy, then check your client's MCP server logs (each MCP host exposes them differently; consult your client's documentation).

Upgrading

A persistent install never updates itself, and uvx mcp-clipboard runs the uv tool installed copy when one exists instead of fetching a newer release. Upgrade it explicitly:

uv tool upgrade mcp-clipboard   # if you used uv tool install
pipx upgrade mcp-clipboard      # if you used pipx install

The one-shot runners can also reuse a cached copy. uvx mcp-clipboard@latest and pipx run --no-cache mcp-clipboard force a fresh check. Run --version to confirm which version you have, then restart your MCP client so it launches the new one.

Installing from source

If you prefer a local clone instead of installing from PyPI:

git clone https://github.com/cmeans/mcp-clipboard.git
cd mcp-clipboard
uv sync

Then point your client at the local install:

{
  "mcpServers": {
    "clipboard": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/path/to/mcp-clipboard",
        "mcp-clipboard"
      ]
    }
  }
}

Environment variables

Environment variables can be passed via the "env" key in the config.

Variable

Platform

Purpose

Default

MCP_CLIPBOARD_DEBUG

All

Enable debug logging (1 to enable)

Off

WAYLAND_DISPLAY

Linux (Wayland)

Compositor socket name or absolute path

Auto-detected

XDG_RUNTIME_DIR

Linux (Wayland)

Directory containing the Wayland socket

/run/user/<uid>

XDG_SESSION_TYPE

Linux

Session type hint (wayland or x11)

Auto-detected via socket scan

Most Linux users won't need to set any of these. Override if auto-detection fails (multiple compositors, non-standard socket path, or containerized environments).

Usage

Reading your clipboard

Copy anything (spreadsheet cells, code, text, a URL, JSON, an image), then:

  • "Paste my clipboard"

  • "Read my clipboard"

  • "What's on my clipboard?"

  • "I copied some data, take a look"

Your assistant calls clipboard_paste and returns the content with structure preserved.

Writing to your clipboard

When your agent generates a command, code block, or any text you need to use elsewhere:

  • "Copy that to my clipboard"

  • "Put that command on my clipboard"

  • "Copy that as HTML" (writes text/html so rich-text apps paste with formatting)

The agent calls clipboard_copy and the clean text goes straight to your system clipboard. No terminal rendering artifacts, just clean text. This is especially useful with Claude Code (see above).

Tip: auto-copy behavior. By default the agent only copies to the clipboard when you ask. If you want commands and code blocks copied automatically, add this to your system prompt (e.g. in a Claude Desktop project or Claude Code's CLAUDE.md):

When you output a command or code block that the user is likely to paste elsewhere, proactively copy it to the clipboard using clipboard_copy.

Table output formats

When the clipboard contains tabular data, output_format controls the format:

Format

Destination

What you get

markdown

Claude, GitHub, most tools

GFM pipe table (default)

notion

Notion

GFM pipe table (Notion renders these natively)

slack

Slack

*bold* header + space-aligned data in a monospace code block

jira

Jira

||Header|| / |Cell| wiki markup

confluence

Confluence

same as jira (shared wiki syntax)

html

Email, web, rich-text editors

<table> with <thead>/<th>/<tbody>/<td>

json

APIs, code

Array of objects keyed by header row

csv

Excel, data tools

Comma-separated values

Examples:

  • "Read my clipboard as Slack" → output_format=slack

  • "Convert my clipboard to Jira table" → output_format=jira

  • "Give me that as HTML" → output_format=html

Table schema inference

Add include_schema=true to get a column-type summary alongside the table:

"Read my clipboard with schema"

Inferred types: integer, float, currency, percentage, date, boolean, text. Uses majority-wins per column — if no type accounts for more than half the non-empty cells, the column is typed as text. Empty cells are skipped; the header row is excluded from inference.

This is useful when handing tabular data to Claude for SQL CREATE TABLE statements, Pandas dtype mappings, or validation rules — Claude gets the types upfront instead of guessing from the data.

Tips for reliable triggering

The server includes MCP instructions that tell the client when to use the clipboard tools, but results vary by model and client. If the agent doesn't pick up on your intent, be explicit: "copy that to my clipboard" or "read what I copied" work most reliably.

If you have access to a custom system prompt (e.g. in a Claude Desktop project or a custom agent), you can reinforce the behavior:

When the user asks to copy output, use clipboard_copy to write it to the system clipboard. When the user references data not in the conversation, check the clipboard using clipboard_paste.

Content handling

Content type

What happens

Spreadsheet table

Parsed from HTML/TSV, returned in your choice of format (Markdown, JSON, CSV, Slack, Jira, HTML, Notion)

JSON

Pretty-printed in a JSON code block

Code

Returned in a fenced code block

URL

Returned cleanly as a URL

Rich HTML (no table)

HTML tags stripped, readable text returned

RTF

Returned in a fenced code block (macOS, Windows, and Wayland/X11 via pass-through)

Plain text

Returned as-is

Images (PNG, etc.)

Returned as an MCP image content block the model can see and analyze

SVG

Readable as text via clipboard_read_raw with image/svg+xml, or returned as image via clipboard_paste. Writable via clipboard_copy(mime_type="image/svg+xml") — apps that consume SVG (Inkscape, Figma, browsers) get the image. On Wayland, wl-copy automatically also advertises text/plain, so editors get the source for free. On X11 / macOS / Windows the SVG-only path is single-MIME — non-SVG-aware apps will not see any text fallback until multi-format simultaneous write lands (#109).

Audio / video

Not supported; returns a message identifying the format

How It Works

  1. Platform detection: At startup, the server detects your clipboard backend (Wayland, X11, macOS, or Windows) and selects the appropriate system commands.

  2. Reading (clipboard_paste): Calls the platform's clipboard read command. Tries text/html first (Google Sheets and Excel put <table> markup on the clipboard), parses with Python's built-in html.parser. Falls back to text/plain tab-separated values, then text/rtf, then checks for images.

  3. Writing text (clipboard_copy): Pipes text to the platform's clipboard write command (wl-copy, xclip -selection clipboard, pbcopy, or PowerShell Set-Clipboard). Supports a mime_type parameter for writing typed content (e.g. text/html, text/rtf, image/svg+xml).

  4. Writing images (clipboard_copy_image): Decodes base64 PNG or JPEG bytes and writes them to the platform's clipboard via wl-copy --type, xclip -target, NSPasteboard setData:forType: (macOS), or Clipboard::SetImage (Windows). Magic bytes are validated against the declared MIME type before any subprocess runs.

  5. Image passthrough on read: If the clipboard contains an image (PNG, etc.), it's returned as a base64-encoded MCP image content block that the model can see and analyze.

  6. Content classification: Non-tabular text content is classified as JSON, URL, code, or plain text and returned with appropriate formatting (pretty-printed JSON, fenced code blocks, etc.).

Limitations

  • Audio and video are not supported. If the clipboard contains audio or video, the server reports the format but cannot return the content.

  • Image write supports PNG and JPEG only via clipboard_copy_image. Pass-through, no re-encoding. Other binary formats (GIF, WebP, TIFF, BMP) are not yet writable. SVG rides the typed-text path via clipboard_copy(mime_type="image/svg+xml") since SVG is XML.

  • Writing multiple MIME types atomically is not supported on Wayland/X11. wl-copy and xclip carry a single MIME per invocation, so clipboard_copy_markdown writes only text/html on those platforms. On Wayland, wl-copy auto-advertises text/plain for UTF-8 content but the bytes returned are the rendered HTML markup (not the markdown source) — vim users pasting after the tool runs will see <h1>... etc. On X11, plain-text targets see an empty clipboard. For a plain-text paste of the markdown source, call clipboard_copy(markdown_source) directly. macOS and Windows do support atomic multi-format writes via NSPasteboard / DataObject.

  • Text content is truncated at 50KB to avoid overwhelming the model's context window.

  • Platform coverage is uneven. Linux with Wayland is tested and actively used. Windows has been exercised end-to-end on a QEMU Windows guest as of v2.5.x (which surfaced and resolved a Windows-only UTF-8 stdin encoding bug, #129). X11 and macOS implementations are complete and have unit tests but have not been verified beyond that. Bug reports and PRs are welcome, especially for X11 and macOS.

Development

# Install with dev dependencies
uv sync --extra dev

# Run tests
uv run pytest

# Run the server directly (stdio mode)
uv run mcp-clipboard

# Run with debug logging
uv run mcp-clipboard --debug

# Test with MCP Inspector
uv run mcp dev src/mcp_clipboard/server.py

Debug logging can also be enabled via MCP_CLIPBOARD_DEBUG=1, which is useful when the server is launched by Claude Desktop or Claude Code.

Project structure

mcp-clipboard/
├── src/mcp_clipboard/
│   ├── __init__.py          # Package version
│   ├── server.py            # MCP server, tool definitions, debug logging
│   ├── clipboard.py         # Platform-agnostic clipboard backend
│   ├── parser.py            # HTML table parser, formatters, content detection
│   ├── instructions/        # Tool and server descriptions (loaded at startup)
│   │   ├── server.md
│   │   ├── clipboard_copy.md
│   │   ├── clipboard_copy_image.md
│   │   ├── clipboard_copy_markdown.md
│   │   ├── clipboard_paste.md
│   │   ├── clipboard_read_raw.md
│   │   ├── clipboard_list_formats.md
│   │   └── clipboard_version.md
│   └── icons/               # SVG icons for MCP client display (light/dark)
│       ├── mcp-clipboard-logo-light.svg
│       └── mcp-clipboard-logo-dark.svg
├── tests/
│   ├── test_parser.py       # Parser and formatter tests
│   └── test_server.py       # Server, backend, and Wayland detection tests
├── .github/
│   ├── workflows/
│   │   ├── publish.yml      # PyPI publish on v* tags (OIDC trusted publisher)
│   │   └── test-publish.yml # TestPyPI publish on test-v* tags
│   └── ISSUE_TEMPLATE/      # Bug report, feature request, platform test forms
├── pyproject.toml
├── CHANGELOG.md
├── CLAUDE.md                # Claude Code project guidance
├── glama.json               # Glama MCP registry metadata
├── LICENSE                  # Apache 2.0
└── README.md

Acknowledgments

This project was designed and built in collaboration with Claude Code (Anthropic's CLI for Claude). Architecture, design decisions, and release management were driven by the human; implementation, testing, code review, and documentation were delegated conversationally, with Claude writing code, catching stale docs, and filling test coverage gaps across every commit.

License

Apache 2.0. See LICENSE.

Available Tools

7 tools
clipboard_copyA
DestructiveIdempotent

Copy text to the user's system clipboard. Replaces whatever is currently on the clipboard with the provided content.

WHEN TO CALL THIS TOOL:

Call this tool when the user says "copy this", "put this on my clipboard", "copy to clipboard", "send to clipboard", or any phrase that implies writing content to the clipboard.

Also call this tool when you have produced formatted output (cleaned-up JSON, a markdown table, reformatted code, an HTML table, etc.) and the user wants to use it outside the conversation — copying to clipboard lets them paste it elsewhere.

Args: content: The text to place on the clipboard. Any string is accepted. mime_type: MIME type for the clipboard content (default: "text/plain"). Use "text/html" to write HTML that applications can paste as rich text. Use "text/rtf" to write RTF content. Use "image/svg+xml" to write an SVG; SVG is XML, so it rides this text-write path rather than clipboard_copy_image. Binary image MIME types (image/png, image/jpeg, etc.) and audio/* / video/* are rejected — for PNG or JPEG, use clipboard_copy_image. Note: On Wayland and X11, any text/* MIME type is accepted, plus image/svg+xml. On macOS and Windows, only text/plain, text/html, text/rtf, and image/svg+xml are supported.

Returns: A confirmation message with the number of characters copied and the MIME type written.

NameRequiredDescriptionDefault
contentYes
mime_typeNotext/plain

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the mutation profile is known. The description adds genuine context beyond that: it explains WHAT is destroyed ('replaces whatever is currently on the clipboard'), the platform-dependent MIME support (Wayland/X11 vs macOS/Windows), and which MIME types are rejected. This is useful added detail rather than repetition of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and organized under clear WHEN TO CALL / Args / Returns headers, so an agent can scan it quickly. It is thorough to the point of being slightly verbose (the trigger-phrase enumeration and per-platform MIME notes), but every section maps to a real decision the caller must make.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool, the description covers the action, the destructive effect, trigger conditions, sibling routing, parameter formats, and platform constraints. An output schema exists, yet the Returns section still summarizes the confirmation shape, so nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and does so: it documents that content accepts any string, gives mime_type's default, enumerates supported values (text/plain, text/html, text/rtf, image/svg+xml), and explains the rejection of binary/audio/video types with the correct fallback tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Copy text to the user's system clipboard') and immediately distinguishes it from siblings by naming clipboard_copy_image as the path for binary image types. An agent can tell this apart from clipboard_copy_markdown, clipboard_paste, and clipboard_read_raw without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit WHEN TO CALL section lists trigger phrases ('copy this', 'put this on my clipboard') plus the proactive case (formatted output the user wants outside the conversation). It also names the alternative tool and the exact condition that selects it ('for PNG or JPEG, use clipboard_copy_image'), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_copy_imageA
DestructiveIdempotent

Write an image to the user's system clipboard. Replaces whatever is currently on the clipboard with the provided image so it can be pasted into other applications (Slack, Gmail, Figma, image editors, etc.).

WHEN TO CALL THIS TOOL:

Call this tool when the user says "copy this image", "put this on my clipboard", or any phrase that implies writing an image to the clipboard.

Also call it when you have produced or fetched an image (a chart, a screenshot, a generated image) and the user wants to paste it elsewhere. For text content, use clipboard_copy instead.

Args: image_data: Base64-encoded image bytes. The same encoding that clipboard_paste returns for image content can be passed back in. mime_type: Either "image/png" or "image/jpeg". Pass-through, no re-encoding. The image header is verified against the declared MIME type to catch mismatches.

Returns: A confirmation message with the byte count and the MIME type written.

Limits: The image must not exceed MCP_CLIPBOARD_MAX_IMAGE_BYTES (default 10 MB). Set the env var to raise the limit.

NameRequiredDescriptionDefault
mime_typeNoimage/png
image_dataYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (destructiveHint=true, idempotentHint=true, readOnlyHint=false) are consistent with the description, which adds genuinely new behavioral context: the clipboard is overwritten, MIME headers are verified against the declared type, no re-encoding occurs, and a byte-size ceiling keyed to MCP_CLIPBOARD_MAX_IMAGE_BYTES applies. This is well beyond annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then cleanly sectioned into WHEN/Args/Returns/Limits, and the Args details are load-bearing given the empty schema. The Returns block is mildly redundant since an output schema exists, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param destructive write with an output schema, the description supplies everything material: trigger conditions, encoding contract, MIME restrictions, size limit and how to raise it. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and does: `image_data` is base64 bytes interoperable with `clipboard_paste`, and `mime_type` accepts only image/png or image/jpeg with header verification. Both parameters are disambiguated with syntax and constraints the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Write an image to the user's system clipboard.' It immediately scopes the tool to images and explicitly routes text content to `clipboard_copy`, so the agent can distinguish it from the sibling text tools without reading any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated WHEN TO CALL section gives trigger phrases ('copy this image', 'put this on my clipboard') plus a second scenario (produced/fetched images to paste elsewhere), and names the alternative `clipboard_copy` for text. Explicit when and when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_copy_markdownA
DestructiveIdempotent

Render markdown to HTML and place both formats on the system clipboard so the user can paste rich text into apps that prefer formatted content (Slack, Gmail, Notion, Word, Google Docs, Discord) AND plain markdown into apps that prefer source (text editors, terminals).

WHEN TO CALL THIS TOOL:

Call this tool when the user wants formatted output to paste into a rich-text target — bulleted lists, headings, links, code, bold/italic emphasis. Examples: "summarize these emails as a list and copy it", "copy this as formatted text", "put this on my clipboard so I can paste it into Slack with formatting", "give me a markdown bullet list and copy it."

For plain text without formatting intent, use clipboard_copy instead.

Args: text: Markdown source. Standard CommonMark syntax (headings, lists, emphasis, code blocks, links, etc.) is rendered to HTML. Raw HTML tags in the source are escaped, not passed through — if you need to write hand-crafted HTML, call clipboard_copy with mime_type="text/html" instead.

Returns: A confirmation message with the input character count and the rendered HTML byte count.

Platform behavior: - macOS and Windows: both text/html and text/plain (the markdown source) land on the clipboard atomically. Each paste target picks the format it prefers — Slack/Gmail/Notion get the rendered HTML; vim/terminal/text editors get the markdown source. - Wayland: wl-copy is single-MIME-per-invocation, so only text/html is set explicitly. However, wl-copy auto-advertises text/plain (and the X-style aliases UTF8_STRING/STRING/TEXT) for UTF-8 content, and the bytes returned for those targets are the rendered HTML markup — NOT the markdown source. A vim user pasting after this tool runs will see <h1>Title</h1>... etc. To get the markdown source on the clipboard, call clipboard_copy with the markdown source directly. - X11: xclip -target text/html -i does NOT auto-advertise additional targets, so apps that only read text/plain see an empty clipboard. Same workaround: call clipboard_copy with the markdown source for a plain-text paste.

NameRequiredDescriptionDefault
textYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/readOnly/idempotent, and the description goes well beyond them: atomic dual-format placement on macOS/Windows, the Wayland single-MIME quirk where text/plain returns HTML markup instead of markdown source, and the X11 empty-clipboard failure mode. That is exactly the kind of platform-specific behavioral disclosure annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and organized under clear headers, but the redirect to clipboard_copy is repeated in three separate sections (WHEN TO CALL, Args, and twice under Platform behavior), which adds bulk for a one-parameter tool. Content earns its place but could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still sketches the return shape (confirmation with input character count and HTML byte count), and it covers platform variance, escaping semantics, and the correct alternative tool. Nothing an agent needs to invoke or recover from this call correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage on the single parameter, the description compensates fully: it defines 'text' as CommonMark source, specifies what syntax is supported, and warns that raw HTML is escaped rather than passed through, routing users to clipboard_copy with mime_type=text/html for hand-written HTML.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (render markdown to HTML, place both formats on the clipboard) and explicitly distinguishes itself from the sibling clipboard_copy by target app type. An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WHEN TO CALL THIS TOOL' block gives explicit trigger conditions with example utterances, an exclusion ('For plain text without formatting intent, use clipboard_copy instead'), and a further fallback for hand-crafted HTML. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_list_formatsA
Read-onlyIdempotent

List the MIME types / formats currently on the system clipboard. Diagnostic tool — use clipboard_paste to actually read and return clipboard content.

Lists what formats are present. For spreadsheet data, you want to see "text/html" (best) or "text/plain" (fallback with tab-separated values).

Args: selection: Which buffer to list. Defaults to "clipboard". Pass "primary" to list formats on the X11/Wayland PRIMARY selection. macOS and Windows have no PRIMARY analog and will return an error if "primary" is passed.

Returns: A list of available clipboard formats.

NameRequiredDescriptionDefault
selectionNoclipboard

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context the annotations do not: passing 'primary' on macOS/Windows returns an error, and the X11/Wayland-specific nature of PRIMARY. It does not discuss latency or rate limits, but for a local clipboard read that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the routing instruction, then Args/Returns blocks. Efficient overall, but the 'Returns: A list of available clipboard formats' section duplicates a return value already defined by the output schema, so one block is not fully earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter diagnostic read tool with annotations and an output schema, the description covers purpose, routing, and the platform-specific edge case completely. The only redundancy is restating the return shape that the output schema already supplies, which is harmless rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for the single parameter, and it does: the default value ('clipboard'), the exact alternative ('primary'), the platform it applies to (X11/Wayland), and the failure mode on macOS/Windows. This is more meaning than the bare string type in the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the MIME types / formats currently on the system clipboard') and immediately scopes it as a diagnostic tool distinct from clipboard_paste, which actually returns content. An agent can tell it apart from clipboard_read_raw and clipboard_paste without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative explicitly ('use clipboard_paste to actually read and return clipboard content') and gives a concrete motivating scenario (spreadsheet data via text/html or text/plain). It also states the when-not case implicitly through the diagnostic framing, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_pasteA
Read-onlyIdempotent

Paste clipboard contents. Reads the user's system clipboard and returns the content. This is the primary clipboard tool.

WHEN TO CALL THIS TOOL:

Call this tool when the user says "paste", "paste it", "paste the data", "what's on my clipboard", "read my clipboard", "read what I copied", "what did I copy", "show clipboard", "from my clipboard", "use what I copied", "I copied something", "check my clipboard", or ANY phrase that implies reading from or pasting from the clipboard.

Also call this tool when the user references data that is NOT present in the conversation — for example: "format this list" but no list was given, "clean up this JSON" but no JSON is in the message, "here's a table" but no table was provided, "analyze this data" with nothing attached. In these cases, the data is likely on the clipboard. Check it BEFORE asking the user to provide the data manually.

Do NOT ask the user to paste or provide data — just call this tool.

Handles any clipboard content: tables (from spreadsheets, HTML), plain text, code, JSON, URLs, rich text, and images. Tables are auto-detected and formatted per output_format. Non-tabular content is returned with smart formatting. Images on the clipboard are returned directly as image content.

Args: output_format: Format for table data (case-insensitive). Only applies when the clipboard contains a table. Ignored for non-tabular content. Options: - "markdown" (default): GitHub-flavored Markdown table - "json": Array of objects keyed by header row - "csv": Comma-separated values - "slack": monospace code block with dashed-underline header row (avoids Slack mrkdwn escaping issues) - "jira": ||Header|| / |Cell| wiki markup (also works for Confluence) - "confluence": same as jira - "html": with /// - "notion": GFM pipe table (Notion renders these natively) include_schema: When True and the clipboard contains a table, append a column-type schema table after the data. Inferred types: integer, float, currency, percentage, date, boolean, text. Defaults to False. selection: Which buffer to read. Defaults to "clipboard" (the standard Ctrl-C / Cmd-C clipboard). Pass "primary" to read the X11 PRIMARY selection (middle-click / select-text-to-paste buffer) or the analogous Wayland primary selection. macOS and Windows have no PRIMARY analog and will return an error if "primary" is passed.

Returns: The clipboard content, formatted appropriately for the content type. Images are returned as image content (base64-encoded) for visual analysis.

NameRequiredDescriptionDefault
selectionNoclipboard
output_formatNomarkdown
include_schemaNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, idempotent, non-destructive). The description adds real context beyond them: content types handled, table auto-detection, image return as base64 image content, and the platform-specific failure mode for 'primary' on macOS/Windows. Slightly shy of 5 only because it doesn't describe behavior of the raw/format siblings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and well-sectioned (triggers, scope, args), but the trigger-phrase list is long and somewhat redundant. Every sentence is informative, so the length is mostly earned, though it could be tighter for prompt economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description fully explains return values (formatted text vs base64 image), all three params, content-type handling, and edge cases. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden and does so thoroughly: enumerates all 8 output_format enum values with their exact renderings, explains case-insensitivity and the table-only applicability, documents include_schema's inferred types and default, and clarifies selection semantics including the cross-platform error.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Paste clipboard contents') and explicitly self-identifies as 'the primary clipboard tool', which differentiates it from siblings like clipboard_read_raw. An agent can select it confidently without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Exceptional. It enumerates trigger phrases, defines the counterintuitive case (referenced-but-missing data → check clipboard first), gives an explicit directive ('Do NOT ask the user to paste'), and distinguishes itself as the default over clipboard_read_raw.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_read_rawA
Read-onlyIdempotent

Read raw clipboard content in a specific MIME format. Diagnostic tool only — use clipboard_paste instead for normal clipboard access.

This tool returns the clipboard content as-is without any parsing or restructuring. Use clipboard_list_formats first to see what MIME types are available.

Supports any non-binary MIME type. The most common values are text/* types, plus image/svg+xml (text-readable despite the image/ prefix). application/* types pass through as well (application/json, application/xml, application/xhtml+xml, etc.) because the only blocked prefixes are image/, audio/, video/, and the exact type application/octet-stream. Binary MIME types are rejected; use clipboard_paste for images.

Args: mime_type: The MIME type to read from the clipboard. Common values: "text/plain", "text/html", "image/svg+xml", "application/json" selection: Which buffer to read. Defaults to "clipboard". Pass "primary" to read the X11/Wayland PRIMARY selection (middle-click buffer). macOS and Windows have no PRIMARY analog and will return an error if "primary" is passed.

Returns: The raw clipboard content in the requested format, or an error message.

NameRequiredDescriptionDefault
mime_typeNotext/plain
selectionNoclipboard

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnly, idempotent, non-destructive), and the description adds substantial behavioral context beyond them: which MIME prefixes are accepted vs. blocked (image/, audio/, video/, application/octet-stream), that binary is rejected, that content is returned unparsed, and that 'primary' errors on macOS/Windows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and routing, then cleanly structured Args/Returns. Every sentence is useful, though the common MIME values are effectively stated twice (prose and Args), a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich output schema and full annotations, the description still covers the gaps that matter: accepted/rejected MIME types, error conditions, and platform constraints. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries full burden and does so thoroughly: it names common mime_type values, explains the text/* vs image/svg+xml vs application/* distinction, and documents the selection parameter's default and platform-specific 'primary' behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read raw clipboard content in a specific MIME format') and immediately positions itself against the sibling 'clipboard_paste' as a diagnostic-only tool. An agent can distinguish it from clipboard_paste without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: use clipboard_paste for normal access, clipboard_list_formats first to discover MIME types, and clipboard_paste for images. It states both when to use this tool and when to prefer alternatives, with the conditions spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clipboard_versionA
Read-onlyIdempotent

Return the version of mcp-clipboard currently running.

Use this when you need to record or report which mcp-clipboard build is serving the current MCP session — for example, in test harnesses, diagnostic dumps, or when the user asks which version is installed. The version is read from the package metadata at runtime, so it always matches the wheel actually serving the call.

Returns: A dict with keys "name" (always "mcp-clipboard") and "version" (the installed version string, e.g. "2.6.1"). If the package metadata cannot be located (uninstalled source checkout), returns "0.0.0+dev" as the version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral detail beyond them: the version is read from package metadata at runtime, always matches the serving wheel, and falls back to '0.0.0+dev' if metadata is unavailable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by usage contexts and return details. Every sentence earns its place by clarifying when to call it or what the fallback behavior is.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless version tool with no destructive behavior, the description is complete: it explains the purpose, when to use it, the return shape, and the fallback case. The output schema exists, but the description's extra return detail is helpful rather than redundant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to document. The baseline score for a parameterless tool is 4, and the description does not need to compensate for any schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return the version of mcp-clipboard currently running.' It is immediately distinguishable from the clipboard-content siblings (paste, copy, read_raw, list_formats, etc.) because it reports package metadata rather than clipboard data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage contexts: test harnesses, diagnostic dumps, or when the user asks which version is installed. It does not explicitly state when not to use it or name alternatives, but the context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv2.6.2
    • Changedclipboard_copy1 field changed
      • addedInput schema / properties / mime_type
        Added value: +{
        +  "default": "text/plain",
        +  "title": "Mime Type",
        +  "type": "string"
        +}
    • Addedclipboard_copy_image
    • Addedclipboard_copy_markdown
    • Changedclipboard_list_formats1 field changed
      • addedInput schema / properties / selection
        Added value: +{
        +  "default": "clipboard",
        +  "title": "Selection",
        +  "type": "string"
        +}
    • Changedclipboard_paste1 field changed
      • addedInput schema / properties / selection
        Added value: +{
        +  "default": "clipboard",
        +  "title": "Selection",
        +  "type": "string"
        +}
    • Changedclipboard_read_raw1 field changed
      • addedInput schema / properties / selection
        Added value: +{
        +  "default": "clipboard",
        +  "title": "Selection",
        +  "type": "string"
        +}
    • Addedclipboard_version
  2. 1 tool updatev2.0.0
    • Changedclipboard_paste1 field changed
      • addedInput schema / properties / include_schema
        Added value: +{
        +  "default": false,
        +  "title": "Include Schema",
        +  "type": "boolean"
        +}
  3. 4 tool updatesv1.0.1
    • First observedclipboard_copy
    • First observedclipboard_list_formats
    • First observedclipboard_paste
    • First observedclipboard_read_raw

TDQS

A4.5/5.0

Scored across 7 tools

Disambiguation4/5

The read/write split is clear, and copy vs copy_image vs copy_markdown are well distinguished by content type. clipboard_paste vs clipboard_read_raw have the most overlap, but descriptions explicitly frame read_raw as a diagnostic-only escape hatch, reducing confusion.

Naming Consistency4/5

Nearly all tools follow a clean clipboard_<verb>_<noun> pattern (paste, read_raw, list_formats, copy, copy_image, copy_markdown). clipboard_version is a minor deviation since it drops the verb, but it remains readable and predictable.

Tool Count4/5

Seven tools is a well-scoped set for clipboard operations. Most earn their place, though clipboard_version is borderline trivial and could arguably be folded into diagnostics.

Completeness5/5

The surface covers the full lifecycle: read (paste/raw/list_formats), write text, write rich text/markdown, write images, plus version introspection. No obvious gaps in clipboard read/write workflows.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives Claude and other AI assistants access to your Maccy clipboard history, allowing search, retrieval, and management of copied content through natural conversation.
    9
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A Windows-native MCP server that enables users to paste images, Excel tables, rich text, and plain text directly into Claude via a dedicated popup interface. It supports multi-item management and format conversion to streamline sharing complex clipboard data with the model.
    1
    -