Skip to main content
Glama
gplanchat
by gplanchat

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.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gplanchat/server-playwright'

If you have feedback or need assistance with the MCP directory API, please join our Discord server