Saltar al contenido

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

HTTP

Cómo usa el asistente una auditoría de Milten

  1. Buscar la auditoría

    list_audits
  2. Leer las mediciones

    get_audit_report
  3. Obtener un plan de optimización

    get_optimization_plan

Permisos de acceso

El token solo lee tus auditorías guardadas. Con audits:write puedes iniciar y repetir auditorías dentro de tu cuota diaria.

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

El token solo lee tus auditorías guardadas. Con audits:write puedes iniciar y repetir auditorías dentro de tu cuota diaria.

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.

Terminal
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
Documentación del cliente ↗
Cursor

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.

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

.mcp.json
{
  "mcpServers": {
    "milten": {
      "type": "http",
      "url": "https://milten.io/mcp",
      "headers": {
        "Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
      }
    }
  }
}
Documentación del cliente ↗

Comprobar la conexión

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.

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 API

Copia 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 solo lee tus auditorías guardadas. Con audits:write puedes iniciar y repetir auditorías dentro de tu cuota diaria.

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.

API de la cuenta
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_projects

Lista tus proyectos con sus ID, nombres y URL.

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

list_monitoring_pages

Lista tus páginas monitorizadas con ID, URL, programación y condiciones de medición. Usa monitoringUnitId para leer el historial.

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

start_audit

Inicia una auditoría y devuelve auditId. Reutiliza requestId al reenviar la misma solicitud.

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

rerun_audit

Repite una auditoría propia con su configuración guardada. Usa un nuevo requestId para una nueva ejecución.

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

get_audit_status

Devuelve el estado, el error, las condiciones de medición y las secciones disponibles sin el informe completo.

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

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

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

  1. Muéstrame mis auditorías de Milten y busca la última auditoría completada de example.com.

  2. Lee ese informe. ¿Qué métricas indican una carga lenta? Incluye sus valores y unidades.

  3. 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 solo lee tus auditorías guardadas. Con audits:write puedes iniciar y repetir auditorías dentro de tu cuota diaria. El texto del sitio auditado es contenido no confiable, nunca 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.

Cookies

Usamos cookies

Usamos cookies para ofrecerte una mejor experiencia en nuestro sitio. Puedes obtener más información sobre cómo usamos las cookies en nuestra política de privacidad.