snapmcp について
snapmcpは、ターミナル、コード、ブラウザページ、ドキュメントを画像化するMCPサーバーです。エージェントやドキュメント作成向けに、ブラウザ操作ではなく画像、PDF、差分、アニメーションの生成ツールを提供します。
主な機能
- 01検出した配色でターミナル出力を撮影
- 02コードやファイルのシンタックスハイライト表示
- 03ブラウザページとHTMLのキャプチャ
- 04MarkdownのレンダリングとPDF作成
- 05差分、GIF、一括キャプチャの生成
- 06SSRF防止とファイルパス許可リスト
活用シーン
- 01セットアップガイドへの端末・コード画像の追加
- 02変更前後のキャプチャによるUI変更の記録
- 03端末配色を反映したCLIチュートリアルの作成
MCP 対応
端末出力、コード、ブラウザページ、ドキュメント、差分、PDF、GIF、シーケンスを扱う13のMCPツールを公開します。Claude Code、OpenCode、VS Code/ClineなどのMCPクライアントに設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y snapmcpSNAPMCP_DIROutput directory for capturesSNAPMCP_THEMEShiki syntax highlighting theme (27 built-in themes, auto-detected terminal theme when unset)SNAPMCP_FORMATOutput image format: png or jpegSNAPMCP_QUALITYJPEG quality (1-100, only used for JPEG)SNAPMCP_SHADOWDrop shadow level: none, soft, medium, strongSNAPMCP_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: trueSNAPMCP_CHROME_EXECUTABLEPath to a system Chrome/Chromium binary to use for browser capturesSNAPMCP_CHROME_PROFILEChrome profile directory to use for browser captures (persistent context)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| lines | array | はい | レンダリングする行。「$ 」のプレフィックスはコマンドプロンプトを表し、それ以外は出力を表します |
| title | string | はい | ターミナルのタイトルバーに表示するウィンドウタイトル |
| output | string | いいえ | 出力ファイル名(デフォルト:自動生成) |
詳細
ビジュアルドキュメント用 MCP サーバー。
ターミナル · コード · ブラウザー · Markdown · 差分 · HTML · PDF · GIF
ドキュメント作成ワークフロー向け — 構造化スナップショットだけでは不十分な場合に。
実際のターミナルカラー、Shiki によるコードのハイライト、ビジュアル差分、PDF、GIF — 1 つの MCP サーバーに 13 個のツールを搭載しています。システムの Chrome でレンダリングするか、初回セットアップ時に Chromium を自動インストールします。SSRF 保護はデフォルトで有効です。ブラウザーを操作するだけでなく、ドキュメントを作成するエージェント向けに構築されています。
クイックスタート
2 分以内で完了する 3 つのステップです。
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. キャプチャ
エージェントに自然言語で依頼します。
「
git log --oneline -5のターミナル画面と、構文ハイライト付きのsrc/index.tsの PNG をキャプチャしてください。」
エージェントは 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 の構文ハイライト) | ![]() |
| 差分(緑/赤) | ![]() |
Playwright MCP と snapmcp の違い
用途に応じて異なるツールを使います。Playwright MCP はトークン効率に優れたアクセシビリティスナップショットを通じてブラウザーを操作し、snapmcp は人が読めるピクセル忠実な画像をレンダリングします。エージェントに クリック させる必要がある場合は Playwright を使います。見せる 必要がある場合は snapmcp を使います。
| 用途 | snapmcp | Playwright 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_diff | 追加を緑、削除を赤で表示する Git の差分 |
capture_pdf | URL → PDF ドキュメント |
capture_batch | 1 回の呼び出しで複数の項目をまとめてキャプチャ |
capture_gif | 複数のスクリーンショットからアニメーション GIF を作成 |
capture_sequence | 横並びのアニメーションシーケンス |
capture_document | キャプチャを埋め込んだドキュメント(MD/HTML/PDF)を作成 |
snapmcp-hint | MCP クライアント向けのサーバー機能に関するヒント |
ユースケース
ドキュメントの自動作成 — エージェントがセットアップガイドを作成し、実際のキャプチャを埋め込みます。インストールコマンドのターミナル出力(実際のテーマを使用)、構文ハイライト付きの設定ファイル、移行の差分などです。1 つのプロンプトで capture_* を 3 回呼び出し、画像を Markdown ファイルの隣に保存します。
ビジュアル QA — UI の変更後、エージェントが capture_browser で対象ページをキャプチャし、capture_batch で変更前と変更後をまとめ、capture_gif で PR の説明に使うアニメーション比較を作成します。
ターミナルガイド — 読者が実際に見る画面と一致させる必要がある CLI チュートリアルでは、capture_terminal が汎用的な暗い四角形ではなく、実際のプロンプトの色を再現します。
セキュリティ
SSRF 保護はデフォルトで有効です。有効化するための追加設定は不要です。
| 機能 | 説明 |
|---|---|
| SSRF 保護 | デフォルトで有効です(SNAPMCP_SSRF_PROTECTION=false で無効化)。IP リテラル(v4 + v6)、localhost の各種表記、プライベート範囲(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7、fe80::/10 など)に解決される DNS 名をブロックします。リダイレクトを含むすべてのページリクエストを再チェックします |
| ファイル許可リスト | 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_FORMAT | png | 出力形式(png、jpeg) |
SNAPMCP_QUALITY | 90 | JPEG 品質(1~100) |
SNAPMCP_PADDING | 32 | コンテンツのパディング(ピクセル) |
SNAPMCP_SHADOW | none | ドロップシャドウ(none、soft、medium、strong。エイリアスは sm/md/lg) |
SNAPMCP_WINDOW_CHROME | false | macOS 風のタイトルバーフレーム |
SNAPMCP_BORDER_RADIUS | 0 | ウィンドウの角丸半径 |
SNAPMCP_BADGE | false | フッターバッジ |
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 で許可するファイルパス(カンマまたはセミコロン区切り) |
Shiki の組み込みテーマ27種類: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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。


