loading…
Search for a command to run...
loading…
A Puppeteer-based server designed for remote debugging, E2E testing, and DOM inspection of frontend applications. It allows users to interact with page elements
A Puppeteer-based server designed for remote debugging, E2E testing, and DOM inspection of frontend applications. It allows users to interact with page elements, capture screenshots, monitor network traffic, and execute JavaScript directly within a browser environment.
Il progetto dom-analyzer-mcp è un DOM Analyzer/E2E server MCP basato su Puppeteer per controllare un'app frontend in un URL configurabile.
server.tsFile: config.json
Esempio:
{
"targetUrl": "http://localhost:4200",
"headless": true
}
targetUrl: URL dell'app da esplorare (es. server dev locale)headless: booleano per avvio Puppeteer headlessVariabili di stato globali:
browser: Browser (Puppeteer)page: Page (Puppeteer)networkRequests: {url, method, status?, response?}[]consoleErrors: string[]Core:
initBrowser(url = 'http://localhost:4200'): inizializza Puppeteer con retry, intercetta request/response.main(): avvia il server MCP, registra console errors e connette StdioServerTransport.take_screenshotScatta uno screenshot della pagina o elemento selezionato.
Input:
selector (opzionale): CSS selector dell'elemento.navigateTo (opzionale): URL da visitare prima di catturare.Output:
content con text e image (base64 PNG).read_domRestituisce l'HTML (outerHTML) del body o elemento specificato.
Input:
selector (opzionale): CSS selector.Output:
content[0].text = HTML.get_computed_stylesRecupera gli stili computati di un elemento.
Input:
selector (required)properties (array di string, opzionale)Output:
get_network_requestsLista chiamate HTTP intercettate.
Input:
filterUrl (opzionale)filterMethod (opzionale, GET/POST/PUT/DELETE/PATCH)limit (opzionale, default 50)Output:
execute_jsEsegue JS nella pagina e ritorna il risultato.
Input:
script (string)Output:
navigate_toNaviga a URL o route dell'app.
Input:
url (obbligatorio)Behaviour:
page.goto + reset networkRequests.get_console_errorsRecupera console error/warn catturati.
Output:
Nessun errore in console.clickSimula click su elemento.
Input:
selector (obbligatorio)Behaviour:
page.waitForSelector(selector) + page.click(selector).typeInserisce testo in input.
Input:
selector (obbligatorio)text (obbligatorio)Behaviour:
page.waitForSelector(selector) + page.type(selector, text).wait_for_selectorAttende elemento nel DOM.
Input:
selector (obbligatorio)timeout (opzionale, default 10000ms)reset_appResetta stato app e ricarica.
Behaviour:
page.goto('http://localhost:4200')networkRequestsget_storageLegge local/sessionStorage.
Input:
type (localStorage|sessionStorage, default localStorage)key (opzionale)set_storageScrive local/sessionStorage.
Input:
type (localStorage|sessionStorage, default localStorage)key (string)value (string)get_performance_metricsRestituisce metriche di performance Puppeteer + window.performance.
Output:
metrics e perfTiming.reset_app per stato deterministico.wait_for_selector prima di click/type su elementi dinamici.get_network_requests per validare API call.get_console_errors per errori JS.get_computed_styles per assertion visuale.assert_* (assertElementVisible, assertText) come tool.headless/headful dinamica.screenshot_diff e page_trace.target e frame.{
"name": "take_screenshot",
"input": {"navigateTo": "http://localhost:4200"}
}
{
"name": "click",
"input": {"selector": "button#submit"}
}
{
"name": "get_network_requests",
"input": {"filterMethod": "GET", "limit": 20}
}
Eseguire da terminale:
cd dom-analyzer-mcp
PUPPETEER_SKIP_DOWNLOAD=true npm i
npm run build
npm start
Il server continua a leggere da stdin/stdout e risponde alle chiamate MCP.
Made by Elia at 01:15am >:)
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"dom-analyzer-mcp-server": {
"command": "npx",
"args": []
}
}
}