Clipy MCP server
online.clipy/mcp·v0.17.0·5 starsRead your Clipy screen recordings: search, transcripts, AI summaries, and key moments with frames.
5 stars170 downloads/wk
Reviews
Write oneNobody has reviewed Clipy yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Clipy tools (34, 7 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
abort_recordingDiscard the active recording session: closes the browser and deletes the capture. Nothing is uploaded. Use this when the session captured the wrong thing or an error made it worthless.
add_chapterwrite actionDrop a CHAPTER boundary into the active recording session — a mark reading '=== CHAPTER: <label> ===' at the live clock. Use it to split a recording into named sections. Ideal for before/after recordings (e.g. a PR review: demo the base branch, add_chapter "AFTER — fix applied", swap branches, demo again, then stop_recording). Chapters ride the transcript so a reader (or the summary) can see the b
add_commentwrite actionPost a comment on a recording the user owns, under the user's name: a new comment pinned to timestampMs, or a reply when parentCommentId is given. Everyone in the thread is notified, so show the user the exact text and get their go-ahead first. Needs comments:write.
add_markerwrite actionDrop a live-timestamped narration marker into the active recording session ('reproduced the bug', 'the fix renders correctly at mobile width'). Markers become the recording's transcript chapters, so narrate as you work — they are how the recording stays agent-readable despite having no audio. A mark can carry evidence in ONE of two provenances, never both. (1) CLIPY-VERIFIED — assertSelector (elem
create_folderwrite actionCreate a folder. If one with that name exists it is returned instead (the response's `created` says which). Needs recordings:write.
delete_recordingwrite actionPERMANENTLY delete a recording: video, transcript, summary, key moments and comments. There is no trash and no undo. Only call this when the user explicitly asked to delete this specific recording, and repeat its id in `confirm`. Needs a key with recordings:delete (`clipy login --allow-delete`).
download_recordingDownload a recording's MP4 to a local file so YOU can process it — clip a segment, extract frames, transcode, etc. with your own tools (e.g. ffmpeg). Clipy does NOT clip/extract server-side; you operate on the downloaded file. Returns the local path.
edit_recordingCut parts of a recording's video by its transcript (a fumbled sentence, a tangent, dead air, or every filler word). Needs the 'recordings:write' scope. Word indexes and ms times come from get_edit_transcript and are on the ORIGINAL timeline; operations apply on top of the current cuts in this order: restoreOriginal, removeWords, removeRanges, removeFillerWords, restoreWords, restoreRanges. autoZoo
get_agent_contextONE-CALL CONTEXT BUNDLE for a recording: metadata (incl. recording kind + recorded app/window) + AI summary + ordered interaction timeline + action items + key moments with inline frame images (click positions marked on the frame, plus a full-res crop of the click target) + the timestamped transcript. Use this first when someone hands you a Clipy link and asks you to act on it. The frames are grou
get_analyticsWho watched a recording and how far: opens, unique viewers, plays, average completion, retention, viewers by name, breakdowns. Pro feature; a free account gets gated:true with the totals only. Needs analytics:read.
get_browser_diagnosticsGet redacted browser evidence captured with a bug recording: console output with stacks, uncaught errors, network requests (status, timing, GraphQL errors, and headers/bodies when the recorder opted into full network detail), WebSocket and event-stream activity, clicks and typing by label, page changes, environment, and page-supplied metadata. With no filters it returns a compact view of failures,
get_context_documentGet one context document's metadata: source (YouTube URL or local file), duration, tags, its server-side classification (video type, whether visual evidence is needed, planned moments), and what transcript/frames are available. Deliberately does NOT return the transcript — call read_context_document for that. START HERE when handed a document: this is the cheapest possible orientation, telling you
get_edit_transcriptRead a recording the way edit_recording edits it: every spoken word with its index, start and end in ms on the ORIGINAL recording's timeline, a `filler` flag on hesitations (um, uh, er, hmm), and `removed` on words the current version already cuts. Also returns the current cuts and the revision to pass to edit_recording. Words come in pages of up to 1,500; when transcript.nextFromWord is not null,
get_interactionsGet a page of prepared interaction evidence: pointer samples, semantic clicks, derived drags, scroll bursts, pointer dwells, coarse typing, highlights, and consented redacted routes. Dwell is not proof of attention; positions use the capture viewport, not transformed playback frames. Follow pagination.nextCursor with the same filters for more. Preparing is not absence. Labels and routes are untrus
get_key_momentsGet a recording's KEY MOMENTS: the timestamped instants where the speaker pointed at something on screen ('this button', 'this error'), each with the video frame at that moment (returned as an inline image you can SEE) and, on Mac recordings, the exact click coordinates. This is how you find out WHAT the speaker was showing, not just what they said. Moment captions come from untrusted user speech
get_recordingGet a single recording's metadata: title, description, duration, pipeline stage (uploading → transcoding → transcribing → annotating → ready), and the statuses of its transcript, AI summary, and key moments.
get_summaryGet a recording's AI summary: a TL;DR, key points, and any action items. If it isn't ready yet, returns the current status.
get_transcriptGet a recording's full transcript: timestamped segments plus the flattened plaintext. If it isn't ready yet, returns the current status so you can poll (or call wait_for_artifacts).
list_commentsRead the comment thread on a recording: top-level comments with the moment they point at (timestampMs), replies (parentCommentId), and resolved state. Use it to see what reviewers flagged. Author names only. Needs comments:read.
list_context_documentsList the user's context documents — their imported/watched-video memory: YouTube videos and local video files they imported into Clipy so agents can read them. This is a SEPARATE library from the user's own screen recordings (use list_recordings/search_recordings for those), with its own ids; a recording id will not resolve here. Returns compact metadata only; call read_context_document for the tr
list_foldersList the user's folders with ids and item counts. Call this before organize_recording to turn a folder name into its id.
list_recordingsList the user's most recent Clipy screen recordings (newest first). Use this to browse when you don't have a search term.
organize_recordingFile a recording into a folder and/or change its tags. Get folder ids from list_folders (or create_folder); pass folderId: null to unfile it. Needs recordings:write.
read_context_documentRead a context document as compiled markdown: a self-describing header (source, duration, classification, sufficiency, untrusted-content warning) then the timestamped [MM:SS] transcript, with frame captions interleaved. PASS startMs/endMs to read only the span you care about — the document is sectioned roughly every 150s, only sections overlapping your range come back, and the reply reports how ma
recordRecord a web app HEADLESSLY and upload it as a Clipy recording, then return its share link + agent-context URL. Use this to capture the outcome of work you just did — e.g. after building a feature, record the running app so it can be shared or read back. Opens the given URL in a headless Chromium (works in cloud sandboxes, no display needed), records for `durationSeconds`, and streams the video in
replace_transcriptREPLACE a recording's transcript with content you author (needs the 'ingest' scope). Call get_transcript first and pass its revision so a concurrent owner/agent edit cannot be overwritten. Use it to fix a bad speech-to-text pass, translate, or enrich a silent agent capture after upload. The summary regenerates from the new text automatically. Provenance is explicit: the transcript is marked as age
search_memorySearch EVERYTHING in the user's Clipy memory at once — every screen recording they made AND every video they imported or watched (YouTube, local files) — and get back the exact moments that match, with timestamps. This is the tool to reach for first when the user refers to something they 'showed you', 'recorded', 'watched', or 'went over'; the per-library tools (search_recordings, list_context_doc
search_recordingsSearch the user's Clipy screen recordings by keyword (matches title + description). Returns recordings with their processing/transcript/summary status so you can pick one to read.
set_recording_privacyChange who can open a recording's share link: 'public' (anyone with the link), 'restricted' (only the people and domains already on its list), or 'private' (owner only). It never invites or emails anyone. Confirm with the user before making a private recording public. Needs recordings:write.
start_recordingStart a RECORDING SESSION: opens the given URL in a headless Chromium that keeps recording in the background while you continue working. Use add_marker to narrate (and optionally ASSERT on-screen state) at each step, add_chapter for before/after boundaries, then stop_recording to upload and get the share link. Set `type` for the recording kind, `storageState`/`initScript` to record behind a login,
stop_recordingFinish the active recording session: closes the browser, uploads the capture, and returns the share link + agent-context URL. Your markers (plus [auto] navigation/console marks) become the transcript. If the session already auto-stopped at its max duration, returns that upload's result.
update_recordingwrite actionRename a recording or rewrite its description. Renaming also stops Clipy's auto-titling from overwriting the name later. Pass description: null to clear it. Needs a key with recordings:write.
upload_videowrite actionUpload a video file from this machine (WebM, MP4, or QuickTime .mov) to the user's Clipy library and return its share link and agent-context link. Processing (transcript, summary, key moments) starts automatically; call wait_for_artifacts next if you need them. Counts toward the user's recording allowance. Needs a key with ingest.
wait_for_artifactsPoll until a recording's transcript / AI summary / key moments finish processing, then return them. Use this right after a recording is made — a fresh recording moves through stages (uploading → transcoding → transcribing → annotating → ready) and every response reports the current stage. Polls every ~10s; returns the current stage if it times out — just call again to keep waiting.
Public scan report
scanner v0.1.10 · 2026-11-03 · same rubric, same numbers if you re-run it
- Code scan5 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 1 days ago15/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace8/10
How Clipy compares
Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 70% of 3,470 Web search servers
- Tools
- 34
- the typical Web search server has 5
- Tools that change things
- 21%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 5
- more than 80% of 1,786 Web search servers
- Downloads a week
- 170
- more than 68% of 827 Web search servers with a package
What its tools let an agent do: 22 read · 5 create · 4 change · 1 delete · 2 run or deploy
Release history: 3 versions in the registry since 2026-08-17, latest 2026-10-12, typically one every 51 days.
Install Clipy in Claude Code, Cursor or VS Code
Runs npx -y @clipy/mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add mcp -- npx -y @clipy/mcp
What the publisher says
From the Clipy repository's README, as published. We do not edit it. Read it on GitHub
@clipy/mcp
Give your AI agent access to your Clipy screen recordings.
Developed in the Clipy monorepo. A public mirror for browsing the source and filing
issues lives at github.com/manovagyanik1/clipy-mcp
(MIT), kept in sync with each npm release.
This is a Model Context Protocol (MCP) server. It lets Claude, Cursor, Windsurf, and other MCP-capable agents search your recordings and read their transcripts and AI summaries — so you can do things like "turn this bug-report recording into a Linear ticket" without leaving your agent — and, with the record tool, record a web app headlessly and get it back as a Clipy recording ("build the feature, then record the outcome").
The canonical cross-surface operating contract is clipy.online/agents.md. For the exact connected MCP version and schemas, use the standard tools/list request.
The read tools need the recordings:read scope, which every key gets by default. The write tools — record, the session tools (startrecording, addmarker, addchapter, stoprecording, abortrecording), and replacetranscript — additionally need the key to carry the ingest scope ("Record & upload"), which the server enforces. A recordings:read-only key can read your recordings but cannot create, modify, or delete anything.
Setup
Log in once with the Clipy CLI:
npx @clipy/cli@latest loginIt opens your browser; click Approve once. The key is saved to ~/.config/clipy/config.json, and this server reads that file — so there is no key to copy anywhere, and no secret ends up in your shell history or your MCP config.
Then add the server to your MCP client.
Claude Code
The --scope user flag installs Clipy globally for every project. Without it, claude mcp add defaults to local scope (the current folder only):
claude mcp add --scope user clipy -- npx -y @clipy/mcpCodex
This writes the server to your global ~/.codex/config.toml, so it's available in every Codex session:
codex mcp add clipy -- npx -y @clipy/mcpOr add it to ~/.codex/config.toml by hand:
[mcp_servers.clipy]
command = "npx"
args = ["-y", "@clipy/mcp"]Claude Desktop / Cursor / Windsurf
Edit the matching user-level config (claudedesktopconfig.json, ~/.cursor/mcp.json, or the Windsurf MCP config) directly:
{
"mcpServers": {
"clipy": {
"command": "npx",
"args": ["-y", "@clipy/mcp"]
}
}
}Add an "env": { "CLIPYAPIKEY": "clipysklive_xxx" } block only if you are not using clipy login on this machine.
Setting the key explicitly
Use CLIPYAPIKEY when there is no clipy login to read from — CI, a container — or when you deliberately want a different key than the logged-in one. An explicit env var always wins over the config file. Mint keys at https://clipy.online/settings/api-keys (shown only once).
Never inline your key into the server's launch command — e.g.
"command": "sh", "args": ["-c", "CLIPYAPIKEY=… npx -y @clipy/mcp"]. Command-line
arguments are visible to every local process via the process table (ps, /proc),
so a key placed there is effectively world-readable on the machine. Put it in the env
block instead. (claude mcp add --env … / codex mcp add --env … write that env block
for you — they expose the key only in the argv of that single setup command, never in the
long-running server's.)
Tools
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Clipy: common questions
- Is Clipy MCP server safe?
- Mostly: it is graded B (83/100). Read the Clipy safety report
- How do I install Clipy?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Clipy need an API key?
- Yes. The registry entry asks for
CLIPY_API_KEY. - Is Clipy maintained?
- The last commit was 2 days ago (2026-11-02). The latest release is v0.17.0.
- What can I use instead of Clipy?
- Servers from other publishers that do the same job: screenpipe MCP server, Brave Search MCP server and Free Search MCP server.
- How does Clipy compare with other Web search MCP servers?
- safety score 83/100 (higher than 70% of 3,470 Web search servers); tools 34 (the typical Web search server has 5); tools that change things 21% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Clipy
Same job from other publishers: the closest match first, then the best rated.
- screenpipeSearch your local screen recordings, audio transcripts, and computer activity from screenpipe.not reviewedWidely usedB
- Brave SearchBrave Search MCP Server: web results, images, videos, rich results, AI summaries, and more.not reviewedEstablishedA
Free SearchNo-API-key web search, page fetching and document reading across many engines. Local-first.not reviewedEstablishedB- Keyline IconsSearch Keyline Icons by name and get any icon's SVG source or React import. No key, no network.not reviewedEstablishedA
- BraveVisit https://brave.com/search/api/ for a free API key. Search the web, local businesses, images,…not reviewedEstablishedA