Quick Media Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Quick Media Mcp (Agent Skill) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 2 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server and Chrome extensions for screen recording and screenshots, designed for Claude Code.
Claude Code
↓ MCP protocol (stdio)
quick-media-mcp server (Node.js)
↓ WebSocket (localhost:9876)
Chrome Extensions (Quick Video / Quick Screenshot)
↓ getDisplayMedia / captureVisibleTab
BrowserThe MCP server is the bridge between Claude Code and the Chrome extensions. Claude calls MCP tools (video_start, screenshot_capture, etc.), the server forwards them to the extensions via WebSocket, and the extensions use Chrome APIs to capture media.
| Package | Description | npm |
|---|---|---|
packages/server | MCP server — bridge between Claude Code and extensions | quick-media-mcp |
packages/chrome-video | Chrome extension — screen/tab recording (WebM, MP4, GIF) | - |
packages/chrome-screenshot | Chrome extension — screenshots (PNG, JPEG, WebP, GIF) | - |
git clone https://github.com/Fowerld/quick-media-mcp.git
cd quick-media-mcp
npm install
npm run buildThis builds all three packages:
packages/server/dist/ — compiled MCP serverpackages/chrome-video/dist/ — video extension ready to loadpackages/chrome-screenshot/dist/ — screenshot extension ready to loadchrome://extensionspackages/chrome-video/dist/ → select the folderpackages/chrome-screenshot/dist/ → select the folderBoth extensions should appear in the extensions list. Pin them to the toolbar for easy access.
Option A — Local path (recommended for development):
Add to ~/.claude/settings.json:
{
"mcpServers": {
"quick-media": {
"command": "node",
"args": ["/absolute/path/to/quick-media-mcp/packages/server/dist/cli.js"]
}
}
}Option B — Global install:
cd packages/server
npm install -g .
quick-media-mcp --installThis registers the server in ~/.claude/settings.json automatically. You can verify with quick-media-mcp --help.
Option C — Auto-install script:
quick-media-mcp --install # adds to Claude Code config
quick-media-mcp --uninstall # removes from Claude Code configThe extensions auto-reconnect every 5 seconds if the server is not running. You can enable MCP mode once and it persists across browser restarts.
In Claude Code, check the connection:
Use the video_status tool to check if the video extension is connected.Claude should report that the extension is connected and ready.
| Tool | Description | Parameters |
|---|---|---|
video_start | Start screen recording | resolution (auto/4k/.../240p), format (mp4/webm/gif) |
video_stop | Stop recording and save | — |
video_status | Check extension connection | — |
screenshot_capture | Take a screenshot | format (png/jpeg/webp/gif), quality (1-100), resolution (auto/720p/1080p/4k) |
screenshot_status | Check extension connection | — |
system_info | Display GPU/encoder capabilities | — |
All parameters are optional and have sensible defaults.
| Shortcut | Action |
|---|---|
Alt+Shift+V | Start/stop video recording |
Ctrl+Shift+S | Take a screenshot (toggle preview) |
Both extensions work without the MCP server for manual capture:
Ctrl+Shift+S or click the extension iconWithout the MCP server, audio capture is limited to microphone only (no system audio on Linux).
Chrome requires a user gesture to authorize screen capture (getDisplayMedia). On the first recording of a browser session:
video_startThis is a Chrome security requirement and cannot be bypassed.
On Wayland, you may need to grant screen capture permissions through your compositor. With PipeWire-based compositors (GNOME, KDE), Chrome typically handles this via the portal API.
Chrome's getDisplayMedia does not expose system audio on Linux (unlike Windows/macOS where tab audio is available). The MCP server bridges this gap using PipeWire:
pw-record and ffmpeg (native) on the hostpw-record --target=0ffmpegThis feature is under active development on the feat/pipewire-audio branch.
Recordings and screenshots are saved to Chrome's Downloads folder. The file path is returned to Claude via the MCP response, so Claude knows exactly where the file is.
The MCP server auto-detects your GPU at startup and selects the best encoder:
| GPU | Encoder | Max capability |
|---|---|---|
| NVIDIA | h264_nvenc | 4K @ 60fps |
| Intel | h264_qsv / h264_vaapi | Depends on model |
| AMD | h264_vaapi | Radeon RX: 4K, others: 1080p |
| None / fallback | libx264 (software) | 720p @ 30fps |
Use system_info in Claude Code to see what was detected on your system.
npm run build # build everything
npm run build:server # build MCP server only
npm run build:video # build video extension only
npm run build:screenshot # build screenshot extension onlyFor watch mode during development:
# In separate terminals:
cd packages/server && npm run dev # tsc --watch
cd packages/chrome-video && npm run watch # esbuild --watchAfter rebuilding an extension, go to chrome://extensions and click the reload button on the extension card (or press Ctrl+R on the card).
quick-media-mcp/
├── packages/
│ ├── server/ # MCP server (published to npm)
│ │ ├── src/
│ │ │ ├── server.ts # MCP tools + WebSocket bridge
│ │ │ ├── cli.ts # CLI entry point (start/install/uninstall)
│ │ │ ├── capabilities.ts # GPU detection + resolution presets
│ │ │ └── install.ts # Claude Code settings management
│ │ └── package.json
│ ├── chrome-video/ # Quick Video extension
│ │ ├── src/
│ │ │ ├── background.ts # Service worker, state, MCP WebSocket
│ │ │ ├── offscreen.ts # MediaRecorder (offscreen document)
│ │ │ ├── converter.ts # FFmpeg WASM (WebM → MP4/GIF)
│ │ │ ├── popup.ts/html # Extension popup UI
│ │ │ └── manifest.json
│ │ └── package.json
│ └── chrome-screenshot/ # Quick Screenshot extension
│ ├── src/
│ │ ├── background.ts # Service worker, capture logic, MCP WebSocket
│ │ ├── content.ts # Overlay UI, area selection
│ │ ├── popup.ts/html # Extension popup UI
│ │ └── manifest.json
│ └── package.json
├── docker/ # Docker setup for headless recording
├── package.json # Workspace root
└── README.mdquick-media-mcp --helplsof -i :9876npm install from the repo root (not from a package subfolder)node_modules/<all_urls> host permission must be granted (check chrome://extensions)MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.