Vai al contenuto

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

HTTP

Come l’assistente usa un audit Milten

  1. Trova l’audit

    list_audits
  2. Leggi le misurazioni

    get_audit_report
  3. Ottieni un piano di ottimizzazione

    get_optimization_plan

Permessi di accesso

Il token legge solo i tuoi audit salvati. Con audits:write puoi avviare e ripetere audit entro la quota giornaliera.

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

Il token legge solo i tuoi audit salvati. Con audits:write puoi avviare e ripetere audit entro la quota giornaliera.

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.

Terminale
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>"
EOF
Documentazione del client ↗
Cursor

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.

.cursor/mcp.json
{
  "mcpServers": {
    "milten": {
      "url": "https://milten.io/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
      }
    }
  }
}
Documentazione del client ↗
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.

.mcp.json
{
  "mcpServers": {
    "milten": {
      "type": "http",
      "url": "https://milten.io/mcp",
      "headers": {
        "Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
      }
    }
  }
}
Documentazione del client ↗

Verifica la connessione

list_projects, list_monitoring_pages, list_audits, get_audit_status, get_audit_report, get_optimization_plan, get_audit_section, compare_audits, get_monitoring_history. audits:write: start_audit, rerun_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 API

Copia 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 legge solo i tuoi audit salvati. Con audits:write puoi avviare e ripetere audit entro la quota giornaliera.

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.

API dell’account
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_projects

Elenca i tuoi progetti con ID, nome e URL.

Argomenti
page?, limit?
Risposta
projects, count, page, limit, hasMore
list_projects · JSON
{
  "page": 1,
  "limit": 20
}

list_monitoring_pages

Elenca le tue pagine monitorate con ID, URL, pianificazione e condizioni di misurazione. Usa monitoringUnitId per leggere la cronologia.

Argomenti
projectId?, page?, limit?
Risposta
pages, count, page, limit, hasMore
list_monitoring_pages · JSON
{
  "page": 1,
  "limit": 20
}

start_audit

Avvia un audit e restituisce auditId. Riutilizza requestId per inviare di nuovo la stessa richiesta.

Argomenti
requestId, url, operation, region; projectId?, formFactor?, deviceName?, cpu?, network?, lang?, maxPages?, skipThirdParty?
Risposta
auditId, statusTool, reportTool
start_audit · JSON
{
  "requestId": "6166f8ee-bb4e-4366-b359-0d321dbca341",
  "url": "https://example.com/",
  "operation": "seo",
  "region": "ru-mow"
}

rerun_audit

Ripete un audit di tua proprietà con le impostazioni salvate. Usa un nuovo requestId per una nuova esecuzione.

Argomenti
auditId, requestId
Risposta
auditId, statusTool, reportTool
rerun_audit · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000",
  "requestId": "93759350-c5d3-45dd-80c8-e8ca170df3ed"
}

get_audit_status

Restituisce stato, errore, condizioni di misurazione e sezioni disponibili senza il rapporto completo.

Argomenti
auditId
Risposta
audit, conditions, sections, trustNote
get_audit_status · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000"
}

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). url?, operation?, status?, dateFrom?, dateTo?
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.
list_audits · JSON
{
  "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 Speed Scanner, 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.
get_audit_report · JSON
{
  "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.
get_optimization_plan · JSON
{
  "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.
get_audit_section · JSON
{
  "auditId": "123e4567-e89b-42d3-a456-426614174000",
  "section": "seo",
  "path": "/pages",
  "limit": 5
}

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.
compare_audits · JSON
{
  "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.
get_monitoring_history · JSON
{
  "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.

  1. Mostra i miei audit Milten e trova l’ultimo audit completato per example.com.

  2. Leggi quel report. Quali metriche indicano un caricamento lento? Riporta i valori e le unità.

  3. 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 legge solo i tuoi audit salvati. Con audits:write puoi avviare e ripetere audit entro la quota giornaliera. Il testo del sito analizzato è un dato non attendibile, mai un’istruzione 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.

Cookie

Utilizziamo i cookie

Utilizziamo i cookie per offrirti un'esperienza migliore sul nostro sito. Puoi saperne di più su come utilizziamo i cookie nella nostra informativa sulla privacy.