
Security News
Anthropic Identifies Biased Reasoning and Recklessness as Drivers of Claude’s PyPI Attack
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.
All-in-one MCP server for visual captures: terminal, code, browser, markdown, diffs, HTML, and PDF — via Playwright
All-in-one MCP server for visual captures.
Terminal · Code · Browser · Markdown · Diff · HTML · PDF · GIF
One server. 13 tools. Real fidelity. Zero juggling.
Generate screenshots of terminals, code, web pages, markdown, diffs, PDFs, and GIF animations — all through a single MCP server. No more juggling 4 different MCP servers for your visual capture needs.
| Tool | Description |
|---|---|
capture_terminal | Terminal output with syntax-colored prompts (auto-detects real terminal theme) |
capture_code | Syntax-highlighted code via Shiki (50+ languages, 27 themes) |
capture_browser | Full-page or viewport screenshots (uses system Chrome profile when available) |
capture_file | File → auto-detected language → highlighted screenshot |
capture_markdown | Rendered markdown as a styled document |
capture_html | Arbitrary HTML snippet rendered as image |
capture_diff | Git diffs with green additions / red deletions |
capture_pdf | URL → PDF document |
capture_batch | Batch capture multiple items in one call |
create_gif | Animated GIF from multiple screenshots |
create_sequence | Side-by-side animated sequence |
capture_to_document | Multi-section markdown document render |
snapmcp-hint | Server capability hints for MCP clients |
./captures in your current project, not an isolated directorySNAPMCP_SSRF_PROTECTION=true)# Install globally
npm install -g snapmcp
# Start the server
snapmcp
Or run a quick health check:
# Run the interactive setup wizard
snapmcp init
# Check system readiness
snapmcp doctor
# Generate test captures
snapmcp test
Add to your ~/.claude/claude.json:
{
"mcpServers": {
"snapmcp": {
"command": "npx",
"args": ["-y", "snapmcp"],
"env": {
"SNAPMCP_DIR": "./captures",
"SNAPMCP_THEME": "nord"
}
}
}
}
Add to your opencode.json:
{
"mcpServers": {
"snapmcp": {
"command": "npx",
"args": ["-y", "snapmcp"],
"env": {
"SNAPMCP_DIR": "./captures",
"SNAPMCP_FORMAT": "jpeg",
"SNAPMCP_QUALITY": "95"
}
}
}
}
Add to VS Code settings (settings.json → cline.mcpServers):
{
"mcpServers": {
"snapmcp": {
"command": "npx",
"args": ["-y", "snapmcp"],
"env": {
"SNAPMCP_DIR": "./captures",
"SNAPMCP_FORMAT": "jpeg"
}
}
}
}
docker run -i --rm \
-e SNAPMCP_DIR=/captures \
-e SNAPMCP_THEME=nord \
-v /path/to/output:/captures \
ghcr.io/reeinharddd/snapmcp
SnapMCP ships with a full CLI beyond the MCP server:
snapmcp — Start the MCP server
snapmcp init — Interactive setup wizard
snapmcp doctor — Health check for all dependencies
snapmcp test — Generate test captures (terminal + browser)
snapmcp --help — Show available tools and version
snapmcp initInteractive wizard that:
snapmcp doctorRuns 7 checks:
snapmcp testGenerates sample captures to verify everything works:
captures/test-terminal.png — terminal screenshotcaptures/test-code.png — code screenshotEnvironment variables for the MCP server:
| Variable | Default | Description |
|---|---|---|
SNAPMCP_DIR | ./captures | Output directory for captures |
SNAPMCP_THEME | auto-detected | Syntax theme (27 built-in themes + auto-detected terminal) |
SNAPMCP_FORMAT | png | Output format (png, jpeg) |
SNAPMCP_QUALITY | 90 | JPEG quality (1-100) |
SNAPMCP_PADDING | 32 | Content padding in pixels |
SNAPMCP_SHADOW | none | Drop shadow (none only; legacy values ignored) |
SNAPMCP_WINDOW_CHROME | false | macOS-style title bar frame |
SNAPMCP_BORDER_RADIUS | 0 | Window corner radius |
SNAPMCP_BADGE | false | Footer badge |
SNAPMCP_LOG_FILE | — | Audit log file path |
SNAPMCP_CHROME_EXECUTABLE | — | Path to Chrome/Chromium binary |
SNAPMCP_CHROME_CHANNEL | — | Chrome channel (stable, beta, dev, canary) |
SNAPMCP_CHROME_PROFILE | — | Chrome profile directory name |
SNAPMCP_ALLOWED_PATHS | (deny-all) | Comma-separated allowed file paths for capture_file |
SnapMCP detects your real environment for authentic captures.
Terminal auto-detection (in priority order):
| Source | Detection method |
|---|---|
| Kitty | kitty.conf (foreground, background, tab_bar_style) |
| Gnome Terminal | dconf /org/gnome/terminal/legacy/profiles:/ |
| Alacritty | alacritty.toml / alacritty.yml (colors.*) |
| WezTerm | wezterm.lua (background detection) |
| Xfce4 Terminal | xfce4/terminal/terminalrc |
| LXTerminal | lxterminal.conf |
| COLORFGBG | Environment variable fallback |
| OS Theme | gsettings dark mode detection |
Browser auto-detection (in priority order):
SNAPMCP_CHROME_EXECUTABLE env vargoogle-chrome, chromium-browser; macOS: /Applications/Google Chrome.app; Windows: %LOCALAPPDATA%\Google\Chrome)which / where PATH lookup| Feature | Description |
|---|---|
| SSRF Protection | Blocks private/internal IP ranges (opt-in via SNAPMCP_SSRF_PROTECTION=true). When enabled, blocks 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, etc. |
| File Allowlist | SNAPMCP_ALLOWED_PATHS defaults to deny-all when unset; only explicitly allowed paths can be captured |
| Path Traversal | Prevents ../ escapes, symlink traversal, and null byte injection |
| Input Limits | Max URL length 5KB, max content 1MB, max GIF frames 100 |
| Audit Log | Optional structured JSON log file with timestamped events |
| Chromium Sandbox | Sandbox availability checked at startup |
27 built-in Shiki themes:
dracula, one-dark-pro, nord, tokyo-night, catppuccin-mocha, catppuccin-latte, ayu-dark, ayu-light, vitesse-dark, vitesse-light, min-dark, min-light, poimandres, rose-pine, rose-pine-moon, rose-pine-dawn, slack-dark, slack-ochin, snazzy-light, github-dark-dimmed, github-light, one-light, solarized-light, solarized-dark, material-theme, material-theme-lighter, material-theme-ocean
captures/
├── test-terminal.png # Terminal output with real detected colors
├── test-code.png # Syntax-highlighted code
├── page.png # Full-page browser screenshot
└── output.pdf # URL converted to PDF
src/
├── index.ts — MCP server, 12 tool definitions, CLI entry
├── renderer.ts — Capture engine (terminal, code, browser, PDF, GIF)
├── config.ts — Config loader, defaults, 27 themes
├── cli.ts — CLI commands (init, doctor, test)
├── security.ts — SSRF denylist, path traversal, input limits
├── logger.ts — Audit logging (AuditEvent, log file)
├── brand.ts — Centralized brand tokens (colors, ANSI, logo)
├── terminal.ts — Real terminal detection (Kitty/Gnome/Alacritty/WezTerm)
├── browser.ts — System Chrome profile detection (8-step fallback)
├── setup-shared.ts — Shared bootstrap for interactive setup
├── document.ts — Document render engine (brand-colored)
└── gif.ts — GIF animation (gifenc + fast-png, zero deps)
git clone https://github.com/reeinharddd/snapmcp
cd snapmcp
bun install
bun run build # tsc → dist/
bun test # 240+ tests
GitHub Actions runs on ubuntu-latest, macos-latest, windows-latest — bun only, no node matrix.
MIT — see LICENSE.
FAQs
All-in-one MCP server for visual captures: terminal, code, browser, markdown, diffs, HTML, and PDF — via Playwright
The npm package snapmcp receives a total of 30 weekly downloads. As such, snapmcp popularity was classified as not popular.
We found that snapmcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.

Research
/Security News
Malicious Chrome and Firefox extensions target Axiom Trade and Padre users, stealing session tokens and wallet data.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.