Renders HTML in a headless browser and detects layout defects numerically (text overlap, element overflow, placeholder leftovers) without requiring baseline images. Read-only, no API key required.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
HTMLを実際にレンダリングして、レイアウトの破綻を数値で検出するMCPサーバー。
比較用のベースライン画像は要りません。いま生成したその1枚だけで判定します。
これは検査専用のツールです。 ファイルの書き換えや自動修正は一切行いません。読み取りのみで動作します。
AIにHTMLやスライドを作らせると、コードは正しいのに表示が壊れていることがあります。文字が重なる、枠からはみ出す、undefined がそのまま出る。しかし生成した本人はレンダリング結果を見ていないので気づけません。
既存のビジュアルテストツールは、ほぼすべてが**「前回の画像と比べて変わったか」**を見る回帰テストです。いま作ったばかりの1枚には、比べる相手がいません。
スクリーンショットを撮って画像認識に判断させる方法もありますが、視覚モデルは「この要素があの要素より37px右にはみ出している」といった空間的な把握を苦手としています。
このツールは画像を見ません。DOMの座標と、文字が実際に描画された矩形を実測します。 だから「なんとなく崩れている」ではなく「どの要素が何ピクセルはみ出しているか」が返ります。
npmへの公開は準備中です。現在は clone してビルドします。
⚠️ **npx playwright install chromium は必ずこのディレクトリの中で、npm install のあとに実行してください。**別の場所で実行すると、依存とは異なるバージョンの Playwright 用に Chromium が入り、起動時に Executable doesn't exist at ... エラーになります。
Linux では共有ライブラリが不足していることがあります。その場合は次を使ってください(管理者権限が必要です)。
設定ファイル claude_desktop_config.json の場所:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json次を追記します。/absolute/path/to は clone した場所に置き換えてください。
macOS の Claude Desktop は起動時にシェルのPATHを継承しないため、npx ではなく node と絶対パスで指定するのが確実です。
Chromiumを新たに入れたくない場合、既にあるChromeを使えます。
Windows / Linux では、パスを次のように置き換えてください。JSONの中では \ を \\ と2つ重ねて書きます。
C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe/usr/bin/google-chrome(または /usr/bin/chromium)設定ファイルの手編集につまずいたら、Claude Desktop に以下をそのまま貼り付けてください。
layout-doctor-mcp をセットアップしてください。
私は非エンジニアです。実行するコマンドは1つずつ提示してください。
MCPサーバーを立てなくても、動作を確認できます。
次のように出力されます。
所要時間はブラウザの起動を含むため環境によって大きく変わります。座標もフォントによって数ピクセル前後します。
ツールは layout_check の1つだけです。
path(ファイルの絶対パス)・html(文字列)・url(既定では localhost のみ)のいずれか1つと、viewport を渡します。
viewport に既定値はありません。 画面幅によって結果が変わるため、必ず明示してもらう設計にしています。スライドなら 1280×720、一般的なWebページなら 1280×800 が目安です。
| 引数 | 既定 | 説明 |
|---|---|---|
checks | element-collision 以外すべて | 実行する検査を絞り込む |
minOverlapPx / minOverlapArea | 3 / 24 | この大きさ未満の重なり・はみ出しを無視する |
allowNetwork | false | 外部への通信を許可する |
format | "text" | "json" にすると機械処理向けの出力になる |
settleMs | 0 | 遅れて描画される要素がある場合の追加待機 |
executablePath | — | 使用するChromiumのパス |
| 検査 | 深刻度 | 内容 |
|---|---|---|
placeholder-left | error | undefined / NaN / {{name}} など、値が埋まらなかった箇所 |
draft-text-left | warning | Lorem ipsum / TODO などの仮テキストの残留 |
broken-reference | error | 画像・CSS・スクリプトの参照先が存在しない |
duplicate-id | warning | id の重複 |
viewport-overflow | error | 要素が画面外へはみ出している |
horizontal-scroll | error | 文書幅が画面を超え、横スクロールが発生する |
container-overflow | warning | 子要素が親コンテナからはみ出している |
content-clipped | error | overflow:hidden で内容が切り取られ、読めなくなっている |
text-overlap | error | 文字同士が重なって読めない |
invisible-text | warning | 文字色と背景色が同一、または font-size がゼロ |
element-collision | warning | 要素同士の重なり(既定では無効) |
text-overlap についてこのツールの中心となる検査です。要素の枠(ボックス)同士の重なりは、バッジやオーバーレイなど意図的なデザインであることが多く、そのまま報告すると誤検出だらけになります。
そこで、要素ではなく文字が実際に描画された矩形同士の交差だけを見ます。文字と文字が重なっているなら、それはほぼ確実に不具合だからです。
さらに、同じ行に並ぶ単語同士(隣り合う <span> など)は同じブロック内として除外し、overflow:hidden で切り取られて画面に出ていない文字も判定から外しています。
element-collision が既定で無効な理由要素同士の重なりは、意図的な重ね置きと本当の不具合を機械的に区別できません。誤検出でツール全体の信頼を落とすより、必要な人だけが有効にする形を選びました。checks に明示的に含めると実行されます。
このツールは、作者の他のMCPサーバー(jp-dates など)が守っている「完全オフライン・依存ゼロ」の方針から意図的に外れています。
レイアウトの破綻は、実際にレンダリングしなければ分かりません。Playwright と Chromium への依存はその代償です。導入がやや重くなる代わりに、推測ではなく実測を返します。
代わりに次を守っています。
allowNetwork: true を指定しない限り、localhost 以外へ通信しません。検査対象のHTMLが外部へリクエストを飛ばすこともありませんlayout_check の1本に絞り、詳細はこのREADMEに置いています各所見には verdict が付きます。
static — レンダリング結果を見るまでもなく確定している問題(プレースホルダの残留など)candidate — 座標上は検出したが、人間の目に見えるかは未判定candidate には、透明な要素同士の重なりのように「座標は重なっているが実際には見えない」ものが混ざりえます。この切り分け(レンダリング結果を用いた可視性の確認)は v0.5 で追加予定です。
デザインの良し悪し、コントラスト比などのアクセシビリティ全般、前回との差分(ビジュアル回帰)、複数幅にわたるレスポンシブ検査は対象外です。詳しくは「使わない方がいい場合」を参照してください。
同じ入力なら常に同じ結果を返すため、測定前に次を行っています。
allowNetwork: true で解除)npx playwright install --with-deps chromium で導入されます)LAYOUT_DOCTOR_CHROMIUM には Chromium のほか、製品版の Google Chrome や Microsoft Edge も指定できます(いずれも Chromium 系のため、Playwright の CDP で制御できます)。ただし動作確認は Playwright 同梱の Chromium で行っています。
検査項目の分類と、DOM座標だけでは人間に見えない問題まで拾ってしまうという知見は、以下の研究に基づいています。論文の記述を参照した独自実装であり、これらのツールのコードは使用していません。
テスト50件が通ります(geometry.test.ts 28件 / static.test.ts 22件)。検査項目ごとに「破綻を検出できること」と「意図的なデザインを誤検出しないこと」を対にして確認しています。
overflow: hidden で隠れたテキストは重なりとみなさないMIT
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/h-kazuki-pixel-layout-doctor-mcp)<a href="https://allmcps.com/mcp/h-kazuki-pixel-layout-doctor-mcp"><img src="https://allmcps.com/api/badge/h-kazuki-pixel-layout-doctor-mcp?style=directory" alt="Layout Doctor MCP on AllMCPs" /></a>