
Clipy
online.clipy由 clipy.online 發布v0.17.0更新於 Oct 24, 2026
Read your Clipy screen recordings: search, transcripts, AI summaries, and key moments with frames.
概覽
Clipy 的本機 MCP 伺服器讓助理搜尋你的螢幕錄影、讀取逐字稿與 AI 摘要,並可無介面錄製網頁應用程式。
- 可以做什麼
- 搜尋並列出錄影與匯入的脈絡影片,支援跨兩者的語意記憶搜尋
- 讀取逐字稿、AI 摘要、關鍵時刻、互動時間軸與瀏覽器診斷資訊
- 依逐字稿編輯錄影:剪掉詞或時間區段、移除語助詞、開關點擊自動縮放
- 無介面錄製網頁應用程式,或開啟錄影工作階段並加入標記、章節與 CDP 控制
- 管理錄影:重新命名、加標籤、歸入資料夾、設定隱私、留言、查看分析、上傳或刪除
- 下載 MP4,並等待逐字稿或摘要處理完成
- 適用情境
- 適合讓助理根據你或團隊錄製、看過的內容工作,例如把一段錯誤重現的錄影整理成工單;也適合讓助理先完成功能,再把結果錄成可分享的 Clipy 影片。
- 執行需求
- 以 Node.js 套件形式透過 npx 在本機執行。驗證使用 Clipy API 金鑰:可以是 Clipy CLI 登入後存放在 ~/.config/clipy/config.json 的金鑰,或環境變數 CLIPY_API_KEY。CLIPY_API_URL 可覆寫 API 基礎位址。record 工具另需安裝 Playwright 與 Chromium,並使用具 ingest 權限的金鑰;寫入類工具需要對應權限。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Clipy,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
@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/clipy-recorder/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 your team
library, 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 (start_recording, add_marker, add_chapter,
stop_recording, abort_recording), and replace_transcript — additionally need the
key to carry the ingest scope ("Record & upload"), which the server enforces.
get_edit_transcript and edit_recording need the recordings:write scope. A recordings:read-only key can
read every recording you can open but cannot create, modify, or delete anything.
Setup
Log in once with the Clipy CLI:
It 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):
Codex
This writes the server to your global ~/.codex/config.toml, so it's available in every
Codex session:
Or add it to ~/.codex/config.toml by hand:
Claude Desktop / Cursor / Windsurf
Edit the matching user-level config (claude_desktop_config.json, ~/.cursor/mcp.json,
or the Windsurf MCP config) directly:
Add an "env": { "CLIPY_API_KEY": "clipy_sk_live_xxx" } block only if you are not using
clipy login on this machine.
Setting the key explicitly
Use CLIPY_API_KEY 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", "CLIPY_API_KEY=… 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 theenvblock instead. (claude mcp add --env …/codex mcp add --env …write thatenvblock for you — they expose the key only in the argv of that single setup command, never in the long-running server's.)
Hosted connector
You can also connect without installing anything. Clipy runs this server at
https://clipy.online/api/mcp (Streamable HTTP).
- Connector UIs such as Claude and ChatGPT sign in with OAuth. Discovery starts at
https://clipy.online/.well-known/oauth-protected-resource. - Other clients send
Authorization: Bearer <Clipy API key>. - A key with only the
recordings:readscope sees only the read tools.
For MCP directories and reviewers
Clipy keeps a demo account with three sample recordings: a bug walkthrough, UI feedback and a product demo. Directories can get a read-only test key by emailing [email protected].
Tools
Read tools accept a recording's public id (the slug in its share URL) or the full
https://clipy.online/video/<id> URL.
Who records what. These MCP tools record the browser (a headless Chromium page Clipy owns). The Clipy CLI records Mac windows, displays and the iOS Simulator (
--source mac-screen) and Linux screens (--source screen, including a private virtual display), and the Clipy Mac and Windows apps record everything else, including the real logged-in browser.
Using record
record opens a URL in a headless Chromium (works in CI / cloud sandboxes, no display),
records for a few seconds, and streams it into Clipy — then returns the id so you can call
wait_for_artifacts and get_agent_context to read it back. It needs:
- Playwright in the environment running this MCP server:
- An API key with the "Record & upload" (ingest) permission — choose it when you mint the key at clipy.online/settings/api-keys.
Parameters: url (required, http/https), durationSeconds (default 15, max 300, applied
per viewport pass), name, description, type (recording kind — bug_report,
feature_request, product_demo, walkthrough_tutorial, feedback_review,
discussion_talk, other, plus aliases), viewports (e.g. mobile,desktop or
390x844,1440x900 — recorded sequentially into one video, frame sized to the largest,
each pass slow-scrolled and auto-chaptered), storageState / initScript (paths, never
logged), notes, and width/height (default 1280×720, ignored when viewports is set).
Recording behind a login. storageState seeds exactly what its JSON contains (cookies +
localStorage) but can't reproduce a whole browser identity (IndexedDB, service workers, some
cross-origin auth). For a full identity, pass userDataDir — Chrome's user-data root
(macOS: ~/Library/Application Support/Google/Chrome) — in one of two modes:
-
Copy a named profile (recommended). Add
profileDirectory("Profile 1","Default", … — the exact folder fromchrome://version→ Profile Path). Clipy copies that profile into a temporary root and records the copy, so your real profile is never opened or modified and the copy is deleted after upload. The tool result discloses the copy (profile name, bytes, and a warning if Chrome was running while it was copied).⚠️ macOS: cookie logins may not survive the copy. Chrome encrypts cookies with the Chrome Safe Storage Keychain key; the recorder's bundled Chromium looks for Chromium Safe Storage. So on macOS a copied profile can produce a browser that looks like your identity but is silently logged out wherever the session is cookie-based —
localStorage/Preferences-based sessions still work. This is a pre-existing Playwright-vs-Chrome constraint, not something the copy introduces, and the copy disclosure repeats it. If the recording lands logged out, that's why. Record the real browser with the CLI'sclipy record --source screen, or drive your own browser and attach evidence viaadd_marker'sobserved/verdict. -
Open the
Defaultprofile directly. OmitprofileDirectory. Clipy opens the root'sDefaultprofile and writes to it, so it's refused while a live Chrome holds it locked — quit Chrome first. When the dir looks like a real Chrome root, the result carries auserDataDirWarningsaying so and pointing you atprofileDirectory(ephemeral copy) or the CLI's--source screeninstead. Prefer those unless you specifically want in-place use.
Playwright strips Chromium's
--profile-directory(it always loadsDefaultfrom whatever dir it's given), so copying is the only way to record a named profile. PointinguserDataDirat a profile subdir (.../Chrome/Default) is refused — launching from there would silently record a blank, logged-out profile.
storageState and userDataDir are mutually exclusive; profileDirectory requires userDataDir.
Check the camera before you work
record and start_recording both return a source object describing what is actually
being recorded, resolved fresh at start time — the post-redirect url, the page title,
and the recording viewport:
Compare it against the surface your driver is acting on before doing minutes of work. This exists because driver-attested evidence proves what the driver observed and nothing ties it to what the camera saw — it's entirely possible to produce truthful marks over footage of the wrong thing. Clipy will never focus or foreground a window or tab for you; pointing the driver and the camera at the same surface is the caller's job.
kind is always headless_browser here: these tools record a headless page Clipy owns.
Real application windows and displays are recorded by the Clipy CLI
(clipy record --source mac-screen --window "<app>" on a Mac, --source screen on Linux),
so no window id or window title is reported here. An empty or invented one would be exactly the kind of false confidence this
field exists to prevent.
Evidence on a marker: two provenances
add_marker can carry evidence in exactly one of two provenances — they are tallied and rendered
separately, never pooled:
Use driver-attested when your agent drives its own browser/tooling while Clipy records (e.g.
--source screen on the CLI) or when there's no Clipy-owned page to assert against. It's
weaker than clipy-verified but far stronger than plain prose. The transcript's leading
[verification] note segments the two, e.g.
[verification] 3 clipy-verified: 2 passed, 1 failed · 2 driver-attested: 2 passed, 0 failed.
Driving the recorded page over CDP (start_recording + exposeCdp: true)
Pass exposeCdp: true to start_recording and the recording browser opens a Chrome
DevTools Protocol endpoint; the result returns cdpHttpUrl + cdpUrl. Connect your own
Playwright and drive the page while Clipy records it:
It's off by default — while it's open, any local process can attach to that browser.
CLIPY_DISABLE_CDP=1 is a hard kill switch that forces it off. Gotchas: the recorded page
is contexts()[0].pages()[0] (a new context you open won't be captured); page.viewportSize()
reads null over a CDP attach; and to change the viewport use newCDPSession +
Emulation.setDeviceMetricsOverride, not setViewportSize.
In-page bridge (zero extra tool calls). When exposeCdp is on, the recorded page also
exposes window.__clipyMark(text, opts?) and window.__clipyChapter(label), so your CDP
driver can drop asserted marks/chapters from inside the page:
opts mirrors add_marker (assertSelector / assertText / assertUrl / failMode);
assertText requires assertSelector (the call rejects otherwise), and a failed assert with
failMode: "abort" discards the session — same annotations and tally as the tools.
Config
Privacy
Your key reads the recordings you can open in Clipy: your own, your team library and
Spaces, and recordings shared with you, with the same permissions as the app. Revoke it any time at
/settings/api-keys. The server runs locally on your machine; your key is never sent
anywhere except to the Clipy API over HTTPS.
來源:README.md,提交 0e38d33
工具
0版本歷史
5- v0.17.0最新Oct 12, 2026
- v0.16.1Oct 7, 2026
- v0.15.1Oct 5, 2026
- v0.15.0Oct 4, 2026
- v0.13.1Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分