github TypeScript analyzed ec8df13

cyanheads/clipboard-mcp-server

github

System clipboard access for MCP clients

maintainer
cyanheads
licence
Apache-2.0
first seen
2026-06-12
last seen
2026-09-09
releases · 30d
6
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 3 tools
transport stdio · streamable-http · http verified reported listed in the official MCP registry counts 3 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • clipboard_inspect
  • clipboard_read
  • clipboard_write
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit ec8df13 · analyzer v33 · 5h ago

skills & prompt files 33

code evidence vv0.2.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 46

filesystem 18

  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/audit-open-index-signatures.ts :33 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/build-changelog.ts :32 import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/build.ts :17 import { readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-dependency-specifiers.ts :38 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-docs-sync.ts :22 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-framework-antipatterns.ts :42 import { existsSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-skill-versions.ts :33 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-skills-sync.ts :37 import { existsSync, readdirSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/clean-mcpb.ts :29 import { existsSync, statSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/clean.ts :15 import { readdir, rm } from 'node:fs/promises';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/devcheck.ts :3 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/lint-mcp.ts :19 import { existsSync, readdirSync, readFileSync } from 'node:fs';
show 6 more
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/lint-packaging.ts :55 import { existsSync, readdirSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/list-skills.ts :21 import { existsSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/release-github.ts :33 import { existsSync, readFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/tree.ts :24 import type { Dirent } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/integration/harness.ts :15 import { chmodSync, mkdtempSync, writeFileSync } from 'node:fs';
  • fs (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/integration/http-transport.test.ts :10 import { writeFileSync } from 'node:fs';

shell / exec 20

  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/audit-open-index-signatures.ts :32 import { spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/build.ts :16 import { execFile } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-framework-antipatterns.ts :41 import { spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/check-skill-versions.ts :32 import { spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/clean-mcpb.ts :28 import { execFileSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/devcheck.ts :2 import { type ChildProcess, spawn, spawnSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/lint-packaging.ts :54 import { execFileSync } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/scripts/release-github.ts :32 import { spawnSync } from 'node:child_process';
  • shell cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/clipboard-service.ts :6 import { execFile } from 'node:child_process';
  • shell cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/linux-wayland-backend.ts :6 import { spawn } from 'node:child_process';
  • shell cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/linux-x11-backend.ts :6 import { spawn } from 'node:child_process';
  • shell cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/macos-backend.ts :6 import { spawn } from 'node:child_process';
show 8 more
  • shell cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/windows-backend.ts :6 import { spawn } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/integration/harness.ts :14 import { type ChildProcess, execFileSync, spawn } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/security/injection.test.ts :19 import { spawn } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/clipboard-service.test.ts :6 import { execFile } from 'node:child_process';
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/linux-wayland-backend.test.ts :2 * @fileoverview Unit tests for LinuxWaylandBackend — mocks child_process.spawn.
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/linux-x11-backend.test.ts :2 * @fileoverview Unit tests for LinuxX11Backend — mocks child_process.spawn.
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/macos-backend.test.ts :2 * @fileoverview Unit tests for MacosBackend — mocks child_process.spawn.
  • shell (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/windows-backend.test.ts :2 * @fileoverview Unit tests for WindowsBackend — mocks child_process.spawn.

network 1

  • net (weak) cyanheads-clipboard-mcp-server-ec8df13/tests/integration/harness.ts :196 const response = await fetch(url, { method: 'POST', headers, body: JSON.stringify(body) });

tool registrations 3

  • clipboard_inspect cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-inspect.tool.ts :11
  • clipboard_read cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-read.tool.ts :37
  • clipboard_write cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-write.tool.ts :18

declared dependencies 12

  • @cyanheads/mcp-ts-core@^0.12.7
  • pino-pretty@^13.1.3
  • zod@^4.5.4
  • @biomejs/biome@^2.5.12
  • @socketsecurity/bun-security-scanner@^1.1.2
  • @types/node@^26.4.0
  • depcheck@^1.4.7
  • ignore@^7.0.6
  • tsc-alias@^1.9.4
  • typescript@^7.0.2
  • typescript-v6@npm:typescript@^6.0.3
  • vitest@^4.1.11

clipboard 15

  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-inspect.tool.ts :78 'Install the platform clipboard tool: macOS (built-in), Linux X11 (apt install xclip), Linux Wayland (apt install wl-clipboard), Windows (PowerShell 5.1+).',
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-read.tool.ts :142 'Install the platform clipboard tool: macOS (built-in), Linux X11 (apt install xclip), Linux Wayland (apt install wl-clipboard), Windows (PowerShell 5.1+).',
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/mcp-server/tools/definitions/clipboard-write.tool.ts :87 'Install the platform clipboard tool: macOS (built-in), Linux X11 (apt install xclip), Linux Wayland (apt install wl-clipboard), Windows (PowerShell 5.1+).',
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/clipboard-service.ts :94 const required = ['wl-paste', 'wl-copy'] as const;
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/linux-wayland-backend.ts :40 const child = spawn('wl-paste', args, {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/linux-x11-backend.ts :40 const child = spawn('xclip', args, {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/src/services/clipboard/macos-backend.ts :234 const child = spawn('pbpaste', [], {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/integration/harness.ts :39 for (const writer of ['pbcopy', 'xclip', 'wl-copy']) {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/security/injection.test.ts :15 cb(null, '/usr/bin/xclip\n'),
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/clipboard-service.test.ts :92 it('selects Wayland after probing wl-paste with Unix which', async () => {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/linux-wayland-backend.test.ts :131 .mockReturnValueOnce(fakeChild({ exitCode: 1, stderr: 'wl-paste: no data for that type' }));
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/linux-x11-backend.test.ts :106 .mockReturnValueOnce(fakeChild({ exitCode: 1, stderr: 'xclip: Error: conversion failed' }));
show 3 more
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/services/clipboard/macos-backend.test.ts :180 it('reads text via pbpaste', async () => {
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/tools/clipboard-inspect.tool.test.ts :143 serviceThrowing(new Error('xclip exited 1: cannot open display'));
  • clipboard shell call cyanheads-clipboard-mcp-server-ec8df13/tests/tools/clipboard-write.tool.test.ts :199 const writeMock = vi.fn().mockRejectedValueOnce(new Error('pbcopy exited 1'));