mcpField
S
snapmcp

snapmcp

本地服务
github.com/reeinharddd开发工具02 周前更新

关于 snapmcp

snapmcp 是用于生成终端、代码、浏览器页面和文档图像的 MCP 服务,面向 Agent 和文档工作流。它提供图像、PDF、差异图和动画捕获工具,侧重渲染展示而非浏览器交互。

主要功能

  1. 01按检测到的配色捕获终端输出
  2. 02渲染语法高亮代码和文件
  3. 03捕获浏览器页面及 HTML
  4. 04渲染 Markdown 并生成 PDF
  5. 05生成差异图、GIF 和批量捕获
  6. 06默认启用 SSRF 防护和文件路径白名单

适用场景

  1. 01为安装指南添加终端和代码图片
  2. 02用前后对比捕获记录界面变更
  3. 03制作保留终端配色的 CLI 教程

MCP 相关

它提供 13 个 MCP 工具,用于捕获和渲染终端输出、代码、浏览器页面、文档、差异图、PDF、GIF 和序列。可配置给 Claude Code、OpenCode 和 VS Code/Cline 等 MCP 客户端使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"reeinharddd-snapmcp": {
"command": "npx",
"args": [
"-y",
"snapmcp"
],
"env": {
"SNAPMCP_DIR": "<SNAPMCP_DIR>",
"SNAPMCP_THEME": "<SNAPMCP_THEME>",
"SNAPMCP_FORMAT": "<SNAPMCP_FORMAT>",
"SNAPMCP_QUALITY": "<SNAPMCP_QUALITY>",
"SNAPMCP_SHADOW": "<SNAPMCP_SHADOW>",
"SNAPMCP_ALLOWED_PATHS": "<SNAPMCP_ALLOWED_PATHS>",
"SNAPMCP_SSRF_PROTECTION": "<SNAPMCP_SSRF_PROTECTION>",
"SNAPMCP_CHROME_EXECUTABLE": "<SNAPMCP_CHROME_EXECUTABLE>",
"SNAPMCP_CHROME_PROFILE": "<SNAPMCP_CHROME_PROFILE>"
}
}
}
}
启动命令npx -y snapmcp
需要配置的环境变量
SNAPMCP_DIROutput directory for captures
SNAPMCP_THEMEShiki syntax highlighting theme (27 built-in themes, auto-detected terminal theme when unset)
SNAPMCP_FORMATOutput image format: png or jpeg
SNAPMCP_QUALITYJPEG quality (1-100, only used for JPEG)
SNAPMCP_SHADOWDrop shadow level: none, soft, medium, strong
SNAPMCP_ALLOWED_PATHSComma- or semicolon-separated allowlist of file paths readable by capture_file (deny-all when unset)
SNAPMCP_SSRF_PROTECTIONBlock requests to private IP ranges (DNS-resolved, IPv4 + IPv6). Default: true
SNAPMCP_CHROME_EXECUTABLEPath to a system Chrome/Chromium binary to use for browser captures
SNAPMCP_CHROME_PROFILEChrome profile directory to use for browser captures (persistent context)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsnapmcp2.3.2

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
linesarray是要渲染的行。「$ 」前缀表示命令提示符,其他内容表示输出
titlestring是终端标题栏中显示的窗口标题
outputstring否输出文件名(默认:自动生成)

详细介绍

snapmcp

用于可视化文档的 MCP 服务。
终端 · 代码 · 浏览器 · Markdown · 差异 · HTML · PDF · GIF
面向文档工作流——适用于结构化快照无法满足需求的场景。

npm 版本 npm 下载量 测试 星标 MIT


真实终端配色、Shiki 代码高亮、可视化差异、PDF 和 GIF——一个 MCP 服务,提供 13 种工具。使用系统 Chrome 渲染,或在首次设置时自动安装 Chromium。默认启用 SSRF 防护。专为编写文档的 Agent 打造,而不只是驱动浏览器。

快速开始

三个步骤,不到两分钟:

1. 安装

npm install -g snapmcp
# or run without installing: npx -y snapmcp

2. 添加到 Claude Code(~/.claude/claude.json)

{
  "mcpServers": {
    "snapmcp": {
      "command": "npx",
      "args": ["-y", "snapmcp"],
      "env": {
        "SNAPMCP_DIR": "./captures",
        "SNAPMCP_THEME": "nord"
      }
    }
  }
}

3. 捕获

用自然语言向 Agent 提出请求:

“捕获 git log --oneline -5 的终端截图,以及 src/index.ts 的语法高亮 PNG。”

Agent 会调用 capture_terminal 和 capture_file——图像会保存到 ./captures/,并应用真实的终端主题和所选的语法主题。

其他客户端:OpenCode、VS Code / Cline、Docker

OpenCode(opencode.json):

{
  "mcpServers": {
    "snapmcp": {
      "command": "npx",
      "args": ["-y", "snapmcp"],
      "env": {
        "SNAPMCP_DIR": "./captures",
        "SNAPMCP_FORMAT": "jpeg",
        "SNAPMCP_QUALITY": "95"
      }
    }
  }
}

VS Code / Cline / Roo-Cline(settings.json → cline.mcpServers):

{
  "mcpServers": {
    "snapmcp": {
      "command": "npx",
      "args": ["-y", "snapmcp"],
      "env": {
        "SNAPMCP_DIR": "./captures",
        "SNAPMCP_FORMAT": "jpeg"
      }
    }
  }
}

Docker:

docker run -i --rm \
  -e SNAPMCP_DIR=/captures \
  -e SNAPMCP_THEME=nord \
  -v /path/to/output:/captures \
  ghcr.io/reeinharddd/snapmcp

效果展示

捕获内容预览
终端(自动检测真实配色)终端捕获
代码(Shiki 语法高亮)代码捕获
差异(绿色/红色)差异捕获

为什么选择 snapmcp,而不是 Playwright MCP

不同的任务需要不同的工具。Playwright MCP 通过节省令牌的无障碍快照驱动浏览器;snapmcp 则渲染像素级还原的图像,供人阅读。如果 Agent 需要点击,就用 Playwright;如果需要展示,就用 snapmcp。

使用场景snapmcpPlaywright MCP
使用真实配色捕获终端✅ 自动检测 Kitty、Gnome、Alacritty、WezTerm 主题❌ 不支持终端
代码 → 语法高亮图像✅ Shiki,支持 50 多种语言和 27 种主题❌ 非其用途
Git 差异 → 红绿可视化图像✅ capture_diff❌
URL → PDF 文档✅ capture_pdf❌
从捕获内容生成动画 GIF✅ capture_gif(零依赖 gifenc)❌
Markdown → 样式化文档✅ capture_markdown、capture_document❌
浏览器页面截图✅ capture_browser(整页或视口)✅
浏览器自动化(点击、填写、导航)❌ 仅支持截图✅ 由无障碍树驱动,节省令牌——这才是合适的工具

大多数文档流水线会将两者搭配使用:用 Playwright MCP 交互,用 snapmcp 记录。

工具

工具描述
capture_terminal带语法着色提示符的终端输出(自动检测真实终端主题)
capture_code通过 Shiki 生成语法高亮代码(支持 50 多种语言和 27 种主题)
capture_browser全页或视口截图(如果可用,则使用系统 Chrome 配置文件)
capture_file文件 → 自动检测语言 → 高亮截图
capture_markdown将渲染后的 Markdown 生成为带样式的文档
capture_html将任意 HTML 片段渲染为图像
capture_diffGit 差异,新增内容为绿色,删除内容为红色
capture_pdfURL → PDF 文档
capture_batch一次调用批量捕获多个项目
capture_gif根据多张截图生成动画 GIF
capture_sequence并排显示的动画序列
capture_document创建包含嵌入式捕获内容的文档(MD/HTML/PDF)
snapmcp-hint为 MCP 客户端提供服务能力提示

使用场景

自动化文档 — Agent 编写设置指南并嵌入真实捕获内容:安装命令的终端输出(采用你的实际主题)、语法高亮的配置文件,以及迁移的差异内容。只需一条提示词和三个 capture_* 调用,图像就会保存到 Markdown 文件旁边。

视觉 QA — UI 更改后,Agent 使用 capture_browser 捕获受影响的页面,使用 capture_batch 批量处理更改前后的截图,并使用 capture_gif 制作动画对比图,用于 PR 描述。

终端指南 — 截图必须与读者实际看到的内容一致的 CLI 教程:capture_terminal 会重现真实的提示符颜色,而不是通用的深色矩形。

安全性

默认启用 SSRF 防护,无需主动开启。

功能描述
SSRF 防护默认启用(使用 SNAPMCP_SSRF_PROTECTION=false 禁用)。会阻止 IP 字面量(v4 + v6)、localhost 变体,以及解析到私有地址段的 DNS 名称(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7、fe80::/10 等);每次页面请求(包括重定向)都会重新检查
文件允许列表未设置时,SNAPMCP_ALLOWED_PATHS 默认拒绝所有路径;只有明确允许的路径才能被捕获
路径遍历防止 ../ 越界、符号链接遍历(通过 realpath)和空字节注入
输入限制终端最多 1000 行;代码/Markdown/HTML 最大 200KB;差异内容最大 500KB;文件读取最大 5MB;GIF 帧数最多 60;GIF 画布最大 8192×8192
审计日志可选的结构化 JSON 日志文件,记录带时间戳的事件
Chromium 沙箱启动时检查沙箱是否可用

配置

MCP 服务的环境变量:

变量默认值描述
SNAPMCP_DIR./captures截图的输出目录
SNAPMCP_THEME自动检测语法主题(27 种内置主题 + 自动检测终端)
SNAPMCP_FORMATpng输出格式(png、jpeg)
SNAPMCP_QUALITY90JPEG 质量(1-100)
SNAPMCP_PADDING32内容内边距(像素)
SNAPMCP_SHADOWnone投影(none、soft、medium、strong;别名 sm/md/lg)
SNAPMCP_WINDOW_CHROMEfalsemacOS 风格标题栏边框
SNAPMCP_BORDER_RADIUS0窗口圆角半径
SNAPMCP_BADGEfalse页脚徽章
SNAPMCP_LOG_FILE—审计日志文件路径
SNAPMCP_CHROME_EXECUTABLE—Chrome/Chromium 二进制文件路径
SNAPMCP_CHROME_CHANNEL—Chrome 通道(stable、beta、dev、canary)
SNAPMCP_CHROME_PROFILE—Chrome 配置目录名称
SNAPMCP_ALLOWED_PATHS(默认全部拒绝)capture_file 可访问的文件路径,以逗号或分号分隔

27 种内置 Shiki 主题: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

CLI

SnapMCP 除 MCP 服务外,还提供完整的 CLI:

snapmcp        — Start the MCP server
snapmcp init   — Interactive setup wizard (detects Chrome, terminal theme, output dir)
snapmcp doctor — Health check: 7 checks across Node, Chromium, paths, env
snapmcp test   — Generate test captures (terminal + code) to verify the setup

文档

页面内容
快速入门安装、快速开始、MCP 客户端配置
工具参考全部 13 种工具及其参数和示例
配置所有 SNAPMCP_* 环境变量、主题和默认值
CLI 参考Init、doctor、test 命令
指南终端截图、浏览器截图、GIF 动画
ARCHITECTURE.md模块映射、数据流、安全架构
CONTRIBUTING.md开发工作流、测试指南、PR 检查清单

开发

git clone https://github.com/reeinharddd/snapmcp
cd snapmcp
bun install
bun run build    # tsc → dist/
bun test         # 317 tests

要求:Node.js ≥ 20 或 Bun ≥ 1.2。CI 通过 GitHub Actions 在 ubuntu / macOS / windows 上运行。

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。