playwright-mcp-metabase
- Repo stars 47,548
- Author updated Live
- Author repo metabase
- Domain
- AI
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 88 / 100 · community maintained
- Author / version / license
- @metabase · no license declared
- Token usage
- Lean
- Setup complexity
- Plug-and-play
- External API key
- Not required
- Operating systems
- Unspecified (assume cross-platform)
- Runtime requirements
- No special requirements
- Permissions
-
- Read-only
- Write / modify
- Network behavior
- Local-only
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: playwright-mcp-metabase
description: Drive Metabase's UI with the Playwright MCP browser tools (mcp__playwright__browser_*). Covers t…
category: ai
runtime: no special runtime
---
# playwright-mcp-metabase output preview
## PART A: Task fit
- Use case: Drive Metabase's UI with the Playwright MCP browser tools (mcp__playwright__browser_*). Covers the snapshot/act/check pattern, Mantine component pitfalls (Menu race, Select/MultiSelect, the Escape-closes-modal trap, portal scoping), and Metabase-specific login flows. Use whenever a session needs to interact with the Metabase UI through Playwright MCP..
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “Core pattern: Snapshot → Act → Check / How to interact with Metabase's UI components / Login” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “Drive Metabase's UI with the Playwright MCP browser tools (mcp__playwright__browser_*). Covers the snapshot/act/check pattern, Mantine component pitfalls (Menu race, Select/MultiSelect, the Escape-closes-modal trap, portal scoping), and Metabase-specific login flows. Use whenever a session needs to interact with the Metabase UI through Playwright MCP.”.
- **02** When the source has headings, the agent prioritizes “Core pattern: Snapshot → Act → Check / How to interact with Metabase's UI components / Login” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files; mostly runs locally; usually needs no extra API key.
## Running Rules
- read files, write/modify files; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source mentions slash commands such as `/api`; use them first when your agent supports command triggers.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files.
Start with a small task and check whether the result follows “Core pattern: Snapshot → Act → Check / How to interact with Metabase's UI components / Login”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: playwright-mcp-metabase
description: Drive Metabase's UI with the Playwright MCP browser tools (mcp__playwright__browser_*). Covers t…
category: ai
source: metabase/metabase
---
# playwright-mcp-metabase
## When to use
- Drive Metabase's UI with the Playwright MCP browser tools (mcp__playwright__browser_*). Covers the snapshot/act/check…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “Core pattern: Snapshot → Act → Check / How to interact with Metabase's UI components / Login” and keep inference separate from source facts.
- read files, write/modify files; mostly runs locally; usually needs no extra API key.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "playwright-mcp-metabase" {
input -> user goal + target files + boundaries + acceptance criteria
context -> Core pattern: Snapshot → Act → Check / How to interact with Metabase's UI components / Login
rules -> SKILL.md triggers / order / output contract
runtime -> no special runtime | read files, write/modify files | mostly runs locally
guardrails -> usually needs no extra API key + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} Browser Automation with Playwright MCP (Metabase)
A Playwright MCP server is configured in .mcp.json. Load the tool schemas first with ToolSearch: select:mcp__playwright__browser_navigate,mcp__playwright__browser_snapshot,mcp__playwright__browser_click,mcp__playwright__browser_fill,mcp__playwright__browser_type,mcp__playwright__browser_press_key,mcp__playwright__browser_hover,mcp__playwright__browser_take_screenshot,mcp__playwright__browser_close
If ToolSearch says "MCP servers still connecting," wait a few seconds and retry — the server takes a moment to start on first use.
Core pattern: Snapshot → Act → Check
browser_snapshot— see what's on screen, get element refs- Act —
browser_click,browser_fill,browser_type, etc. using refs from the snapshot - Check the inline response — every action returns a snapshot in its response. Read it.
When to take a separate browser_snapshot after acting:
- The inline response snapshot looks wrong, empty, or unchanged — take a fresh one (async rendering may not have completed)
- You need refs for your NEXT action — the inline snapshot's refs are valid, use them directly
- You're unsure if the action worked — take one more snapshot to confirm
When you do NOT need a separate snapshot after acting:
- The inline response already shows the expected change (e.g., you clicked a link and the response shows the new page)
- You're about to take a screenshot anyway (
browser_take_screenshotshows the current state) - You're doing a chain of actions on the same form (e.g., filling multiple fields) — snapshot once at the end, not after each fill
Element refs go stale after every action. Use refs from the most recent snapshot or inline response — never from an earlier one.
How to interact with Metabase's UI components
Metabase uses Mantine UI components. Most interactions work with a plain browser_click. The hover-before-click pattern is only needed for specific component types.
Regular buttons, links, form inputs, checkboxes, tabs:
Just browser_click them directly. No hover needed.
Buttons that open dropdown menus (e.g., "+ New", "..." action menus, filter type pickers):
These use Mantine's <Menu> component which has a race condition with direct clicks. Hover before clicking these:
browser_hoveron the buttonbrowser_clickon the button- Check the inline response — if the menu appeared, use its refs directly
How to tell if a button opens a dropdown menu: it usually has a chevron/arrow icon, a "..." label, or is labeled as creating something new (like "+ New"). If unsure, try a direct click first — if it doesn't work, retry with hover.
Select and dropdown components (e.g., database picker, column picker):
Mantine Select/MultiSelect are NOT native <select> elements. browser_select_option will NOT work. Instead:
browser_clickon the input/triggerbrowser_clickon the option you want (use refs from the inline response)
You can also type into the input to filter options before clicking.
Modals and dialogs:
To dismiss: browser_click the close/action button, or browser_press_key with Escape.
⚠️ Mantine Escape-inside-modal trap: Pressing Escape while focus is inside a Mantine popover/Select/MultiSelect that is itself nested in a modal closes the entire modal and discards every form field you've already filled. To dismiss just an open dropdown, prefer browser_click outside the dropdown (or click another field). Only press Escape when you actually want the whole modal gone.
Mantine portals + scoped snapshots: Mantine renders dropdowns, popovers, and tooltips into a portal at <body> level — they are NOT children of the [role=dialog] element. If you scope browser_snapshot to the modal, dropdown options will be missing. Take a full-page snapshot when interacting with portaled content.
Login
browser_navigatetohttp://localhost:$MB_JETTY_PORT/auth/loginbrowser_snapshot→browser_fillemail and password →browser_clicksign-in buttonbrowser_navigatetohttp://localhost:$MB_JETTY_PORT/— always navigate explicitly to the home page after login. Do NOT rely on the login redirect alone. The redirect can leave the browser session in a state where clicks don't register.browser_snapshotto confirm you're logged in
Quick login via API (alternative)
Get a session token via API and set it as a cookie — faster than filling the login form:
./bin/mage -bot-api-call /api/session --method POST --body '{"username":"<email>","password":"<password>"}'
Extract the id from the response, then use browser_evaluate with script:
document.cookie = 'metabase.SESSION=<token>;path=/'
Then browser_navigate to the target page. Use the credentials from ./bin/mage -bot-server-info.
When clicks don't work
- Take a fresh snapshot (async rendering). 2. Try hover + click (menu triggers). 3. Try keyboard (focus + Enter). 4. After 3 attempts, report and move on.
Rules
- Always use
http://localhost:$MB_JETTY_PORT - Close the browser when done
- Use inline response snapshots when sufficient — only take separate
browser_snapshotwhen needed - Browser is pre-configured: 1440x900 viewport, full snapshot mode, isolated session, 10s action timeout
Decide Fit First
Design Intent
How To Use It
Boundaries And Review