Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

pixelpact

by jamalkamaladdinversion 0.1.6i★ –iRuns on your computer
Registry nameio.github.jamalkamaladdin/pixelpact

Install

Overview

Description from the maker (original English)

Extract a visual contract from a reference page and measure an implementation against it

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "pixelpact": {
      "command": "npx",
      "args": [
        "-y",
        "pixelpact-mcp"
      ]
    }
  }
}

Run this in your terminal

claude mcp add pixelpact -- npx -y pixelpact-mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "pixelpact": {
      "command": "npx",
      "args": [
        "-y",
        "pixelpact-mcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "pixelpact": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "pixelpact-mcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account jamalkamaladdin, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32589 servers in this category
  • Published to the registry more recently than 34% of the other 32589 servers in this category
  • Basic checks equal to or better than 100% of the other 32589 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is pixelpact safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.6) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Detailing Manager

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated yesterday
Install

Detailing Manager

by RadoslavMoshev

Connect your auto detailing studio's tasks, cars, clients and revenue to Claude or ChatGPT.

Runs on your computerUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Your coding agent cannot see the page it just built. pixelpact measures it against the reference and hands back numbers.

A coding agent writes the CSS and says it is done. It never sees the result. Nothing hands it a number, so the loop cannot close: the agent guesses, you open the page, you send it back, it guesses again. Every round costs you the one thing the agent was supposed to save.

The same gap exists without an agent, when a teammate says a section is finished and nobody in the room has a measurement. The difference is that a person can at least look.

pixelpact reads the reference page and writes down what it actually renders: sizes, colors, spacing, typography, hover and focus states, animation keyframes, design tokens. That file is the contract. Point pixelpact at the implementation and it answers with one line per property that drifted, which is precisely what an agent can act on.

npx pixelpact extract https://reference.example.com -o contract.json

npx pixelpact check contract.json http://localhost:3000

Works with

MCP clientsPlaywrightGitHub ActionsAny frameworkFigma
Claude Code, Cursor, anything that speaks stdio MCPthe engine it drivesone comment on the pull requestit reads the DOM, not your stacka frame as the reference, when you want one

*If a browser can render it, pixelpact can measure it.*

For coding agents

An agent that writes UI code cannot tell whether it succeeded. pixelpact-mcp gives it the measurement, so the loop closes without a person in the middle: extract the contract once, then let the agent check its own work, read the deviation list, fix, and check again.

// .mcp.json

{ "mcpServers": { "pixelpact": { "command": "npx", "args": ["-y", "pixelpact-mcp"] } } }

Tools exposed: extract_contract, check_implementation, diff_pixels, read_contract_summary.

Why this is not visual regression testing

Percy, Chromatic, Applitools, BackstopJS and Pixeleye all compare your page against a baseline that you approved earlier. That model works once the page already looks right and you want to keep it that way. While you are still building toward a design, there is no baseline to compare with, and the first run of a regression tool simply records whatever you produced.

Visual regression toolspixelpact
Compares againsta snapshot you approved earlierthe reference design itself
Useful whenthe UI is already correctthe UI is being built
First run on a new pagerecords, cannot judgemeasures against the reference
Answer you getan image diff to inspect by eyea value per property, with a delta
Fits an autonomous agentneeds a human to approve the diffthe numbers close the loop

The two models are complementary. Use a regression tool to keep a finished page finished, and pixelpact to get it finished in the first place.

Problems pixelpact solves

Without pixelpactWith pixelpact
❌ A coding agent writes CSS, declares it done, and a person has to open the page to find out that it is not.✅ The agent calls the MCP server, reads the deviations, fixes them and checks again. No person in the middle.
❌ Someone says the section is finished, you disagree, and neither of you has a number. The louder opinion wins.✅ Every value in the reference is asserted against your page. What failed is listed with expected, actual and the difference.
❌ A regression tool has nothing to compare a brand new page against, so its first run records whatever you happened to build.✅ The reference is the baseline from the first minute. Nothing has to be approved before the tool is useful.
❌ Hover, focus and animation values are almost never reviewed, because checking them by hand is slow and boring.✅ They are part of the contract, so they are measured on every run like any other value.
❌ An image diff tells you that something changed and leaves you to hunt for what.✅ Deviations name the element, the property, the expected value and the measured one.
❌ The design lives in a file nobody opens during code review.✅ The contract is committed JSON, so a pull request shows exactly which values moved.

Install

pnpm add -D pixelpact playwright

pnpm exec playwright install chromium

playwright is a peer dependency, so the browser download stays under your control and a project that already has Playwright installs nothing extra. Node 22.12 or newer is required.

Quickstart

1. Extract the contract from the reference.

npx pixelpact extract https://reference.example.com \

--selector "main" \ --viewport desktop,mobile \ --screenshots .pixelpact/shots \ -o contract.json

2. Measure your implementation.

npx pixelpact check contract.json http://localhost:3000 --viewport desktop

3. Fix what it reports, then run it again. The command exits 0 when everything is inside tolerance and 1 when it is not, so it drops straight into a script or a CI job.

What a contract looks like

A contract is plain JSON, readable and diffable, with no proprietary format and no service behind it.

{

"version": 1, "source": { "type": "url", "value": "https://reference.example.com" }, "root": "main", "extractedAt": "2026-09-06T01:20:44.812Z", "viewports": [{ "name": "desktop", "width": 1440, "height": 900 }], "tokens": { "--brand-600": "rgb(11, 114, 133)" }, "keyframes": { "fade-up": [{ "offset": "0%", "css": "opacity: 0" }] }, "byViewport": { "desktop": { "documentHeight": 4218, "elements": [ { "selector": "main > header > a.cta", "tag": "a", "text": "Get started", "box": { "x": 120, "y": 32, "w": 148, "h": 44 }, "styles": { "background-color": "rgb(11, 114, 133)", "font-size": "16px", "border-radius": "8px" }, "hover": { "background-color": "rgb(8, 90, 105)" }, "focus": { "outline": "2px solid rgb(11, 114, 133)" } } ] } } }

Because it is a file, you can commit it, review it in a pull request, hand it to another developer, or hand it to an agent.

What a check prints

pixelpact check  FAILED

target http://localhost:4173/impl.html reference http://localhost:4173/ref.html viewport desktop 1440x900 elements 14 matched, 0 missing of 14 checks 1056 passed, 10 failed (99.1% of 1066)

deviations (10) SELECTOR PROPERTY EXPECTED ACTUAL DIFF body > main > h1 font-size 48px 44px 4px body > main > a box.width 117.75px 109.75px 8px body > main > a padding-right 24px 20px 4px body > main > a padding-left 24px 20px 4px body > main > a background-color rgb(11, 114, 133) rgb(37, 99, 235) 60.1 (color) body > main > a border-top-left-radius 8px 4px 4px body > main > a border-top-right-radius 8px 4px 4px body > main > a border-bottom-left-ra... 8px 4px 4px body > main > a border-bottom-right-r... 8px 4px 4px body > main > a focus.outline rgb(11, 114, 133) s... rgb(37, 99, 235) so... differs

That is a real run against two copies of one page with four declarations changed. Four edits produce ten measured deviations, because padding moves the box width and one border-radius shorthand sets four corners. Run the same check against the reference itself and all 1066 assertions pass, which is the property that matters: a passing check has to mean something.

Add --json to get the same report as a data structure, which is what CI jobs and agents read.

What a side by side run shows

check says which values moved. diff says how many pixels moved. Neither tells a person where to look. side splits both pages into sections, puts them next to each other, and boxes what differs.

npx pixelpact side https://reference.example.com http://localhost:3000 --widths 1440,390
#   SECTION   WIDTH   VERDICT  DIFF

01 hero 1440px PASS 0.000% 02 features 1440px FAIL 0.675% .pixelpact/side/1440/02-features.png 03 pricing 1440px PASS 0.000% 04 foot 1440px FAIL 1.265% .pixelpact/side/1440/04-foot.png

That is a real run against the two files in examples/side, which are copies of one page where the card gap and the corner radius were changed. Reproduce it with:

npx pixelpact side "file://$PWD/examples/side/reference.html" \

"file://$PWD/examples/side/implementation.html" --widths 1440

This is the command to run before telling anyone that a page is finished.

Features

Contract from the reference

Reads the page you are building toward and writes down every value it renders. Nothing to approve first. Numbers, not opinions

Each deviation carries the expected value, the measured value and the difference between them. States, not just layout

Interactive elements are hovered and focused, and only the properties that actually change are stored.

Tokens and keyframes

Custom properties on the root element and named animation keyframes travel inside the contract. Pixel comparison

When every value passes and it still looks wrong, compare the screenshots and get a percentage. Agent ready

An MCP server exposes the same measurements, so a coding agent can close its own loop.

Pull request checks

A composite Action runs the check and keeps one comment on the pull request up to date. Plain JSON

The contract is a file you can read, diff and review. No service, no account, nothing to log into. Framework agnostic

It measures the rendered DOM, so React, Vue, Svelte and hand written HTML are all the same to it.

Commands

| Command | What it does

Only the beginning is shown; read the rest in the repo

Ask PopNx