dev. phpray/ phpray
by phpray.dev · remote · no sign-in to list tools · v0.15.6 · published by dev.phpray
Ask an agent why a PHP site is slow: every request with its SQL, HTTP calls, errors and N+1.
10 tools: 7 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things7Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http phpray https://phpray.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnphpray_sites
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...p95 latency and error rate. Start here: every other tool needs a site_id from this list."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 7Claude Code: ask
phpray_alertsAlerts currently firing across every site this token can see, worst overrun first.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Alerts currently firing across every site this token can see, worst overrun first.
phpray_componentsTime attributed to each plugin, theme or vendor package on profiled requests.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
phpray_errorsRequests 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.No findings
Why it is in this group
- The description's first verb is "request": a word for a change.
Description, as the server wrote it 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.
phpray_overviewHeadline numbers for one site over a time window: requests, errors, p50/p95/p99 latency, database share and N+1 count.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
phpray_slow_pagesThe slowest URLs on a site, with request counts and p95, from the request timeseries.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it The slowest URLs on a site, with request counts and p95, from the request timeseries. Answers "which page is slow".
phpray_traceOne 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
phpray_tracesRecent requests for a site.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Recent requests for a site. Filter with min_ms and status to find the bad ones, then pass an id to phpray_trace.
Only reads 3Claude Code: allow
phpray_compareTwo time ranges for one site side by side.No findings
Why it is in this group
- The name "phpray_compare" says "compare": a word for reading.
Description, as the server wrote it 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.
phpray_sitesList the PHP sites this token can see, with requests, p95 latency and error rate.1 finding
Why it is in this group
- The description's first verb is "list": a word for reading.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...p95 latency and error rate. Start here: every other tool needs a site_id from this list."
Description, as the server wrote it 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.
phpray_slow_queriesSQL fingerprints ordered by time spent, with call counts and the caller when known.No findings
Why it is in this group
- The name "phpray_slow_queries" says "query": a word for reading.
Description, as the server wrote it SQL fingerprints ordered by time spent, with call counts and the caller when known. Literals are already masked. Answers "which query is slow".
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.15.6. Values in angle brackets are yours to fill in.
claude mcp add --transport http phpray https://phpray.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__phpray__phpray_sites",
"mcp__phpray__phpray_slow_queries",
"mcp__phpray__phpray_compare"
],
"ask": [
"mcp__phpray__phpray_overview",
"mcp__phpray__phpray_slow_pages",
"mcp__phpray__phpray_components",
"mcp__phpray__phpray_errors",
"mcp__phpray__phpray_traces",
"mcp__phpray__phpray_trace",
"mcp__phpray__phpray_alerts"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as phpray. Review it before you use it.