Playwright HTML Render

Playwright HTML Render

Enables HTML page analysis, verification, and automated correction using Playwright for rendering and Mistral AI for visual inspection. Captures screenshots, analyzes renders against specifications, and generates fixes for HTML issues.

Category
Visit Server

README

MCP Server - Playwright HTML Render

This project exposes HTML analysis and correction capabilities via the MCP (Model Context Protocol).

๐Ÿš€ Installation

npm install

Make sure you have configured your Mistral API key in a .env file:

MISTRAL_API_KEY=your-api-key

๐Ÿ“– Usage

Option 1: Using with npx (No Installation Required)

You can use this MCP server directly with npx without cloning the repository:

npx github:gplanchat/server-playwright

The MCP server communicates via stdio (standard input/output), allowing MCP clients to connect to it.

Note: Make sure you have the MISTRAL_API_KEY environment variable set, or create a .env file in your current directory.

Option 2: Local Installation

If you've cloned the repository:

npm install
npm run mcp

Configuration for Cursor

To use this MCP server with Cursor, add the following configuration to your Cursor settings:

  1. Open Cursor settings
  2. Search for "MCP" or "Model Context Protocol"
  3. Add the following configuration:

Using npx (Recommended):

{
  "mcpServers": {
    "playwright-html-render": {
      "command": "npx",
      "args": ["-y", "github:gplanchat/server-playwright"],
      "env": {
        "MISTRAL_API_KEY": "your-api-key"
      }
    }
  }
}

Using local installation:

{
  "mcpServers": {
    "playwright-html-render": {
      "command": "node",
      "args": ["/path/to/server-playwright/src/mcp-server.js"],
      "env": {
        "MISTRAL_API_KEY": "your-api-key"
      }
    }
  }
}

Note:

  • For npx usage, the -y flag automatically accepts the package installation prompt
  • For local installation, replace /path/to/server-playwright with the absolute path to your project

Configuration for Claude Desktop

To use with Claude Desktop, modify the MCP configuration file (usually ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):

Using npx (Recommended):

{
  "mcpServers": {
    "playwright-html-render": {
      "command": "npx",
      "args": ["-y", "github:gplanchat/server-playwright"],
      "env": {
        "MISTRAL_API_KEY": "your-api-key"
      }
    }
  }
}

Using local installation:

{
  "mcpServers": {
    "playwright-html-render": {
      "command": "node",
      "args": ["/path/to/server-playwright/src/mcp-server.js"],
      "env": {
        "MISTRAL_API_KEY": "your-api-key"
      }
    }
  }
}

๐Ÿ› ๏ธ Available Tools

The MCP server exposes the following tools:

1. capture_html_render

Captures the render of an HTML page (screenshot, DOM, metadata).

Parameters:

  • htmlPath (required): Path to HTML file or URL
  • viewport (optional): Viewport size { width: 1920, height: 1080 }
  • fullPage (optional): Capture the entire page (default: false)

Usage example:

{
  "name": "capture_html_render",
  "arguments": {
    "htmlPath": "https://example.com",
    "viewport": { "width": 1920, "height": 1080 }
  }
}

2. analyze_html_render

Analyzes an HTML render with AI vision to detect issues.

Parameters:

  • screenshotPath (required): Path to screenshot PNG file
  • domPath (required): Path to DOM HTML file
  • metadataPath (required): Path to metadata JSON file
  • criteria (optional): Analysis criteria (default: "default")

Usage example:

{
  "name": "analyze_html_render",
  "arguments": {
    "screenshotPath": "output/example-1234567890.png",
    "domPath": "output/example-1234567890.html",
    "metadataPath": "output/example-1234567890.json",
    "criteria": "default"
  }
}

3. fix_html_render

Fixes an HTML file based on an analysis.

Parameters:

  • originalHtmlPath (required): Path to original HTML file
  • analysisPath (required): Path to analysis JSON file
  • autoApply (optional): Automatically apply corrections (default: false)

Usage example:

{
  "name": "fix_html_render",
  "arguments": {
    "originalHtmlPath": "example.html",
    "analysisPath": "output/analysis-1234567890.json",
    "autoApply": false
  }
}

4. test_and_fix_html

Tests and fixes a complete HTML render (capture + analysis + correction).

Parameters:

  • htmlPath (required): Path to HTML file or URL
  • viewport (optional): Viewport size { width: 1920, height: 1080 }
  • autoFix (optional): Automatically generate corrections (default: false)
  • criteria (optional): Analysis criteria (default: "default")

Usage example:

{
  "name": "test_and_fix_html",
  "arguments": {
    "htmlPath": "https://example.com",
    "viewport": { "width": 1920, "height": 1080 },
    "autoFix": true,
    "criteria": "default"
  }
}

5. verify_html_render

Verifies that an HTML render matches an expected detailed description or CSS specifications.

Parameters:

  • htmlPath (required): Path to HTML file or URL to verify
  • expectedDescription (required): Detailed description of expected render or CSS specifications
  • viewport (optional): Viewport size { width: 1920, height: 1080 }
  • fullPage (optional): Capture the entire page (default: false)
  • verificationType (optional): Verification type - "auto" (automatic detection), "description" (textual description), "css" (CSS specifications) (default: "auto")

Example with textual description:

{
  "name": "verify_html_render",
  "arguments": {
    "htmlPath": "https://example.com",
    "expectedDescription": "The page must contain a header with a logo on the left, a centered navigation menu with 5 links (Home, About, Services, Portfolio, Contact), and a 'Contact Us' button on the right. The header must have a white background and a height of 80px.",
    "verificationType": "description"
  }
}

Example with CSS specifications:

{
  "name": "verify_html_render",
  "arguments": {
    "htmlPath": "example.html",
    "expectedDescription": ".header { background-color: #ffffff; height: 80px; display: flex; align-items: center; justify-content: space-between; } .logo { width: 150px; height: 50px; } .nav-menu { display: flex; gap: 20px; } .nav-menu a { color: #333; text-decoration: none; }",
    "verificationType": "css"
  }
}

Response:

{
  "success": true,
  "conform": true,
  "score": 95,
  "discrepanciesCount": 1,
  "discrepancies": [
    {
      "severity": "minor",
      "property": "gap",
      "expected": "20px",
      "actual": "15px",
      "selector": ".nav-menu",
      "description": "The spacing between menu items is 15px instead of 20px",
      "suggested_fix": "Add gap: 20px; to .nav-menu"
    }
  ],
  "verificationPath": "output/verification-1234567890.md",
  "resultPath": "output/verification-1234567890.json"
}

๐Ÿงช Testing with MCP Inspector

You can test the MCP server with the official inspector:

npx @modelcontextprotocol/inspector node src/mcp-server.js

This will open a web interface to test the available tools.

๐Ÿ“ Notes

  • The MCP server uses stdio for communication, so it must be launched by an MCP client
  • Generated files are saved in the output/ folder
  • Make sure Playwright is installed: npx playwright install chromium
  • The Mistral API key is required for analysis and correction tools

๐Ÿ“š Additional Documentation

๐Ÿ”ง Troubleshooting

Server won't start

Check that:

  • Node.js 18+ is installed
  • Dependencies are installed (npm install)
  • The Mistral API key is configured

Capture errors

Make sure Playwright is installed:

npx playwright install chromium

Analysis errors

Verify that your Mistral API key is valid and you have credits available.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured