Skip to main content
Version: Current

MCP server

Happo runs an MCP server that lets AI assistants help you manage your visual-regression comparisons. With it, assistants like Claude, ChatGPT, and Cursor can list comparisons for a commit, inspect diffs, and accept, reject, or report flake on your behalf.

Your assistant already has your code and knows what each change was meant to do, so it brings the context and Happo brings the diffs. Happo never needs access to your repository.

The server uses the "Streamable HTTP" transport with OAuth 2.1 authentication, so connecting only requires a single URL. The endpoint is:

https://happo.io/api/mcp

Clients automatically discover the OAuth endpoints through /.well-known/oauth-protected-resource, so you don't need to configure tokens manually.

Available tools​

The MCP server exposes the following tools:

  • list_comparisons_for_sha — retrieves all comparisons linked to a specific commit SHA.
  • get_comparison_details — returns the complete diffs and snapshot information between two reports, and lists them the way the comparison page does: the most important first, with targets and variants that made the same change folded together, so one look can stand for many. Where Happo measured a diff, it also says how much changed, in how many places, and whether the diff is only anti-aliasing or a color change too small to see. It names the accessibility rules each snapshot newly breaks, and for an accessibility snapshot with violations to show, it links a screenshot of the part of the page they are in, with where each failing element is in it, so an assistant that reads images can see which element a violation is about.
  • get_diff_measurements — says where chosen diffs changed, in each image's own pixels (so an assistant can crop a tall screenshot to the change), which content was added or removed, and everything else Happo stored when it measured them.
  • accept_comparison / reject_comparison — resolves a pending review after inspecting the differences. approve_comparison, its earlier name, still works.
  • accept_diff / reject_diff — accepts or rejects one diff, added snapshot, or deleted snapshot, or a group of them at once, the same verdict you can give on the comparison page. Rejecting any one rejects the comparison, and accepting all of them accepts it too, unless render errors or new accessibility violations block that: then it stays in review, and the response names what blocks it.
  • report_flake — marks a spurious diff as a flake and records attribution.
  • get_render_logs — reads the logs from rendering a report, narrowed to one snapshot, a search or warnings and errors. It lets the assistant find out why a snapshot rendered wrong or differently between runs, such as an image that was still loading when the screenshot was taken.

Setup​

Claude Code​

Run the following command from your terminal:

claude mcp add --transport http happo https://happo.io/api/mcp

Authorization happens during the first tool use.

Claude Desktop​

Go to Settings → Connectors → "Add custom connector" and paste the MCP URL:

https://happo.io/api/mcp

Cursor​

Configure the server in ~/.cursor/mcp.json (global) or .cursor/mcp.json (project-specific):

{ "mcpServers": { "happo": { "url": "https://happo.io/api/mcp" } } }

Then reload Cursor or toggle the server under Settings → Features → Model Context Protocol.

Permissions​

Connected accounts inherit your permissions, and all actions are attributed to your user. If an account only lets selected users review, accepting or rejecting a comparison or a single diff, or reporting a flake, needs you to be one of them. You can revoke access at any time through the Connected applications section on the API tokens page.