mcpField
V
Vuda (visual Ui Debug Agent)

Vuda (visual Ui Debug Agent)

Remote
github.com/samihalawaAI & Agents84Updated 11w ago
Repository

About Vuda (visual Ui Debug Agent)

Vuda is a Playwright-based MCP server for inspecting and testing web interfaces, intended for MCP-compatible AI clients. It works with local or remote browsers and provides tools for screenshots, DOM inspection, workflow validation, and visual comparison.

Key features

  1. 01Page and element screenshots
  2. 02DOM and computed-style inspection
  3. 03Multi-step UI workflow validation
  4. 04Console and performance monitoring
  5. 05Visual state comparison
  6. 06Sitemap crawling and API testing

Use cases

  1. 01Inspect page layouts and interactive elements
  2. 02Validate user journeys
  3. 03Compare visual results before and after changes
  4. 04Investigate browser console errors

MCP support

Vuda runs as an MCP server over stdio and exposes 29 browser inspection and testing tools to clients. It also provides screenshots, browser status, and debugging prompts as MCP resources.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://github.com/samihalawa/visual-ui-debug-agent-mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
ocisamihalawa/visual-ui-debug-agent-mcp

Tools

Details

From the project README

VUDA — Visual UI Debug Agent

Build status npm version npm downloads GitHub stars Last commit ISC license

Give an MCP-compatible AI client a real browser, screenshots, DOM inspection, workflow validation, console capture, API checks, and visual comparison.
29 MCP tools · Local, Browserbase, Anchor, or any CDP browser · Node.js 20+

What VUDA does

VUDA (Visual UI Debug Agent) is a Model Context Protocol server for inspecting and testing web interfaces with Playwright. The MCP server runs locally over standard input/output; its browser can run locally, on Browserbase, on Anchor Browser, or at an existing CDP endpoint. Every tool uses the same selected browser runtime.

  • Capture full-page, viewport, element, local-file, and batch screenshots.
  • Map interactive elements and inspect rendered DOM and computed styles.
  • Execute multi-step UI workflows while preserving browser state.
  • Monitor console output and analyze page performance.
  • Compare two rendered states and return a visual diff.
  • Crawl sitemaps and exercise API endpoints.
  • Emulate supported Playwright devices.

VUDA capabilities: screenshots, workflows, performance, API testing, and visual comparison

Quick start

1. Run VUDA
npx -y visual-ui-debug-agent-mcp

The default local mode needs a Chromium-compatible browser. If one is not already available, install the matching browser once:

npx playwright install chromium
2. Add it to an MCP client
{
  "mcpServers": {
    "vuda": {
      "command": "npx",
      "args": ["-y", "visual-ui-debug-agent-mcp"]
    }
  }
}

Restart the client after changing its MCP configuration. The server writes protocol messages to stdout and diagnostics to its temporary log file.

No provider account is required for local mode.

Docker users can use the same stdio transport:

{
  "mcpServers": {
    "vuda": {
      "command": "docker",
      "args": ["run", "--interactive", "--rm", "ghcr.io/samihalawa/visual-ui-debug-agent-mcp:latest"]
    }
  }
}

To use provider credentials from a file with Docker, add "--env-file", "/absolute/path/to/.env" immediately after "run" in the args array.

3. Try it

Ask your client to:

Use VUDA to inspect https://example.com, capture a screenshot, list the
interactive elements, and report console errors and obvious layout issues.

Tool reference

Analysis and capture
ToolPurpose
enhanced_page_analyzerScreenshot, console, performance, and interactive-element analysis
screenshot_urlCapture a URL, viewport, full page, or selected element
batch_screenshot_urlsCapture multiple URLs for side-by-side review
screenshot_local_filesRender and capture local HTML files
dom_inspectorReturn element properties, children, and computed styles
visual_comparisonCompare two rendered pages or elements
Workflows, diagnostics, and APIs
ToolPurpose
ui_workflow_validatorExecute and verify a described user journey
navigation_flow_validatorValidate a sequence of browser actions
console_monitorCapture browser console messages over a time window
performance_analysisCollect navigation and page performance metrics
api_endpoint_testerExercise multiple HTTP endpoints
sitemap_crawlerDiscover and inspect pages from a sitemap
tunnel_helperStore or retrieve a remote tunnel URL and setup guidance
debug_memoryKeep small debugging notes during one server session
Direct Playwright controls

playwright_navigate, playwright_click, playwright_iframe_click, playwright_fill, playwright_select, playwright_hover, playwright_evaluate, playwright_console_logs, playwright_get_visible_text, playwright_get_visible_html, playwright_go_back, playwright_go_forward, playwright_press_key, playwright_drag, and playwright_screenshot.

Configuration

VUDA reads environment variables normally and automatically loads .env from its working directory. Copy .env.example when running from a source checkout. For an npx installation, either put .env in the MCP process working directory, pass variables in the client configuration, or set DOTENV_CONFIG_PATH to an absolute .env path.

Choose the browser
ModeRequired configurationAccount state
Local (default)VUDA_BROWSER_PROVIDER=localVUDA_STORAGE_STATE_PATH, cookie JSON, or a cookie file
BrowserbaseVUDA_BROWSER_PROVIDER=browserbase, BROWSERBASE_API_KEYReuse BROWSERBASE_CONTEXT_ID or inject cookies
Anchor BrowserVUDA_BROWSER_PROVIDER=anchor, ANCHOR_API_KEYUse an Anchor profile in VUDA_ANCHOR_SESSION_JSON or inject cookies
Existing browserVUDA_BROWSER_PROVIDER=cdp, VUDA_CDP_URLUses that browser context; cookie injection is optional

Browserbase example:

VUDA_BROWSER_PROVIDER=browserbase
BROWSERBASE_API_KEY=your_api_key
BROWSERBASE_PROJECT_ID=your_project_id
BROWSERBASE_CONTEXT_ID=your_saved_context_id

Anchor Browser example with a persistent authenticated profile:

VUDA_BROWSER_PROVIDER=anchor
ANCHOR_API_KEY=your_api_key
VUDA_ANCHOR_SESSION_JSON={"browser":{"profile":{"name":"vuda","persist":true}}}

All 29 tools keep their existing names and inputs in every mode. Read the MCP resource browser://status to confirm the selected provider, current connection state, session ID, and whether a live view is available. CDP and live-view URLs are never returned.

Import cookies or local state

Cookie injection works with every provider. Supply a Playwright cookie array inline or by file:

VUDA_COOKIES_FILE=/absolute/path/to/cookies.json
# VUDA_COOKIES_JSON=[{"name":"session","value":"...","domain":"example.com","path":"/"}]

For local mode, VUDA_STORAGE_STATE_PATH loads a Playwright storage-state file. Set VUDA_PERSIST_STORAGE_STATE=true to write the updated state back when VUDA exits cleanly. Browserbase Contexts and Anchor profiles are the provider-native choices for state that must survive multiple cloud sessions.

Provider-specific session options remain available without another wrapper or SDK:

  • VUDA_BROWSERBASE_SESSION_JSON is merged into Browserbase's create-session request.
  • VUDA_ANCHOR_SESSION_JSON is sent as Anchor's create-session request.
Timeouts

All timeout settings are optional:

VariableDefaultPurpose
VUDA_DEFAULT_TIMEOUT15000General Playwright timeout in milliseconds
VUDA_NAVIGATION_TIMEOUT15000Navigation timeout
VUDA_SELECTOR_TIMEOUT12000Selector wait timeout
VUDA_STABILITY_WAIT5000Delay after navigation before capture
VUDA_UI_UPDATE_WAIT1000Delay for short UI updates
VUDA_PERFORMANCE_THRESHOLD15000Slow-page threshold
VUDA_INTERACTION_DELAY500Delay between direct interactions

Example:

{
  "mcpServers": {
    "vuda": {
      "command": "npx",
      "args": ["-y", "visual-ui-debug-agent-mcp"],
      "env": {
        "VUDA_NAVIGATION_TIMEOUT": "30000",
        "VUDA_STABILITY_WAIT": "2000"
      }
    }
  }
}

Development

git clone https://github.com/samihalawa/visual-ui-debug-agent-mcp.git
cd visual-ui-debug-agent-mcp
npm ci
npm test

npm test builds the TypeScript server, starts it through the MCP stdio transport, verifies the exact 29-tool inventory, reads a bundled resource, exercises a stateful tool call, and captures a real browser screenshot.

It also validates Browserbase and Anchor session request/cleanup shapes, CDP selection, cookie loading, and the crawler's browser initialization. Provider calls use deterministic mocks in CI; use your own .env for a live cloud session.

Before opening a pull request, also run:

npm audit
npm pack --dry-run

Architecture

VUDA architecture

VUDA keeps one Playwright control plane across all providers. Local mode creates isolated contexts for page-level analyses; remote modes reuse the provider context so authenticated state survives across tools. VUDA returns screenshots as MCP image content and exposes generated screenshots, browser status, and debugging prompts as MCP resources.

Contributing

Issues and focused pull requests are welcome. See CONTRIBUTING.md for the development workflow and review checklist. Release history is recorded in CHANGELOG.md.

License

ISC © 2023–2026 Sami Halawa and contributors.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.