ego (lite) è solo un browser; ego è il tuo agente personale su tutti i dispositivi.
Iscriviti alla lista d'attesa
Claude CodeMCPModel Context ProtocolPlaywright MCPRisoluzione dei problemi

Configurazione MCP di Claude Code: scope, setup e correzioni per Playwright

16 set 202612 min di lettura
Un agente che mostra due finestre del browser: una con il logo del cubo MCP e l'altra con le maschere rossa e verde dell'automazione

Se hai già aggiunto Playwright MCP a Claude Code ma non riesci ancora ad aprire una pagina, reinstallare tutto di solito non è il punto di partenza migliore. La maggior parte dei problemi di configurazione MCP si riduce a poche cause comuni: il server MCP a livello di progetto non è ancora stato approvato, il comando di avvio è errato oppure mancano i binari del browser necessari.

Inizia eseguendo /mcp per verificare se il server è connesso e se gli strumenti di Playwright sono disponibili. Poi chiedi all'agente di aprire una pagina. Così restringi il campo e capisci se il problema è nella connessione MCP, in Playwright stesso o nell'ambiente del browser, senza modificare più volte una configurazione che magari è già corretta.

Ma aprire una pagina è solo il primo passo. I compiti reali nel browser spesso richiedono di cercare, aprire più pagine, passare da una fonte all'altra e decidere cosa fare in base a ciò che compare sulla pagina. Quando si indaga su un errore, per esempio, l'agente può dover esaminare i risultati di ricerca, aprire diverse discussioni pertinenti, confrontare gli ambienti e i messaggi di errore segnalati e valutare le correzioni proposte prima di decidere quale vale la pena provare.

Con ego (lite), l'agente può tenere queste pagine aperte e continuare a lavorare dentro uno Space del browser separato, senza interrompere la finestra del browser che stai usando. Puoi entrare in quello Space in qualsiasi momento per esaminare ciò che l'agente ha trovato o prendere il comando quando serve il giudizio umano.

Questo articolo parte dalla configurazione di MCP in Claude Code e dalla risoluzione dei problemi più comuni di Playwright e del browser. Poi usa lo stesso compito di indagine per mostrare un approccio diverso ai flussi di lavoro nel browser. Un server MCP che mostra “connected” significa solo che gli strumenti sono disponibili. Ciò che conta è se l'agente riesce davvero a usarli per portare a termine il compito nel browser che viene dopo.

Che cosa aggiunge un server MCP a Claude Code?

Claude Code include strumenti propri, ma un server Model Context Protocol ti permette di aggiungere capacità con un nome che non ha di default: un browser, un database o un'API SaaS. La documentazione ufficiale di Claude Code descrive i server come un modo per collegarsi a strumenti e fonti di dati esterni, aggiunti con claude mcp add e gestiti nella sessione con /mcp.

Il protocollo stesso è definito su modelcontextprotocol.io, dove sono specificati i transport e le capacità.

Il riferimento CLI alla base di questi comandi è la documentazione ufficiale MCP di Claude Code.

La connessione avviene su JSON-RPC 2.0. Claude Code fa da host, il server MCP viene eseguito come sottoprocesso (stdio) o come endpoint raggiungibile (HTTP), e ogni strumento porta con sé un nome, una descrizione e uno schema di input che il modello legge prima di chiamarlo. Proprio per questo un server configurato male fallisce come strumenti mancanti e non come crash: la connessione si apre, ma non viene rilevato alcuno strumento.

Un server non è un plugin né un'estensione. Un plugin può includere un server MCP, ma aggiungere un server scrive direttamente una voce nella tua configurazione MCP. La distinzione conta quando lo stesso strumento compare due volte, una da un plugin e una dalla tua configurazione, con argomenti diversi.

Quale scope scegliere: local, project o user?

Claude Code risolve i server MCP in base allo scope, e lo scope controlla due cose insieme: dove risiede la configurazione e chi altro può caricarla. Scegli in base a come il server deve viaggiare, non per abitudine.

Un terminale di Claude Code accanto al repository microsoft/playwright-mcp: il riquadro sinistro elenca le istruzioni del compito, incluse le tre parole chiave di ricerca e il formato esatto del report che l'esecuzione deve restituire, mentre il riquadro destro mostra la pagina iniziale del repository
Il compito assegnato a entrambe le vie e la pagina da cui entrambe sono partite. Il riquadro sinistro fissa le parole chiave da cercare, i campi da raccogliere per ogni issue e il modello di report; il riquadro destro è il repository ufficiale indicato dal prompt. Ogni screenshot che segue mostra lo stesso prompt eseguito su una via di esecuzione diversa.
ScopeSalvato inChi può vederloIdeale per
local (predefinito)~/.claude.json sotto il percorso del progettoSolo il progetto corrente, non condivisoUn server privato che vuoi per un solo repository e da nessun'altra parte.
project.mcp.json nella radice del progettoSolo il progetto corrente, condiviso tramite il controllo di versioneUn server che serve a tutto il team, fissato a un'unica configurazione.
user~/.claude.jsonTutti i tuoi progetti, non condivisoUn server personale che vuoi avere disponibile ovunque.

Quando lo stesso nome di server compare in più di uno scope, Claude Code prende l'intera voce con la precedenza più alta. local batte project, project batte user e la voce vincente non viene unita alle altre. Una voce obsoleta nello scope user può oscurare silenziosamente quella di project.

Come aggiungere e verificare un server MCP?

Aggiungi un server stdio locale con claude mcp add, usando -- per separare i flag di Claude Code dal comando del server che verrà avviato. Il doppio trattino impedisce che tutto ciò che segue venga interpretato come opzione di Claude Code.

claude mcp add --scope project playwright -- \
  npx --yes @playwright/mcp@latest --isolated

Per un server HTTP remoto, indica il transport e l'endpoint. Una voce JSON con url ma senza type è un errore di configurazione, quindi specifica il type quando scrivi la configurazione a mano.

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

La verifica è separata dall'aggiunta. claude mcp list mostra uno stato di salute per ogni server, mentre claude mcp get prende il nome del server e stampa i dettagli dell'errore quando c'è. Dentro una sessione, /mcp elenca i server connessi, il numero di strumenti di ciascuno e quelli che richiedono autenticazione o approvazione.

claude mcp list
claude mcp get playwright

Un server che mostra Connected ma non espone alcuno strumento, oppure che mostra Failed to connect con un codice di errore, non ha superato la verifica. La configurazione salvata è l'inizio del controllo, non la fine.

Quando un server con scope project richiede l'approvazione?

I server con scope project definiti in un file .mcp.json chiedono l'approvazione la prima volta che una sessione interattiva di Claude Code prova a usarli. È una scelta deliberata: un file committato non deve consegnare silenziosamente il controllo del browser all'agente solo perché esiste nel repository.

Le esecuzioni non interattive cambiano la regola. In claude -p, nelle sessioni Agent SDK e in quelle nel cloud non c'è alcun prompt da mostrare, quindi Claude Code carica i server con scope project senza chiedere. Ecco perché una configurazione di cui ti fidi in locale può diventare una superficie più ampia in CI.

Tipo di esecuzioneComportamento dell'approvazioneA cosa fare attenzione
Sessione interattivaChiede l'approvazione prima di usare un server con scope projectPending approval è uno stato di fiducia, non un crash.
claude -p / Agent SDK / cloudCarica i server di progetto senza il promptUn .mcp.json committato agisce senza alcuna approvazione umana.
Workspace non attendibileLe approvazioni salvate nel repository vengono ignorate finché non consideri attendibile la cartellaIl server resta Pending approval finché non esegui claude e accetti.

Se non vuoi che un server di progetto specifico venga mai caricato, aggiungilo a disabledMcpjsonServers. Se vuoi partire solo con i server che indichi esplicitamente, usa --strict-mcp-config. Sono entrambi controlli deliberati, non un modo per mascherare un prompt di fiducia.

Quali correzioni servono davvero a Playwright MCP?

Playwright MCP è il server browser che più spesso viene collegato a Claude Code, e i suoi problemi si concentrano in tre punti. Ognuno ha una correzione migliore della reinstallazione.

Il server in ogni esempio qui è microsoft/playwright-mcp, dove si trovano l'elenco degli strumenti e le issue aperte.

L'API che incapsula è documentata su playwright.dev.

Se stai ancora scegliendo quale server browser collegare, il confronto tra server MCP browser per Claude Code mette a confronto le opzioni.

Se stai partendo da una macchina pulita invece di riparare un server esistente, la guida alla configurazione di Playwright MCP per Claude Code e Cursor copre l'installazione e la registrazione in ordine.

La pagina della documentazione di Playwright MCP, con l'Introduction, un elenco Prerequisites che richiede Node.js 20 o versione successiva e un client MCP, e l'inizio dello snippet JSON minimo mcpServers con @playwright/mcp in versione latest
La pagina upstream da cui proviene il comando di installazione. Due cose contano per i problemi descritti sotto: la soglia minima di Node.js 20 e lo snippet minimo che indica npx come comando. Entrambe sono corrette su macOS e Linux e sono proprio il punto in cui Windows si rompe.

Windows: npx rompe la pipe di stdio

Su Windows, npx è npx.cmd, un wrapper batch che Claude Code avvia senza una shell. La pipe stdio su cui MCP fa affidamento non si connette mai e il server segnala Connection closed. La soluzione documentata è racchiudere il comando in modo che lo esegua cmd, oppure richiamare node direttamente sul file cli.js del pacchetto.

claude mcp add --scope user playwright -- cmd /c npx @playwright/mcp@latest
{
  "mcpServers": {
    "playwright": {
      "command": "node",
      "args": ["C:\\path\\to\\node_modules\\@playwright\\mcp\\cli.js"]
    }
  }
}

Strumenti mancanti o nome di pacchetto obsoleto

Il pacchetto corretto è @playwright/mcp. Il vecchio nome @modelcontextprotocol/server-playwright è deprecato, mentre @executeautomation/playwright-mcp-server è un progetto separato della community. Se la connessione si apre ma non compare alcuno strumento, verifica il pacchetto esatto che Claude Code sta avviando, non quello che pensi di aver scritto.

Playwright MCP ha bisogno anche del binario del browser. Se il server parte ma un avvio fallisce, esegui npx playwright install e aggiungi npx playwright install-deps su Linux o in Docker. La documentazione ufficiale indica un requisito di Node.js che cambia da pagina a pagina, 18 o versione successiva nel README, 20 o versione successiva nella guida introduttiva, quindi controlla la pagina che hai davanti e il tuo node --version.

Un server che muore e non torna più

Claude Code non riconnette automaticamente i server stdio. Quando il sottoprocesso muore, il server viene contrassegnato come failed e devi riconnetterlo a mano tramite /mcp. Se il crash di una scheda del browser o la sospensione di un portatile hanno ucciso il server a metà compito, la soluzione è una riconnessione, non una reinstallazione.

Un terminale di Claude Code in esecuzione sotto Playwright MCP accanto ai risultati di ricerca delle issue di microsoft/playwright-mcp: il terminale mostra lo step di lettura del README e quello di ricerca delle issue con i contatori di token e tempo trascorso, mentre il browser mostra la query is:issue Connection closed che restituisce dodici issue chiuse più un avviso che rimanda altrove
La via MCP a metà ricerca. A sinistra l'esecuzione ha letto il README e sta lavorando sull'elenco di parole chiave; a destra la query per 'Connection closed' restituisce dodici issue chiuse, un avviso fissato sopra di esse che rimanda al repository principale di Playwright e uno zero nella scheda Open. La superficie delle prove è reale: è un elenco di candidati, non una risposta.

Quando conviene passare da MCP alla CLI o a un browser reale?

Tieni MCP quando vuoi strumenti strutturati dentro il ciclo dell'agente, un'azione del browser con uno snapshot restituito, oppure uno strumento che Claude Code può valutare per nome. Passa alla Playwright CLI quando il compito è di tipo shell, uno script, un file di output salvato o un'esecuzione che vuoi ripetere identica senza il ciclo dell'agente.

Per la stessa classe di errore su una sessione Chrome esistente, Chrome DevTools MCP: configurazione, sessioni esistenti e correzioni lo spiega passo per passo.

Una volta connessi, i server costano anche contesto; come ridurre il consumo di token di MCP affronta questo compromesso.

Passa a una via su browser reale quando il requisito imprescindibile è uno stato di login approvato. Un profilo Playwright nuovo e isolato non eredita la tua sessione Chrome di tutti i giorni, e nessun flag di MCP lo cambia da solo.

Per il menu più ampio di vie del browser che un agente può seguire, i cinque modi per dare un browser a Claude Code le confrontano per costo di configurazione e comportamento dello stato di login.

Abbiamo eseguito lo stesso prompt di ricerca su due di queste vie, sulla stessa macchina: il server Playwright MCP configurato e uno Space del browser indipendente guidato dalla CLI di ego-browser. Il prompt chiedeva il README del repository, il comando di installazione, il requisito di Node.js e fino a tre issue riguardanti Connection closed, npx e stdio, ciascuna con ambiente, problema e soluzione. Entrambe le esecuzioni hanno finito per segnalare tre issue. Non hanno segnalato le stesse tre.

La via MCP ha letto prima il repository, ha confermato il README e il requisito di Node.js 18, poi è passata alla scheda Issues. Da lì ha letto ogni issue come dump del DOM salvato e ha recuperato i campi con strumenti testuali della shell. Al minuto tre e quaranta secondi stava aprendo la seconda issue, e l'esecuzione si è conclusa intorno ai sette minuti e quindici secondi con le issue 1385, 1540 e 1611.

La via su browser reale ha interrogato il DOM live dentro la pagina invece di scaricarlo, e ha aperto un secondo Space così che i risultati di ricerca e le pagine delle issue restassero visibili contemporaneamente. Entro tre minuti e tre secondi aveva un candidato confermato, e ha raggiunto l'avviso del repository della terza issue a quattro minuti e undici secondi. Ha segnalato 658, 1540 e 1385.

La sovrapposizione è 1540 e 1385. La differenza conta più della sovrapposizione: 658 è la discussione che contiene l'unica soluzione di configurazione confermata da diversi segnalatori, e l'esecuzione MCP non l'ha fatta emergere. La via su browser reale ha anche scartato un candidato perché troppo debole, mentre quella MCP ha tenuto una issue che il suo stesso autore aveva chiuso come non valida per quel repository. È una differenza di reperimento delle fonti, non di velocità, ed è il motivo onesto per scegliere una via invece di un cronometro.

Osservato in questa esecuzioneVia Playwright MCPVia su browser reale
Come è stata letta la paginaSnapshot salvato su file, poi riletto con strumenti testuali della shellDOM live interrogato dentro la pagina mentre restava aperta
Seconda issue aperta a3m 40s3m 03s, con un candidato confermato
Terza issue raggiunta aAncora in lettura a 5m 45s4m 11s, report già in corso
Issue segnalate1385, 1540, 1611658, 1540, 1385
Conteneva la soluzione di configurazione funzionanteNoSì, issue 658
Visibile e interrompibile durante l'esecuzioneNo, solo attività degli strumentiSì, entrambi gli Space sullo schermo, con un controllo per prendere il comando
ViaChe cosa può fareChe cosa non può dare per scontato
Server MCPEspone a Claude Code strumenti con un nome e prove live dalle pagine.Non diventa una suite di test durevole né eredita di default lo stato personale di Chrome.
Playwright CLIEsegue comandi shell concisi e salva snapshot o file di output per una lettura selettiva.Non può funzionare in un client privo di accesso a shell e file system.
Via su browser realeOpera uno spazio di lavoro del browser indipendente con stato idoneo e approvato.Non fornisce fixture, asserzioni, mock di rete o trace di Playwright Test.

Per il confronto completo tra interfaccia e costo in contesto, leggi Playwright MCP vs CLI. Questa pagina resta concentrata sulla configurazione di Claude Code e sulle correzioni per Playwright.

Dove si inserisce ego (lite) e dove no?

ego (lite) è una via di esecuzione diversa per i lavori in cui la connessione MCP non è il problema. Tramite lo skill ego-browser guida un browser Chromium reale in uno Space indipendente e può riutilizzare uno stato idoneo autorizzato dall'utente, cosa che conta quando un compito richiede una sessione autenticata, passaggi visibili o una persona che prenda il comando a metà esecuzione.

Due Space di ego (lite) affiancati: una pagina di ricerca in uno e una discussione di issue su GitHub aperta nell'altro, entrambi contrassegnati come in esecuzione sotto il controllo dell'agente con un pulsante per prendere il comando
Due Space tenuti aperti contemporaneamente durante la ricerca delle issue: la pagina di ricerca e la discussione. Entrambi sono visibili mentre l'agente lavora, e ciascuno può essere preso in mano a metà esecuzione.
L'esecuzione di ego (lite) che legge la issue 658 di GitHub tramite lo skill ego-browser: il terminale mostra lo script che chiama taskSpace e page.evaluate sul contenitore del visualizzatore della issue, e il browser mostra la issue 658 chiusa con lo stack trace di un segnalatore su Windows e la risposta di un secondo utente
La via di ego (lite) che legge la fonte primaria. Lo script apre la issue 658 e preleva la discussione direttamente dal visualizzatore della issue: lo stack trace dello stesso segnalatore cita Windows, npx e il percorso di cli.js nell'errore. È la lettura della discussione stessa a trasformare una corrispondenza per parola chiave in un ambiente, un problema e una soluzione.

Il flusso di lavoro è un unico giro in JavaScript, non un lungo flusso di chiamate agli strumenti MCP. Apri uno Space una volta sola, poi raggruppi i controlli che altrimenti eseguiresti una singola azione del browser alla volta:

ego-browser nodejs <<'EOF'
const task = await taskSpace("article-qa");
for (const [slug, url] of Object.entries({
  home: "https://lite.ego.app/",
  mcpConfig: "https://lite.ego.app/article/claude-code-mcp-configuration"
})) {
  const page = await task.newPage();
  await page.goto(url, { waitUntil: "domcontentloaded" });
  const report = await page.evaluate(() => ({
    h1: document.querySelectorAll("h1").length,
    horizontalOverflow: document.documentElement.scrollWidth > innerWidth
  }));
  console.log(slug, report);
}
await task.finish({ keep: [] });
EOF

Quello schema viene già usato nella nostra pipeline di pubblicazione. Il 10 settembre 2026 abbiamo tenuto aperte otto pagine di articolo in un unico Space e controllato insieme i layout desktop e mobile da 390 pixel: canonical, tag di lingua, un solo H1, ordine dei titoli, caricamento delle immagini e testo alternativo, destinazioni degli anchor, overflow del codice e overflow orizzontale, poi abbiamo fatto clic su un indice dell'articolo e verificato che il titolo di destinazione entrasse nel viewport.

Non è un server MCP, non è un runner di Playwright Test e non è un plugin di Claude Code. Usalo quando un agente ha bisogno di uno spazio di lavoro del browser ispezionabile con stato live approvato. Tieni Playwright per le suite E2E ricche di asserzioni, il mock di rete, gli artefatti di trace e la CI headless.

Domande frequenti

Come aggiungo un server MCP a Claude Code?

Usa claude mcp add, con -- che separa i flag di Claude Code dal comando del server. Aggiungi --scope project o --scope user deliberatamente, poi verifica con claude mcp list o /mcp.

Dove salva Claude Code la configurazione MCP?

Gli scope local e user risiedono in ~/.claude.json. Lo scope project risiede in un file .mcp.json nella radice del progetto, che puoi versionare.

Perché Claude Code dice Pending approval?

La configurazione MCP con scope project richiede un'approvazione di fiducia nelle sessioni interattive. Apri Claude Code nel progetto considerato attendibile, esamina il comando e approvalo.

Un server di progetto chiede l'approvazione in CI?

No. claude -p, Agent SDK e le sessioni nel cloud non possono mostrare il prompt, quindi caricano i server con scope project senza chiedere. Tratta un .mcp.json committato come una superficie più ampia al di fuori dell'uso interattivo.

Perché Playwright MCP fallisce con Connection closed su Windows?

Su Windows npx è npx.cmd, un wrapper batch la cui pipe stdio non è utilizzabile da Claude Code senza una shell. Racchiudi il comando con cmd /c, oppure richiama node sul file cli.js del pacchetto.

Qual è il nome corretto del pacchetto Playwright MCP?

@playwright/mcp è il pacchetto ufficiale. Il vecchio nome @modelcontextprotocol/server-playwright è deprecato, mentre @executeautomation/playwright-mcp-server è un progetto separato della community.

Quale versione di Node.js richiede Playwright MCP?

Le pagine ufficiali non concordano: il README dice 18 o versione successiva, la guida introduttiva dice 20 o versione successiva. Controlla node --version e la pagina che stai leggendo davvero prima di fidarti dell'una o dell'altra.

Playwright MCP usa il mio login Chrome esistente?

Non di default. Lo stato del browser dipende dalla modalità isolata, da una directory user-data, dallo storage state oppure da una via su browser reale che configuri separatamente.

Devo usare MCP, la CLI o un browser reale con Claude Code?

Usa MCP per strumenti browser strutturati dentro il ciclo dell'agente. Usa la CLI per compiti orientati alla shell con artefatti su file. Usa una via su browser reale quando il requisito è uno stato di login approvato.

ego (lite) può sostituire Playwright MCP?

Non come sostituto diretto dell'integrazione MCP. ego (lite) è un browser Chromium separato che dà all'agente un suo Space isolato ed eredita il tuo stato di login esistente, quindi copre i compiti in cui il server MCP si connette senza problemi ma la sessione del browser dietro di esso è l'ostacolo. Non è un server MCP e non sostituisce Playwright MCP.