System clipboard access for MCP clients
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
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
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
- agent-rules cyanheads-clipboard-mcp-server-ec8df13/CLAUDE.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-app-tool/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-prompt/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-resource/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-service/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-test/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/add-tool/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-auth/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-canvas/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-config/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-context/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-errors/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-linter/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-mirror/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-services/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-telemetry/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-testing/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-utils/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/api-workers/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/code-simplifier/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/design-mcp-server/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/field-test/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/git-wrapup/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/maintenance/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/orchestrations/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/polish-docs-meta/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/release-and-publish/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/report-issue-framework/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/report-issue-local/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/security-pass/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/setup/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/techniques/SKILL.md
- skill cyanheads-clipboard-mcp-server-ec8df13/skills/tool-defs-analysis/SKILL.md
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'));