INTEGRAZIONI / MODEL CONTEXT PROTOCOL
Milten MCP: gli audit web nel tuo assistente IA
Collega Codex, Cursor o Claude Code ai tuoi audit salvati in Milten. Tramite il Model Context Protocol (MCP), l’assistente può leggere le metriche di prestazione del sito e ottenere raccomandazioni di ottimizzazione fondate sui dati del report.
Milten MCP
HTTPCome l’assistente usa un audit Milten
Trova l’audit
list_auditsLeggi le misurazioni
get_audit_reportOttieni un piano di ottimizzazione
get_optimization_plan
Accesso in sola lettura
Legge gli audit salvati senza avviare nuove scansioni, modificare progetti o consumare token Milten.
Come connettersi a Milten MCP
Milten MCP viene eseguito su un server remoto. Aggiungi il suo URL e un token di accesso a un client che supporti Streamable HTTP e intestazioni Authorization personalizzate. Non occorre installare pacchetti Milten in locale.
- URL del server
https://milten.io/mcp- Autenticazione
Authorization: Bearer <PAT>
Cosa serve
Servono un account Milten e un token di accesso personale. Per leggere un report, usa un audit esistente di quell’account oppure avviane uno nuovo sul sito di Milten.
Codex
Sostituisci <PAT> con il valore segreto del token ed esegui l’intero blocco in Bash o Zsh. Aggiunge il server e salva Authorization in http_headers nel file di configurazione di Codex (~/.codex/config.toml per impostazione predefinita). Eseguendolo di nuovo, le impostazioni di milten vengono sostituite. Riavvia Codex. Il file contiene il segreto: non pubblicarlo.
codex mcp add milten --url https://milten.io/mcp &&
cat >> "${CODEX_HOME:-$HOME/.codex}/config.toml" <<'EOF'
[mcp_servers.milten.http_headers]
Authorization = "Bearer <PAT>"
EOFCursor
Aggiungi la voce milten a mcpServers in ~/.cursor/mcp.json per usarla in tutti i progetti, oppure in .cursor/mcp.json per un solo progetto. Mantieni le voci degli altri server.
Negli esempi con MILTEN_MCP_TOKEN, imposta il token come valore di questa variabile d’ambiente prima di avviare il client. Riavvialo dopo ogni modifica. Una variabile impostata nel terminale non è automaticamente disponibile a un’app aperta dal desktop.
{
"mcpServers": {
"milten": {
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
}
}
}
}Claude Code
Aggiungi questa voce al file .mcp.json del progetto. Claude Code risolve la variabile d’ambiente all’avvio; autorizza il server del progetto quando richiesto.
Negli esempi con MILTEN_MCP_TOKEN, imposta il token come valore di questa variabile d’ambiente prima di avviare il client. Riavvialo dopo ogni modifica. Una variabile impostata nel terminale non è automaticamente disponibile a un’app aperta dal desktop.
{
"mcpServers": {
"milten": {
"type": "http",
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
}
}
}
}Verificare che i sei strumenti siano disponibili
Attivare milten nel client MCP. Devono comparire list_audits, get_audit_report, get_optimization_plan, get_audit_section, compare_audits e get_monitoring_history. Iniziare con list_audits e usare un auditId della risposta. Una lista vuota è valida se non ci sono ancora audit.
Come ottenere un token di accesso Milten
Puoi creare, visualizzare e revocare i token di accesso personali (Personal Access Tokens, PAT) nella tua area personale, in Profilo → Chiavi API. Il client MCP invia il token nell’intestazione Authorization: Bearer. Il server MCP non usa i cookie del browser né l’accesso OAuth.
Crea un token di accesso
Apri Chiavi API nel tuo profilo, indica un nome e una durata di validità, quindi fai clic su Crea token.
Apri Chiavi APICopia subito il segreto: viene mostrato una sola volta. Conservalo in modo sicuro e passalo al client con uno dei metodi descritti sopra. L’id del token rimane visibile nell’elenco per revocarlo.
Il token concede il permesso audits:read per i tuoi audit. name è obbligatorio e ammette fino a 100 byte. expiresAt deve essere una data futura in formato RFC 3339, al massimo entro 366 giorni.
Visualizza e revoca i token
L’elenco in Chiavi API mostra nome, validità e stato dei token. Revoca interrompe l’accesso MCP di quel token. Le route dell’API restano disponibili con una sessione attiva nel browser: GET restituisce i metadati dei token senza i segreti. Per revocare un token, sostituisci {id} con il suo identificatore. DELETE restituisce 204 e le richieste MCP successive con quel token vengono rifiutate.
GET /v1/personal-access-tokens/
DELETE /v1/personal-access-tokens/{id}Strumenti MCP: audit, report e piani di ottimizzazione
Il client MCP passa questi argomenti JSON a tools/call. Per richiedere un report o un piano, sostituisci l’UUID dell’esempio con un auditId ottenuto da list_audits. Usa l’identificatore dell’audit, non l’URL del sito.
list_audits
Restituisce gli audit dell’utente autenticato. Puoi limitare l’elenco a un progetto.
- Argomenti
- Tutti i campi sono facoltativi. projectId: UUID del progetto; page: numero intero ≥ 1 (valore predefinito: 1); limit: numero intero da 1 a 50 (valore predefinito: 10).
- Risposta
- audits contiene auditId, url, operation, status e createdAt, oltre a projectId ed error quando presenti. count è il totale; page e limit descrivono la paginazione. Se truncated è true, ripeti la richiesta con un limit inferiore. Lo stato è running, completed o failed.
{
"page": 1,
"limit": 10
}get_audit_report
Leggi tutte le sezioni salvate del report e un breve riepilogo delle metriche.
- Argomenti
- auditId: UUID obbligatorio di un audit ottenuto da list_audits.
- Risposta
- audit contiene i metadati; filling contiene tutte le sezioni salvate come {type, data}, tra cui Lighthouse, HAR, CrUX e llmAdvice. analysis aggiunge un riepilogo delle metriche e dei problemi. trustNote indica che i contenuti del sito sono dati non attendibili. Il limite predefinito dei dati di risposta è 1 MiB; se viene superato, si riceve un errore invece di un report troncato.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000"
}get_optimization_plan
Leggi il piano llmAdvice salvato e mostrato nel report. MCP non genera nuove raccomandazioni e non chiama un LLM.
- Argomenti
- auditId: UUID obbligatorio; focus: all (predefinito), lcp, inp, cls o backend; limit: numero intero da 1 a 25 (valore predefinito: 10).
- Risposta
- plan contiene source, summary, recommendations e truncated. Ordine e campi sono preservati: priority (critical, medium o low), metrics, metricSavings, title, resources, evidence, action, effect e verification. focus filtra per metrics; backend corrisponde a TTFB. Se limit accorcia la lista, truncated è true. I vecchi piani testuali sono disponibili in output senza filtri. Se manca un piano salvato, leggi diagnostic.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"focus": "lcp",
"limit": 3
}get_audit_section
Legge l’ultima sezione salvata del rapporto. Gli array grandi possono essere recuperati a pagine.
- Argomenti
- auditId e section sono obbligatori. section è un type di filling, ad esempio har. path è un JSON Pointer facoltativo, come /log/entries. Per gli array: offset da 0, limit 1–200 (predefinito 50). Omettere la paginazione per altri dati.
- Risposta
- data conserva i campi originali e null. Gli array includono total, nextOffset e truncated; seguire nextOffset finché truncated è false. Se la risposta è troppo grande, scegliere un path più preciso o ridurre limit.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"section": "har",
"path": "/log/entries",
"limit": 20
}compare_audits
Confronta due audit propri dello stesso URL e tipo: misurazioni, problemi rispetto alle soglie e raccomandazioni salvate.
- Argomenti
- baselineAuditId indica l’audit iniziale, candidateAuditId quello successivo. Ottenere entrambi gli UUID da list_audits. Le metriche di laboratorio sono supportate per basic, inp e ttfb.
- Risposta
- delta = candidate − baseline; i valori mancanti sono null. Consultare comparable e warnings. findings include added, resolved, persisting e uncompared. Le raccomandazioni corrispondono per title esatto; sono inclusi entrambi i piani salvati.
{
"baselineAuditId": "123e4567-e89b-42d3-a456-426614174000",
"candidateAuditId": "e6723288-f28c-4b62-8a4e-7dc395958c0c"
}get_monitoring_history
Restituisce le misurazioni salvate della propria pagina monitorata, dalle più recenti. Non avvia controlli.
- Argomenti
- monitoringUnitId è obbligatorio: UUID Core della pagina monitorata (coreMonitoringUnitId), non auditId. dateFrom e dateTo sono limiti inclusivi RFC 3339; predefiniti gli ultimi 30 giorni. page da 1, limit 1–50 (predefinito 20).
- Risposta
- results include date, metriche, dispositivo, regione e affectedAlert. La risposta include count e hasMore. Riutilizzare dateFrom e dateTo nelle pagine successive. Gli zeri precedenti possono indicare dati mancanti; INP è una misura di laboratorio, non CrUX p75.
{
"monitoringUnitId": "e09aa948-a541-4404-bcdc-9e5621c11891",
"page": 1,
"limit": 20
}Esempi di richieste per l’assistente IA
Dopo la connessione, invia questi messaggi nella chat dell’assistente. L’assistente chiama gli strumenti MCP e ne spiega i risultati; i messaggi non sono comandi separati del server.
Mostra i miei audit Milten e trova l’ultimo audit completato per example.com.
Leggi quel report. Quali metriche indicano un caricamento lento? Riporta i valori e le unità.
Ottieni un piano di ottimizzazione incentrato su LCP. Se il report lo giustifica, suggerisci fino a tre modifiche e spiega come verificare il risultato di ciascuna.
A quali dati può accedere la connessione
Il token identifica il tuo account, quindi userId non è un argomento degli strumenti. Un filtro per progetto restringe soltanto il tuo elenco di audit; non consente di accedere agli audit di altri utenti. MCP legge dati salvati e non può avviare una scansione. Tratta il testo di un sito analizzato come dati del report, mai come istruzioni per l’agente.
Risolvi i problemi di connessione e utilizzo di MCP
404 / HTML al posto di JSON
Verifica che l’endpoint MCP sia abilitato nel tuo ambiente. Usa esattamente /mcp, senza barra finale né prefisso di lingua. La pagina della documentazione ha un URL diverso.
401 unauthorized
Verifica Authorization: Bearer e il valore segreto del token. Se Codex mostra failed (0 tools), ripeti la configurazione con un token valido e riavvia Codex. Sostituisci i token scaduti o revocati. L’accesso OAuth non è supportato.
403 origin forbidden
Per un client nel browser, il suo origin deve essere autorizzato dal server MCP. Comunica a Milten il nome del client e il suo origin, senza inviare il token.
429 rate limit exceeded
Riduci la frequenza delle richieste e riprova più tardi. Il limite predefinito del server è di 60 richieste al minuto per token; può variare a seconda dell’ambiente.
audit not found / invalid arguments
Usa un UUID di audit dalla tua risposta list_audits. Un audit inesistente e un audit di un altro utente restituiscono entrambi audit not found. Controlla i valori di paginazione, focus e limit.
Metriche o raccomandazioni vuote
Controlla audit.status e diagnostic. Il report potrebbe non avere metriche supportate o dati llmAdvice salvati. La lista può essere vuota anche quando nessuna raccomandazione corrisponde a focus. Questo non conferma l’assenza di problemi sul sito.
503 / temporarily unavailable
Il servizio di autenticazione o degli audit non è temporaneamente disponibile. Riprova più tardi e contatta l’assistenza se l’errore persiste.