mcpField
C
clipboard-mcp-server

clipboard-mcp-server

本地服务
github.com/cyanheads生产力2今天更新

关于 clipboard-mcp-server

clipboard-mcp-server 让 MCP 客户端读取、写入和检查 macOS、Linux、Windows 上的系统剪贴板,支持文本、HTML、RTF 和图像,并使用平台专用后端。

主要功能

  1. 01读取文本、HTML、RTF 和图像
  2. 02写入文本或 HTML,或清空剪贴板
  3. 03检查可用格式和数据大小
  4. 04分段读取较大的内容
  5. 05支持 macOS、Linux 和 Windows

适用场景

  1. 01读取剪贴板内容以供处理
  2. 02复制生成的文本或 HTML
  3. 03读取前检查剪贴板格式

MCP 相关

向 MCP 客户端提供 `clipboard_read`、`clipboard_write` 和 `clipboard_inspect` 工具。支持 stdio 与 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cyanheads-clipboard": {
"command": "npx",
"args": [
"-y",
"@cyanheads/clipboard-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"CLIPBOARD_READ_ONLY": "<CLIPBOARD_READ_ONLY>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<MCP_AUTH_MODE>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_SESSION_MODE": "<MCP_SESSION_MODE>"
}
}
}
}
启动命令npx -y @cyanheads/clipboard-mcp-server
需要配置的环境变量
MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
CLIPBOARD_READ_ONLYServe the clipboard read-only. When true, clipboard_write is not registered: it is absent from tools/list and uncallable, absent from the manifest but shown as disabled on the landing page and startup log. Accepts true/false/1/0/yes/no/on/off.
MCP_TRANSPORT_TYPESelects the HTTP transport.
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_AUTH_MODE密钥Authentication mode to use: 'none', 'jwt', or 'oauth'.
MCP_HTTP_MAX_BODY_BYTESMaximum inbound JSON-RPC request body in bytes. Defaults to 7 MiB so a full-size clipboard_write survives worst-case JSON escaping; 0 disables the guard.
MCP_SESSION_MODEHTTP session mode: 'auto', 'stateful', or 'stateless'. 'auto' resolves to 'stateful'. This server defaults to 'stateless'.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@cyanheads/clipboard-mcp-server0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@cyanheads/clipboard-mcp-server

通过 MCP 在 macOS、Linux(X11/Wayland)和 Windows 上读取、写入和检查系统剪贴板。支持 STDIO 或 Streamable HTTP。

3 个工具

Version License MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概述

适用于 macOS、Linux(X11/Wayland)和 Windows 的系统剪贴板。可通过任何 MCP 客户端读取、写入和检查文本、HTML、RTF 及图像内容。可作为 stdio 进程或本地 Streamable HTTP 服务运行。

工具
工具描述
clipboard_read以指定格式读取剪贴板内容(文本、HTML、RTF、图像,或自动选择内容最丰富的格式)
clipboard_write将纯文本或 HTML 写入剪贴板并替换当前内容,或直接清空剪贴板
clipboard_inspect列出可用的剪贴板格式及字节大小,而不读取完整内容

功能参考

clipboard_read 工具
  • 读取 text、html、rtf 或 image;auto 会选择当前内容最丰富的格式(image > html > rtf > text)。整段读取上限:文本/HTML/RTF 为 512 KB,图像为 5 MB
  • 返回 format、content、字节大小、complete 和 representationId;图像为 base64 PNG,并可选返回 width/height。失败时会返回 format_unavailable、content_too_large、representation_changed、clipboard_unavailable 或 inspect_unreadable
  • 对于较大的内容,可使用字节 offset/limit 分段读取(最小 limit 为 4,并按格式设有上限),然后将每个 nextOffset 与 representationId 一起作为 offset 传入,直至读取完成。图像分段是字节块:分别解码每块并按顺序拼接;只有整幅图像才会附带图像块

clipboard_write 工具
  • 必须仅提供非空的 content 或 clear: true;format 接受 text 或 html,写入上限为 1 MB。在 macOS/Windows 上,HTML 会生成去除标记后的纯文本备用内容;在 Linux 上,纯文本粘贴可能会收到标记内容
  • 返回 format/byteSize,或返回 cleared: true 且字节数为零;可选的 previousContent 保存了 512 KB 读取上限内的先前纯文本。失败时会附带 content_too_large 或 clipboard_unavailable;X11 清空需要 xsel
  • 设置 CLIPBOARD_READ_ONLY 后,工具会从 tools/list 中移除,从而禁用写入和清空操作

clipboard_inspect 工具
  • 返回 primaryFormat(优先级为 image > html > rtf > text,或为 empty)以及 availableFormats,以便选择读取格式
  • rawTypes 列出平台标识及测得的 bytes;无法读取时会显示 measurementFailed。失败时会附带 inspect_unreadable 或 clipboard_unavailable

功能

基于 @cyanheads/mcp-ts-core 构建:支持 stdio 和 Streamable HTTP 传输、可插拔的身份验证(none / jwt / oauth)、可切换的存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),以及支持可选 OpenTelemetry 跟踪的结构化日志记录。

剪贴板专属功能:

  • 启动时检测跨平台后端:macOS(osascript/JXA)、Linux X11(xclip)、Linux Wayland(wl-clipboard)、Windows(PowerShell 5.1+)
  • 语义格式映射:将平台原生类型标识符(UTI、TARGETS、Windows 格式名称)映射为所有后端通用的 text、html、rtf、image
  • 平台适配的 HTML 写入:macOS 和 Windows 会发布 HTML 及去除标记后的纯文本备用内容;在 Linux 上,HTML 是唯一的载荷,纯文本粘贴目标也可以接收该内容
  • 图像支持:所有后端均以 base64 格式返回 PNG,并提供宽度/高度(Linux 后端会从 PNG 标头中读取)

便于 Agent 使用的输出:

  • 有大小限制的 I/O:超出格式限制的读取和写入会失败,并返回携带字节数/限制元数据的类型化 content_too_large 错误,而不会静默截断
  • 有界续读:clipboard_read 使用 offset/limit 对超大内容分片,并返回 nextOffset,而不强制一次性完整读取;representationId 可确保分片期间剪贴板发生变化时明确报错,而不是将两个值拼接在一起
  • 撤销支持:clipboard_write 会返回 previousContent,以便还原意外覆盖的内容
  • 可区分的失败原因:format_unavailable、content_too_large、representation_changed、inspect_unreadable 和 clipboard_unavailable 是带有恢复提示的类型化原因,而非通用错误;每个后端都会自行对辅助程序的结果进行分类(包括 wl-clipboard 和 xclip 的不同退出状态写法),因此不会混淆剪贴板为空、格式不存在和辅助程序无法访问这几种情况

入门

将以下内容添加到 MCP 客户端配置文件中。

{
  "mcpServers": {
    "clipboard-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/clipboard-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或使用 npx(无需 Bun):

{
  "mcpServers": {
    "clipboard-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/clipboard-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

对于 Streamable HTTP,设置传输方式并启动服务:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
先决条件

Bun 1.4.0+ 或 Node.js 24+。

macOS: 无需额外工具,系统已内置 osascript。

Linux X11: 必须安装 xclip。clipboard_write 的 clear 模式还需要 xsel——在这两种工具中,只有它能交还选区,而不是持有一个空选区。

apt install xclip xsel      # Debian/Ubuntu
pacman -S xclip xsel        # Arch

Linux Wayland: 必须安装 wl-clipboard。

apt install wl-clipboard    # Debian/Ubuntu
pacman -S wl-clipboard      # Arch

Windows: PowerShell 5.1+(Windows 10 及更高版本内置)。


配置

变量描述默认值
MCP_TRANSPORT_TYPE传输方式:stdio 或 http。stdio
MCP_HTTP_PORTHTTP 服务的端口。3010
MCP_HTTP_HOSTHTTP 服务的主机名。127.0.0.1
MCP_HTTP_ENDPOINT_PATHHTTP 服务的端点路径。/mcp
MCP_HTTP_MAX_BODY_BYTES入站 JSON-RPC 请求正文的最大字节数。该值高于框架默认的 1 MiB,以确保完整大小的 clipboard_write 在经过 JSON 转义后仍能正常处理(最坏情况下,每个源字节会占用 6 个传输字节)。0 会禁用此限制,并交由反向代理处理。7340032
MCP_SESSION_MODEHTTP 会话模式:auto、stateful 或 stateless。auto 会解析为 stateful。此服务默认使用 stateless,不会保留任何会话状态。stateless
MCP_AUTH_MODE身份验证模式:none、jwt 或 oauth。none
MCP_LOG_LEVEL日志级别(debug、info、notice、warning、error)。info
LOG_TOOL_FAILURE_PAYLOADS记录失败的工具参数/结果,最多为 LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES(16384)字节。按键名进行脱敏;剪贴板内容中的机密不会脱敏。false
OTEL_ENABLED启用 OpenTelemetry 插桩。false
CLIPBOARD_READ_ONLY以只读方式提供剪贴板服务。设为 true 时,clipboard_write 不会出现在清单和 tools/list 中,也无法调用,但会在落地页和启动日志中显示为已禁用。接受 true/false/1/0/yes/no/on/off;无法识别的值会导致启动失败。false

完整的可选覆盖项列表请参见 .env.example。


运行服务

本地开发
# One-time build
bun run rebuild

# Run the built server
bun run start:stdio
# or
bun run start:http
检查与测试
bun run devcheck   # Lint, format, typecheck, security
bun run test       # Vitest test suite

项目结构

路径用途
src/index.ts入口点 — 通过 createApp() 注册工具
src/mcp-server/tools/definitions/工具定义:clipboard_read、clipboard_write、clipboard_inspect
src/services/clipboard/平台后端(macOS、Linux X11、Wayland、Windows)和服务门面
tests/针对工具和后端的 Vitest 测试
framework-skills/Agent 工作流技能(add-tool、field-test、polish-docs-meta 等)

开发指南

完整的开发规范请参见 CLAUDE.md,其中包括工具模式、服务模式、错误处理、日志约定,以及发布变更的检查清单。简而言之:

  • 处理器抛出异常,由框架捕获 — 工具逻辑仅在需要处理后端的类型化结果时捕获异常:将其映射到已声明的错误原因,或让 auto 继续尝试下一种格式
  • 使用 ctx.log 记录请求范围内的日志
  • 不使用 Docker — 此服务需要直接访问主机操作系统(JXA/NSPasteboard、xclip、wl-clipboard、PowerShell),这些都无法在容器内运行

贡献

欢迎在 github.com/cyanheads/clipboard-mcp-server 提交问题。提交前请运行检查和测试:

bun run devcheck
bun run test

许可证

Apache 2.0 — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。