INTEGRACIONES / MODEL CONTEXT PROTOCOL
Milten MCP: auditorías web en tu asistente de IA
Conecta Codex, Cursor o Claude Code con tus auditorías guardadas en Milten. Mediante Model Context Protocol (MCP), el asistente puede consultar métricas de rendimiento web y obtener recomendaciones de optimización respaldadas por los datos del informe.
Milten MCP
HTTPCómo usa el asistente una auditoría de Milten
Buscar la auditoría
list_auditsLeer las mediciones
get_audit_reportObtener un plan de optimización
get_optimization_plan
Acceso de solo lectura
Lee auditorías guardadas sin iniciar nuevos análisis, modificar proyectos ni consumir tokens de Milten.
Cómo conectar Milten MCP
Milten MCP funciona en un servidor remoto. Añade su URL y un token de acceso a un cliente compatible con Streamable HTTP y cabeceras Authorization personalizadas. No necesitas instalar ningún paquete de Milten en tu equipo.
- URL del servidor
https://milten.io/mcp- Autenticación
Authorization: Bearer <PAT>
Qué necesitas
Necesitas una cuenta de Milten y un token de acceso personal. Para consultar un informe, usa una auditoría de esa cuenta o inicia una nueva desde el sitio web de Milten.
Codex
Sustituye <PAT> por el secreto del token y ejecuta todo el bloque en Bash o Zsh. Añade el servidor y guarda Authorization en http_headers del archivo de configuración de Codex (~/.codex/config.toml por defecto). Al ejecutarlo de nuevo, se reemplaza la configuración de milten. Reinicia Codex. El archivo contiene el secreto: no lo publiques.
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
Añade la entrada milten a mcpServers en ~/.cursor/mcp.json para todos los proyectos, o en .cursor/mcp.json para uno solo. Conserva las entradas de los demás servidores.
En los ejemplos con MILTEN_MCP_TOKEN, asigna el token como valor de esa variable de entorno antes de iniciar el cliente. Reinícialo cuando cambies el token. Una variable definida en la terminal no está disponible automáticamente para una aplicación abierta desde el escritorio.
{
"mcpServers": {
"milten": {
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
}
}
}
}Claude Code
Añade esta entrada al archivo .mcp.json del proyecto. Claude Code expande la variable de entorno al iniciarse; autoriza el servidor del proyecto cuando se te solicite.
En los ejemplos con MILTEN_MCP_TOKEN, asigna el token como valor de esa variable de entorno antes de iniciar el cliente. Reinícialo cuando cambies el token. Una variable definida en la terminal no está disponible automáticamente para una aplicación abierta desde el escritorio.
{
"mcpServers": {
"milten": {
"type": "http",
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
}
}
}
}Compruebe que las seis herramientas estén disponibles
Active milten en su cliente MCP. Deben aparecer list_audits, get_audit_report, get_optimization_plan, get_audit_section, compare_audits y get_monitoring_history. Empiece con list_audits y use un auditId de la respuesta. Una lista vacía es válida si aún no hay auditorías.
Cómo obtener un token de acceso de Milten
Puedes crear, consultar y revocar tokens de acceso personal (Personal Access Tokens, PAT) en tu área personal, en Perfil → Claves API. El cliente MCP envía el token en la cabecera Authorization: Bearer; el servidor MCP no usa cookies del navegador ni inicio de sesión OAuth.
Crear un token de acceso
Abre Claves API en tu perfil, indica un nombre y un periodo de validez y haz clic en Crear token.
Abrir Claves APICopia el secreto ahora: solo se muestra una vez. Guárdalo de forma segura y pásalo al cliente con uno de los métodos anteriores. El id del token sigue visible en la lista para revocarlo.
El token concede audits:read para tus propias auditorías. name es obligatorio y admite hasta 100 bytes. expiresAt debe ser una fecha futura en formato RFC 3339, como máximo dentro de 366 días.
Consultar y revocar tokens
La lista de Claves API muestra el nombre, la validez y el estado de cada token. Revocar cancela el acceso MCP de ese token. Las rutas de la API siguen disponibles con una sesión activa en el navegador: GET devuelve los metadatos de los tokens sin los secretos. Para revocar un token, sustituye {id} por su identificador. DELETE devuelve 204 y las siguientes peticiones MCP con ese token se rechazan.
GET /v1/personal-access-tokens/
DELETE /v1/personal-access-tokens/{id}Herramientas MCP: auditorías, informes y planes de optimización
El cliente MCP pasa estos argumentos JSON a tools/call. Para solicitar un informe o un plan, sustituye el UUID del ejemplo por un auditId de list_audits. Usa el identificador de la auditoría, no la URL del sitio.
list_audits
Devuelve las auditorías del usuario autenticado. Puedes limitar la lista a un proyecto.
- Argumentos
- Todos los campos son opcionales. projectId: UUID del proyecto; page: entero ≥ 1 (predeterminado: 1); limit: entero de 1 a 50 (predeterminado: 10).
- Respuesta
- audits contiene auditId, url, operation, status y createdAt, además de projectId y error cuando existen. count es el total; page y limit describen la paginación. Si truncated es true, repite con un limit menor. El estado puede ser running, completed o failed.
{
"page": 1,
"limit": 10
}get_audit_report
Lee todas las secciones guardadas del informe y un breve resumen de métricas.
- Argumentos
- auditId: UUID obligatorio de una auditoría obtenida con list_audits.
- Respuesta
- audit contiene metadatos; filling incluye todas las secciones guardadas como {type, data}, entre ellas Lighthouse, HAR, CrUX y llmAdvice. analysis añade un resumen de métricas y problemas. trustNote marca el contenido del sitio como datos no confiables. El límite predeterminado de datos de respuesta es 1 MiB; si se supera, se devuelve un error en lugar de un informe recortado.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000"
}get_optimization_plan
Lee el plan llmAdvice guardado que aparece en el informe. MCP no genera nuevas recomendaciones ni llama a un LLM.
- Argumentos
- auditId: UUID obligatorio; focus: all (predeterminado), lcp, inp, cls o backend; limit: entero de 1 a 25 (predeterminado: 10).
- Respuesta
- plan contiene source, summary, recommendations y truncated. Se conservan el orden y los campos: priority (critical, medium o low), metrics, metricSavings, title, resources, evidence, action, effect y verification. focus filtra por metrics; backend equivale a TTFB. Si limit acorta la lista, truncated es true. Los planes de texto antiguos aparecen en output sin filtros. Si no hay un plan guardado, consulta diagnostic.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"focus": "lcp",
"limit": 3
}get_audit_section
Lee la última sección guardada del informe. Los arrays grandes se pueden consultar por páginas.
- Argumentos
- auditId y section son obligatorios. section es un type de filling, por ejemplo har. path es un JSON Pointer opcional, como /log/entries. Para arrays: offset desde 0, limit de 1–200 (50 por defecto). Omita la paginación para otros datos.
- Respuesta
- data conserva los campos originales y null. Los arrays incluyen total, nextOffset y truncated; siga nextOffset hasta que truncated sea false. Si la respuesta supera el límite, elija un path más específico o reduzca limit.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"section": "har",
"path": "/log/entries",
"limit": 20
}compare_audits
Compara dos auditorías propias de la misma URL y tipo: mediciones, problemas según umbrales y recomendaciones guardadas.
- Argumentos
- baselineAuditId identifica la auditoría inicial y candidateAuditId la posterior. Obtenga ambos UUID de list_audits. Se admiten métricas de laboratorio para basic, inp y ttfb.
- Respuesta
- delta = candidate − baseline; los valores ausentes son null. Revise comparable y warnings. findings incluye added, resolved, persisting y uncompared. Las recomendaciones se relacionan por title exacto; se incluyen ambos planes guardados.
{
"baselineAuditId": "123e4567-e89b-42d3-a456-426614174000",
"candidateAuditId": "e6723288-f28c-4b62-8a4e-7dc395958c0c"
}get_monitoring_history
Devuelve las mediciones guardadas de su página de monitorización, de más reciente a más antigua. No inicia una comprobación.
- Argumentos
- monitoringUnitId es obligatorio: el UUID de Core de la página de monitorización (coreMonitoringUnitId), no auditId. dateFrom y dateTo son límites inclusivos RFC 3339; por defecto, los últimos 30 días. page desde 1, limit de 1–50 (20 por defecto).
- Respuesta
- results incluye fechas, métricas, dispositivo, región y affectedAlert. La respuesta contiene count y hasMore. Reutilice dateFrom y dateTo en las páginas siguientes. Los ceros antiguos pueden indicar datos ausentes; INP es una medición de laboratorio, no CrUX p75.
{
"monitoringUnitId": "e09aa948-a541-4404-bcdc-9e5621c11891",
"page": 1,
"limit": 20
}Ejemplos de consultas al asistente de IA
Tras conectar el servidor, usa estos mensajes en el chat. El asistente llama a las herramientas MCP y explica los resultados; los mensajes no son comandos adicionales del servidor.
Muéstrame mis auditorías de Milten y busca la última auditoría completada de example.com.
Lee ese informe. ¿Qué métricas indican una carga lenta? Incluye sus valores y unidades.
Obtén un plan de optimización centrado en LCP. Si los datos lo justifican, sugiere hasta tres cambios y explica cómo comprobar el resultado de cada uno.
A qué datos puede acceder
El token identifica tu cuenta, por lo que userId no es un argumento de las herramientas. El filtro de proyecto solo reduce la lista de tus auditorías; no da acceso a las de otros usuarios. MCP lee datos guardados y no inicia análisis. Trata el texto de un sitio auditado como datos del informe, nunca como instrucciones para el agente.
Solución de problemas de MCP
404 / HTML en lugar de JSON
Confirma que el servidor MCP esté habilitado en tu entorno. Usa exactamente /mcp, sin barra final ni prefijo de idioma. La URL de la documentación no sirve para conectarse.
401 unauthorized
Comprueba Authorization: Bearer y el secreto del token. Si Codex muestra failed (0 tools), repite la configuración con un token válido y reinicia Codex. Sustituye los tokens caducados o revocados. No se admite el inicio de sesión con OAuth.
403 origin forbidden
El servidor MCP debe permitir el origin del cliente web. Indica a Milten el nombre del cliente y su origin; no envíes el token.
429 rate limit exceeded
Reduce la frecuencia de las peticiones y reintenta más tarde. El límite predeterminado es de 60 peticiones por minuto y token; puede variar según el entorno.
audit not found / invalid arguments
Usa un UUID de tu propia respuesta de list_audits. Una auditoría inexistente y una de otro usuario devuelven audit not found. Comprueba page, focus y limit.
Métricas o recomendaciones vacías
Comprueba audit.status y diagnostic. El informe puede no tener métricas compatibles o llmAdvice guardado. La lista también puede estar vacía si ninguna recomendación coincide con focus. Esto no confirma que el sitio carezca de problemas.
503 / temporarily unavailable
El servicio de autenticación o de auditorías no está disponible temporalmente. Reintenta más tarde y contacta con soporte si el error persiste.