phpray

Ask an agent why a PHP site is slow: every request with its SQL, HTTP calls, errors and N+1.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
97%
Integridad del esquema
86%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'phpray_components' description lacks action verben phpray_components

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,077Tokens (definiciones de herramientas)
~767 BTamaño de respuesta típico
Impacto moderado en la atención (0.84% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "phpray": {
      "url": "https://phpray.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://phpray.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (10)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢phpray_sites

List the PHP sites this token can see, with requests, p95 latency and error rate. Start here: every other tool needs a site_id from this list.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
⚪phpray_overview(site_id, window_minutes)

Headline numbers for one site over a time window: requests, errors, p50/p95/p99 latency, database share and N+1 count. Use this before digging into anything else.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "window_minutes": {
      "description": "How far back to look, in minutes. Default 60.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
⚪phpray_slow_pages(limit, site_id, window_minutes)

The slowest URLs on a site, with request counts and p95, from the request timeseries. Answers "which page is slow".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many URLs to return. Default 25.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "window_minutes": {
      "description": "How far back to look. Default 1440.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
🟢phpray_slow_queries(limit, site_id, window_minutes)

SQL fingerprints ordered by time spent, with call counts and the caller when known. Literals are already masked. Answers "which query is slow".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many queries to return. Default 20.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "window_minutes": {
      "description": "How far back to look. Default 1440.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
⚪phpray_components(limit, site_id, window_minutes)

Time attributed to each plugin, theme or vendor package on profiled requests. Answers "which plugin is slowing the site down". Empty when function profiling is off.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many components to return. Default 20.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "window_minutes": {
      "description": "How far back to look. Default 1440.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
⚪phpray_errors(limit, site_id, window_minutes)

Requests that failed on a site: PHP errors and warnings with file and line where PHP raised one, plus 5xx responses that carry no PHP error. Pass an id to phpray_trace to see what one of them did.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many to return. Default 20.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "window_minutes": {
      "description": "How far back to look. Default 1440.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
🟢phpray_traces(limit, min_ms, site_id, status, window_minutes)

Recent requests for a site. Filter with min_ms and status to find the bad ones, then pass an id to phpray_trace.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "How many to return. Default 50.",
      "type": "integer"
    },
    "min_ms": {
      "description": "Only requests slower than this.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "status": {
      "description": "Only this HTTP status, e.g. 500.",
      "type": "integer"
    },
    "window_minutes": {
      "description": "How far back to look. Default 1440.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
⚪phpray_trace(trace_id)

One request in full: wall time split into PHP, database and outbound HTTP, every query, every external call, errors, and the component breakdown when the request was profiled.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "trace_id": {
      "description": "Trace id from phpray_traces.",
      "type": "string"
    }
  },
  "required": [
    "trace_id"
  ]
}
🟡phpray_compare(from_a, from_b, site_id, to_a, to_b)

Two time ranges for one site side by side. Use it to check whether a deployment, a plugin update or a configuration change made things better or worse.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "from_a": {
      "description": "Start of range A (the earlier one), unix seconds. Without any range: the day before yesterday's 24 h against the last 24 h.",
      "type": "integer"
    },
    "from_b": {
      "description": "Start of range B, unix seconds.",
      "type": "integer"
    },
    "site_id": {
      "description": "Site id from phpray_sites.",
      "type": "string"
    },
    "to_a": {
      "description": "End of range A, unix seconds.",
      "type": "integer"
    },
    "to_b": {
      "description": "End of range B, unix seconds.",
      "type": "integer"
    }
  },
  "required": [
    "site_id"
  ]
}
⚪phpray_alerts

Alerts currently firing across every site this token can see, worst overrun first.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada10 herramientas
verificadoversión no registrada10 herramientas