Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
PlayGuard
Overview
Description from the maker (original English)
Proxy MCP for Playwright, Figma, DevTools, Shopify Dev, Context7 — fewer tokens, caching
PopNx MCP’s three pillars
These three are never merged into one score: opinions, measurements and popularity are different things.
- User voiceiNo reviews yetReviews open together with accounts in a later step
- Our basic checksi1 of 1 passedChecked from public information; code not scanned yet
- UsageiNot measured yet★ –
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: Online shops & payments
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).
- You fill in yourself:
FIGMA_MCP_CMD,FIGMA_MCP_URL,DEVTOOLS_MCP_CMD,SHOPIFY_DEV_MCP_CMD,CONTEXT7_MCP_CMD
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": {
"playguard": {
"command": "npx",
"args": [
"-y",
"playguard"
],
"env": {
"FIGMA_MCP_CMD": "your-value",
"FIGMA_MCP_URL": "your-value",
"DEVTOOLS_MCP_CMD": "your-value",
"SHOPIFY_DEV_MCP_CMD": "your-value",
"CONTEXT7_MCP_CMD": "your-value"
}
}
}
}Run this in your terminal
claude mcp add playguard --env FIGMA_MCP_CMD=your-value --env FIGMA_MCP_URL=your-value --env DEVTOOLS_MCP_CMD=your-value --env SHOPIFY_DEV_MCP_CMD=your-value --env CONTEXT7_MCP_CMD=your-value -- npx -y playguardFill in the empty values before running it.
Or copy the settings yourself
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"playguard": {
"command": "npx",
"args": [
"-y",
"playguard"
],
"env": {
"FIGMA_MCP_CMD": "your-value",
"FIGMA_MCP_URL": "your-value",
"DEVTOOLS_MCP_CMD": "your-value",
"SHOPIFY_DEV_MCP_CMD": "your-value",
"CONTEXT7_MCP_CMD": "your-value"
}
}
}
}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.
Or copy the settings yourself
Paste into .vscode/mcp.json in your project
{
"servers": {
"playguard": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"playguard"
],
"env": {
"FIGMA_MCP_CMD": "your-value",
"FIGMA_MCP_URL": "your-value",
"DEVTOOLS_MCP_CMD": "your-value",
"SHOPIFY_DEV_MCP_CMD": "your-value",
"CONTEXT7_MCP_CMD": "your-value"
}
}
}
}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.
Values you fill in
FIGMA_MCP_CMDenvCommand that starts the Framelink Figma MCP (enables Figma tools)FIGMA_MCP_URLenvOfficial Figma desktop MCP URL, e.g. http://127.0.0.1:3845/mcpDEVTOOLS_MCP_CMDenvCommand that starts Chrome DevTools MCP, e.g. npx -y chrome-devtools-mcp@latestSHOPIFY_DEV_MCP_CMDenvCommand that starts Shopify Dev MCPCONTEXT7_MCP_CMDenvCommand that starts Context7 MCP
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 ZenyaDAR, 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 Online shops & paymentsi
- More stars than 0% of the other 1754 servers in this category
- Published to the registry more recently than 81% of the other 1754 servers in this category
- Basic checks equal to or better than 100% of the other 1754 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 PlayGuard 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.10.1) reached the registry 6 days 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: Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce
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
Stripe MCP
Stripe’s official server lets AI view and manage customers, products, payments and invoices. Connect to Stripe’s cloud and sign in with OAuth.
MCP Cn Commerce
8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending
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.
PlayGuard
A proxy MCP: one MCP server in your client config that runs several MCP servers under the hood, exposes all their tools through a single connection, and optimizes their responses.
You add playguard to your MCP client once. Which upstream MCPs it starts is decided by environment variables in that one config entry — an upstream without its variable is not started and its tools are not listed. Every response passes through PlayGuard on the way back, which adds:
- One connection, several upstreams — Playwright MCP (bundled, always on), Figma (Framelink or the official desktop server), Chrome DevTools MCP, Shopify Dev MCP and Context7. A failing optional upstream only removes its own tools; the others keep working
- Token optimization — compact/delta/
UNCHANGEDsnapshots, Figma tree trimming, network-list summaries, rewritten documentation answers; browser snapshot cost drops 70–90% - Session recovery — dead browser sessions and crashed upstream processes are revived; the agent doesn't see the crash
- Caching — snapshot,
browser_evaluate, Figma and on-disk documentation caches - Screenshot policy — redirect, warn, block, or allow screenshot calls
- Logged savings — every call is written to an NDJSON log;
npm run analyzereports tokens saved per upstream - Two tools of its own —
playguard_a11y_audit(axe-core in the Playwright page) andplayguard_compare_design(Figma node vs live DOM element, Framelink only)
Works with Claude Code, Claude Desktop, Cursor, Codex, or any MCP-compatible agent.
Website: playguard.dev · Docs: How PlayGuard works
Upstream MCPs at a glance
| Upstream | Enable with | What PlayGuard optimizes | Details |
|---|---|---|---|
Playwright MCP (@playwright/mcp, bundled) | always on | Compact / delta / UNCHANGED snapshots, snapshot filters, session recovery, screenshot policy, eval cache, --codegen none, batching hints | Browser |
Figma, Framelink (figma-developer-mcp) | FIGMA_MCP_CMD + FIGMA_API_KEY (any Figma plan) | Optimizer modules, structural budget trim, cache, playguard_compare_design | Figma Optimizer |
| Figma, official desktop server | FIGMA_MCP_URL=http://127.0.0.1:3845/mcp (no key; Figma desktop app + Dev/Full seat on a paid plan) | Passthrough, whole responses, no cache | Official Figma MCP |
| Chrome DevTools MCP | DEVTOOLS_MCP_CMD | Network summary, request trim, snapshot compaction, trace trim, error hints, privacy launch defaults | Chrome DevTools MCP |
| Shopify Dev MCP | SHOPIFY_DEV_MCP_CMD | Response rewrites, disk cache, UNCHANGED repeats, compacted tools/list | Documentation MCPs |
| Context7 | CONTEXT7_MCP_CMD | Response rewrites, disk cache, UNCHANGED repeats, compacted tools/list | Documentation MCPs |
Figma is one option at a time: Framelink or the official desktop server (FIGMA_MCP_URL wins if both are set). Figma's remote server (mcp.figma.com) can't be proxied — see Official Figma MCP.
Choosing upstreams
The env block of the playguard entry decides what runs. Nothing to install separately: Playwright MCP ships with PlayGuard, the others are launched through the command you give. For example, Playwright + Framelink Figma + Shopify Dev:
{
"mcpServers": { "playguard": { "command": "npx", "args": ["-y", "playguard@latest"], "env": { "PLAYGUARD_SCREENSHOTS": "redirect", "FIGMA_MCP_CMD": "npx", "FIGMA_MCP_ARGS": "-y figma-developer-mcp --stdio", "FIGMA_API_KEY": "your-figma-api-key", "SHOPIFY_DEV_MCP_CMD": "npx -y @shopify/dev-mcp@latest" } } } }
Remove a variable to drop that upstream. Restart the MCP client after changing the config — the server and its upstreams are started once per client session.
Architecture
Claude Code / Claude Desktop / Cursor / Codex
│ │ MCP (stdio) — one connection ▼ ┌───────────────────┐ │ PlayGuard │ proxy MCP │ │ │ • router │ browser_* → Playwright MCP (always) │ • recovery │ Figma tools → Framelink / Figma (FIGMA_MCP_CMD / _URL) │ • optimizers │ DevTools tools → Chrome DevTools MCP (DEVTOOLS_MCP_CMD) │ • caches │ Shopify docs tools → Shopify Dev MCP (SHOPIFY_DEV_MCP_CMD) │ • analytics │ Context7 tools → Context7 (CONTEXT7_MCP_CMD) │ • own tools │ playguard_a11y_audit, playguard_compare_design └─────────┬─────────┘ │ one child process per enabled upstream ┌─────────┼───────────┬──────────┬───────────┬──────────┐ ▼ ▼ ▼ ▼ ▼ ▼ Playwright Figma Chrome Shopify Context7 (each optional MCP MCP DevTools Dev MCP except Playwright) │ │ ▼ ▼ Chromium / Firefox / WebKit Chrome (its own instance)
Every upstream except Playwright is optional. If none of FIGMA_MCP_CMD, FIGMA_MCP_URL, DEVTOOLS_MCP_CMD, SHOPIFY_DEV_MCP_CMD and CONTEXT7_MCP_CMD is set, PlayGuard runs with Playwright only. Playwright MCP is bundled as a dependency — no separate installation required. Optional upstreams start lazily and are isolated from each other; tools/list waits a bounded time for a slow one and announces its tools later with tools/list_changed.
Features
Browser (Playwright)
Automatic Session Recovery
PlayGuard intercepts dead-session errors before the agent sees them:
Target.*closed · Browser.*closed · connect ECONNREFUSED · crashed
It restarts Playwright MCP, restores the last URL, and retries the call transparently. Two concurrent calls during a crash → one restart, both calls continue.
Compact Snapshots
browser_snapshot normally returns the full accessibility tree. PlayGuard keeps only lines with [ref=] (interactive elements) and structural landmarks (nav, main, form, dialog, …). Static text and decorative images have no refs and are not needed for navigation.
[PlayGuard compact: 312/1840 lines, ~83% removed, 124.3KB→14.1KB]
Snapshot Filtering
For pages where even the compact tree is large, browser_snapshot accepts optional params to narrow the result to one subtree:
section— return only the landmark subtree whose label starts with or contains this string (e.g."form","navigation \"Footer\"")around— return only the landmark subtree containing this[ref=N], useful once you know a specific element's refdepth— cap the returned subtree's depth (combine withsection/aroundfor a high-level overview first, or use alone to flatten the whole tree)
Falls back to the full snapshot with a [PlayGuard: ... not found] warning if the requested section/ref doesn't exist. Switching filters between calls always forces a fresh snapshot — it never returns a stale UNCHANGED/cached result from a differently-filtered request.
Smart Wait
Set PLAYGUARD_SMART_WAIT=1 to have browser_snapshot retry when a page looks mid-load — few interactive refs plus a loading/spinner/skeleton indicator in the text. Retries PLAYGUARD_SMART_WAIT_MAX_RETRIES times, PLAYGUARD_SMART_WAIT_MS apart, before returning (with a warning if it still looks like it's loading). Off by default — it adds latency to every snapshot call.
Set PLAYGUARD_COMPACT=false to receive the raw snapshot.
Delta Snapshots
When a page changes only slightly, PlayGuard returns a diff instead of the full snapshot:
[PlayGuard delta: +3 added, 1 removed, ~91% saved]
ADDED:
- button "Submit" [ref=47]
REMOVED:
- button "Loading..." [ref=44]
Snapshot Cache + Prefetch
An unchanged page returns UNCHANGED without hitting the browser.
Optional prefetch (PLAYGUARD_PREFETCH_SNAPSHOT=true, off by default since 0.8.0): after browser_navigate, PlayGuard fetches a snapshot in the background so the next browser_snapshot is served from cache. It only pays off for agents that snapshot right after navigating — any browser_evaluate or action in between discards it, and the background call competes with that action for the browser.
Shorter Playwright Responses
PlayGuard starts the bundled Playwright MCP with --codegen none, which drops the ### Ran Playwright code block from every response (80–150 characters per call). Not applied to a custom PLAYWRIGHT_MCP_CMD or when --codegen is already in PLAYWRIGHT_MCP_ARGS; set PLAYGUARD_CODEGEN=keep to restore it.
Batching Hints
Every browser_evaluate / browser_run_code_unsafe call waits at least ~0.5 s inside Playwright MCP for the page to settle. PlayGuard appends a one-line hint to those tools' descriptions (and to browser_wait_for) nudging the agent to combine checks into fewer calls. PLAYGUARD_HINTS=false turns this off.
Screenshot Policy
| Mode | Behavior |
|---|---|
warn (default) | Screenshot executes; warning written to stderr |
redirect | Replaced with browser_snapshot. Pass {visual:true} for a real screenshot; a call with filename, element/ref/target or fullPage always gets pixels |
block | Blocked with an error; agent is told which env var to change |
allow | No restriction |
Eval Cache + Output Compaction
Repeated browser_evaluate calls with the same script on the same URL are served from cache (configurable TTL). Large eval output is truncated to a character limit to avoid blowing the context window.
Accessibility Audit
playguard_a11y_audit runs axe-core (bundled) inside the page the browser_* tools have open and returns a short report instead of axe's raw JSON:
[PlayGuard a11y: 6 violations (6 elements) · 7 rules passed · axe 4.14.0 · wcag2a,wcag2aa,… · https://shop.test/]
critical image-alt — Images must have alternative text (1)
- img Element does not have an alt attribute (+4 more) https://dequeuniversity.com/rules/axe/4.14/image-alt
serious color-contrast — Elements must meet minimum color contrast ratio thresholds (1)
- main > p Low contrast text Element has insufficient color contrast of 1.91 (foreground color: #bbbbbb, …). Expected contrast ratio of 4.5:1
Rules are sorted by impact; each lists at most 5 elements (the rest are counted) with a CSS selector, a 140-char html excerpt and the first way to fix it. Rules axe could not decide are named under "Needs manual review".
| Param | Default | |
|---|---|---|
selector | whole page | Audit only this part, e.g. #cart-drawer — open a dialog first, then audit it |
tags | wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa | Replaces the default. To add best-practice (non-WCAG advice) or wcag2aaa, pass the defaults plus it. A single string is accepted; any tag that matches no axe rule (a typo) is an error, not a clean report |
Automated checks don't cover keyboard flow or screen-reader wording. The page keeps axe loaded after the first audit.
Figma Optimizer
PlayGuard intercepts Figma MCP responses and runs them through an optimization pipeline before delivering to the agent.
[PlayGuard figma: -68% (284.0KB→91.0KB)]
Note: Modules 1–4 and 6 target raw Figma REST API JSON (
document.children,componentId,fillGeometry). I
Only the beginning is shown; read the rest in the repo