Skip to main content
Glama

mcp-clipboard

PyPI version Python versions License Tests Coverage Downloads mcp-clipboard MCP server

Un servidor MCP que le da a tu asistente de IA acceso directo al portapapeles de tu sistema: lee lo que copiaste o escribe texto limpio directamente en él. Funciona con cualquier cliente compatible con MCP, incluyendo Claude Code, Claude Desktop, Cursor, Windsurf y otros.

Por qué existe esto

Pegar pierde la estructura

Cuando copias celdas de Google Sheets o Excel y las pegas en la entrada de un chat, la estructura tabular (filas y columnas) se destruye. Llega como una cadena plana sin delimitadores. El modelo tiene que adivinar dónde termina una celda y dónde empieza la siguiente, y a menudo adivina mal.

mcp-clipboard la conserva. En lugar de pegar, dile a tu asistente que "lea mi portapapeles". El servidor lee el portapapeles directamente, detecta datos tabulares del HTML que las aplicaciones de hoja de cálculo ponen en el portapapeles y los devuelve como una tabla Markdown, JSON o CSV correctamente formateada. Sin pérdida de estructura, sin adivinanzas.

Bonus: también soluciona el copiado desde Claude Code

El renderizador de terminal de Claude Code añade un relleno de 2 caracteres, saltos de línea forzados a ~80 columnas y espacios en blanco al final de toda la salida. Cuando seleccionas y copias texto de la terminal, esos artefactos se incluyen en el proceso:

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

Esto ha sido reportado repetidamente en el repositorio de claude-code (issues #4686, #6827, #7670, #13378, #15199, #25040, #25427, #26016) con docenas de votos a favor y sin solución publicada.

mcp-clipboard evita el problema por completo. En lugar de copiar texto de la terminal, pídele a Claude Code que lo ponga en tu portapapeles:

"Copia ese comando a mi portapapeles"

Claude Code llama a clipboard_copy, escribe el texto limpio directamente en el portapapeles de tu sistema y tú lo pegas donde lo necesites. Sin relleno, sin saltos forzados, sin limpieza.

Consejo: Para hacer esto automático, añade una línea a tu proyecto o a tu CLAUDE.md global:

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

Claude Code copiará entonces cada comando que sugiera sin que tengas que pedírselo.

Herramientas

Herramienta

Descripción

clipboard_paste

Herramienta principal. Lee cualquier contenido del portapapeles: tablas, texto, código, JSON, URLs, imágenes. Las tablas se formatean como Markdown/JSON/CSV; pasa include_schema=true para añadir los tipos de columna inferidos. Las imágenes se devuelven como contenido de imagen que el modelo puede ver.

clipboard_copy

Escribe contenido en el portapapeles del sistema. Acepta un parámetro opcional mime_type (text/plain por defecto; también text/html, text/rtf o cualquier text/* en Wayland/X11).

clipboard_list_formats

Lista qué tipos MIME hay actualmente en el portapapeles.

clipboard_read_raw

Devuelve el contenido crudo del portapapeles para un tipo MIME dado — soporta formatos de texto más image/svg+xml, application/json, application/xml (diagnóstico).

Configuración

Requisitos previos

Python 3.11+ y uno de los siguientes: uv (recomendado), pipx o pip.

También necesitas una herramienta de portapapeles específica para tu plataforma:

Plataforma

Herramienta

Instalación

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 o sudo apt install xclip

macOS

Integrada

No requiere instalación (pbcopy / pbpaste)

Windows

Integrada

No requiere instalación (PowerShell)

Estado de la plataforma: Linux con Wayland está probado y se usa activamente. Las implementaciones de X11, macOS y Windows están completas pero no probadas en hardware real. Los informes de errores y las PRs son bienvenidos.

Claude Code

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

Claude Desktop

Añade esto a tu configuración de Claude Desktop:

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

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

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

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

Otros clientes MCP

Cualquier cliente que soporte servidores stdio de MCP puede usar mcp-clipboard. El enfoque más sencillo es uvx mcp-clipboard. Consulta la documentación de tu cliente para saber cómo registrar servidores MCP.

Instalación desde el código fuente

Si prefieres un clon local en lugar de instalar desde PyPI:

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

Luego apunta tu cliente a la instalación local:

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

Variables de entorno

Las variables de entorno se pueden pasar a través de la clave "env" en la configuración.

Variable

Plataforma

Propósito

Por defecto

MCP_CLIPBOARD_DEBUG

Todas

Habilitar registro de depuración (1 para habilitar)

Desactivado

WAYLAND_DISPLAY

Linux (Wayland)

Nombre del socket del compositor o ruta absoluta

Autodetectado

XDG_RUNTIME_DIR

Linux (Wayland)

Directorio que contiene el socket de Wayland

/run/user/<uid>

XDG_SESSION_TYPE

Linux

Pista del tipo de sesión (wayland o x11)

Autodetectado vía escaneo de socket

La mayoría de los usuarios de Linux no necesitarán configurar ninguna de estas. Sobrescríbelas si la autodetección falla (múltiples compositores, ruta de socket no estándar o entornos en contenedores).

Uso

Leer tu portapapeles

Copia cualquier cosa (celdas de hoja de cálculo, código, texto, una URL, JSON, una imagen), luego:

  • "Pega mi portapapeles"

  • "Lee mi portapapeles"

  • "¿Qué hay en mi portapapeles?"

  • "He copiado algunos datos, échales un vistazo"

Tu asistente llama a clipboard_paste y devuelve el contenido con la estructura conservada.

Escribir en tu portapapeles

Cuando tu agente genera un comando, bloque de código o cualquier texto que necesites usar en otro lugar:

  • "Copia eso a mi portapapeles"

  • "Pon ese comando en mi portapapeles"

  • "Copia eso como HTML" (escribe text/html para que las aplicaciones de texto enriquecido peguen con formato)

El agente llama a clipboard_copy y el texto limpio va directamente al portapapeles de tu sistema. Sin artefactos de renderizado de terminal, solo texto limpio. Esto es especialmente útil con Claude Code (ver arriba).

Consejo: comportamiento de autocopiado. Por defecto, el agente solo copia al portapapeles cuando se lo pides. Si quieres que los comandos y bloques de código se copien automáticamente, añade esto a tu prompt del sistema (por ejemplo, en un proyecto de Claude Desktop o en el CLAUDE.md de Claude Code):

Cuando generes un comando o bloque de código que el usuario probablemente pegue en otro lugar, cópialo proactivamente al portapapeles usando clipboard_copy.

Formatos de salida de tabla

Cuando el portapapeles contiene datos tabulares, output_format controla el formato:

Formato

Destino

Qué obtienes

markdown

Claude, GitHub, la mayoría de herramientas

Tabla de tuberías GFM (por defecto)

notion

Notion

Tabla de tuberías GFM (Notion las renderiza nativamente)

slack

Slack

Encabezado *negrita* + datos alineados con espacios en un bloque de código monoespaciado

jira

Jira

Marcado wiki `

Encabezado

/

Celda

`

confluence

Confluence

igual que jira (sintaxis wiki compartida)

html

Correo, web, editores de texto enriquecido

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

json

APIs, código

Matriz de objetos indexados por la fila de encabezado

csv

Excel, herramientas de datos

Valores separados por comas

Ejemplos:

  • "Lee mi portapapeles como Slack" → output_format=slack

  • "Convierte mi portapapeles a tabla Jira" → output_format=jira

  • "Dame eso como HTML" → output_format=html

Inferencia de esquema de tabla

Añade include_schema=true para obtener un resumen de tipos de columna junto a la tabla:

"Lee mi portapapeles con esquema"

Tipos inferidos: integer, float, currency, percentage, date, boolean, text. Utiliza la mayoría gana por columna: si ningún tipo representa más de la mitad de las celdas no vacías, la columna se tipifica como text. Las celdas vacías se omiten; la fila de encabezado se excluye de la inferencia.

Esto es útil al entregar datos tabulares a Claude para sentencias SQL CREATE TABLE, mapeos de dtype de Pandas o reglas de validación: Claude obtiene los tipos por adelantado en lugar de adivinarlos a partir de los datos.

Consejos para un disparo fiable

El servidor incluye instrucciones MCP que le dicen al cliente cuándo usar las herramientas del portapapeles, pero los resultados varían según el modelo y el cliente. Si el agente no capta tu intención, sé explícito: "copia eso a mi portapapeles" o "lee lo que copié" funcionan de forma más fiable.

Si tienes acceso a un prompt del sistema personalizado (por ejemplo, en un proyecto de Claude Desktop o un agente personalizado), puedes reforzar el comportamiento:

Cuando el usuario pida copiar la salida, usa clipboard_copy para escribirla en el portapapeles del sistema. Cuando el usuario haga referencia a datos que no están en la conversación, comprueba el portapapeles usando clipboard_paste.

Manejo de contenido

Tipo de contenido

Qué sucede

Tabla de hoja de cálculo

Analizada desde HTML/TSV, devuelta en el formato que elijas (Markdown, JSON, CSV, Slack, Jira, HTML, Notion)

JSON

Impreso de forma bonita en un bloque de código JSON

Código

Devuelto en un bloque de código delimitado

URL

Devuelta limpiamente como una URL

HTML enriquecido (sin tabla)

Etiquetas HTML eliminadas, se devuelve texto legible

RTF

Devuelto en un bloque de código delimitado (macOS, Windows y Wayland/X11 mediante paso a través)

Texto plano

Devuelto tal cual

Imágenes (PNG, etc.)

Devueltas como un bloque de contenido de imagen MCP que el modelo puede ver y analizar

SVG

Legible como texto mediante clipboard_read_raw con image/svg+xml, o devuelto como imagen mediante clipboard_paste

Audio / video

No soportado; devuelve un mensaje identificando el formato

Cómo funciona

  1. Detección de plataforma: Al inicio, el servidor detecta tu backend de portapapeles (Wayland, X11, macOS o Windows) y selecciona los comandos del sistema apropiados.

  2. Lectura (clipboard_paste): Llama al comando de lectura del portapapeles de la plataforma. Intenta primero text/html (Google Sheets y Excel ponen marcado <table> en el portapapeles), analiza con el html.parser integrado de Python. Recurre a valores separados por tabulaciones text/plain, luego text/rtf, luego comprueba si hay imágenes.

  3. Escritura (clipboard_copy): Envía texto al comando de escritura del portapapeles de la plataforma (wl-copy, xclip -selection clipboard, pbcopy o PowerShell Set-Clipboard). Soporta un parámetro mime_type para escribir contenido tipado (por ejemplo, text/html, text/rtf).

  4. Paso a través de imágenes: Si el portapapeles contiene una imagen (PNG, etc.), se devuelve como un bloque de contenido de imagen MCP codificado en base64 que el modelo puede ver y analizar.

  5. Clasificación de contenido: El contenido de texto no tabular se clasifica como JSON, URL, código o texto plano y se devuelve con el formato apropiado (JSON impreso de forma bonita, bloques de código delimitados, etc.).

Limitaciones

  • El audio y el video no son compatibles. Si el portapapeles contiene audio o video, el servidor informa del formato pero no puede devolver el contenido.

  • La escritura en el portapapeles solo admite tipos MIME de texto. clipboard_copy puede escribir text/plain, text/html y text/rtf. No se admite la

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cmeans/clipboard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server