mcpField
S
snapmcp

snapmcp

ローカル
github.com/reeinharddd開発ツール02 週間前に更新

snapmcp について

snapmcpは、ターミナル、コード、ブラウザページ、ドキュメントを画像化するMCPサーバーです。エージェントやドキュメント作成向けに、ブラウザ操作ではなく画像、PDF、差分、アニメーションの生成ツールを提供します。

主な機能

  1. 01検出した配色でターミナル出力を撮影
  2. 02コードやファイルのシンタックスハイライト表示
  3. 03ブラウザページとHTMLのキャプチャ
  4. 04MarkdownのレンダリングとPDF作成
  5. 05差分、GIF、一括キャプチャの生成
  6. 06SSRF防止とファイルパス許可リスト

活用シーン

  1. 01セットアップガイドへの端末・コード画像の追加
  2. 02変更前後のキャプチャによるUI変更の記録
  3. 03端末配色を反映したCLIチュートリアルの作成

MCP 対応

端末出力、コード、ブラウザページ、ドキュメント、差分、PDF、GIF、シーケンスを扱う13のMCPツールを公開します。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 version npm downloads tests stars MIT


実際のターミナルカラー、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 を使います。

用途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_codeShiki による構文ハイライト付きコード(50 以上の言語、27 のテーマ)
capture_browserページ全体またはビューポートのスクリーンショット(利用可能な場合はシステムの Chrome プロファイルを使用)
capture_fileファイル → 言語を自動検出 → ハイライト付きスクリーンショット
capture_markdownスタイル付きドキュメントとしてレンダリングした Markdown
capture_html任意の HTML スニペットを画像としてレンダリング
capture_diff追加を緑、削除を赤で表示する Git の差分
capture_pdfURL → PDF ドキュメント
capture_batch1 回の呼び出しで複数の項目をまとめてキャプチャ
capture_gif複数のスクリーンショットからアニメーション GIF を作成
capture_sequence横並びのアニメーションシーケンス
capture_documentキャプチャを埋め込んだドキュメント(MD/HTML/PDF)を作成
snapmcp-hintMCP クライアント向けのサーバー機能に関するヒント

ユースケース

ドキュメントの自動作成 — エージェントがセットアップガイドを作成し、実際のキャプチャを埋め込みます。インストールコマンドのターミナル出力(実際のテーマを使用)、構文ハイライト付きの設定ファイル、移行の差分などです。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_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 で許可するファイルパス(カンマまたはセミコロン区切り)

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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。