MCP server for PS5 control - discover, register, and wake PlayStation 5 consoles
The server defines 6 tools with explicit schemas and descriptions visible in src/index.ts. Most tools have adequate names and descriptions, but critical gaps exist: (1) descriptions lack LLM-optimization guidance (e.g., dependencies, prerequisites, state-modifying intent); (2) several parameters lack descriptions or have vague descriptions; (3) output schemas are not documented, responses are inferred from code but not formally declared to the LLM; (4) error handling lacks recovery guidance; (5) no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear WRITE vs READ-ONLY semantics. Average description length ~180 chars (within baseline 194), but quality is uneven. Naming follows verb_noun pattern (psn_login, ps5_discover, ps5_register) which is good, but some names could be more explicit (ps5_status vs ps5_get_status).
Discover PS5 (and PS4) consoles on the local network. Returns list of found consoles with their IP addresses, names, and status (AWAKE/STANDBY). Requires devices to be on the same network.
Register your PS5 for Remote Play. This is required once before using wake commands. Your PS5 must be turned ON and on the same network. You will need to enter a PIN from your PS5 (go to Settings > System > Remote Play > Link Device on your PS5 to get the PIN). IMPORTANT: You must complete PSN authentication first using psn_login tool before registering.
Get the status of discovered PS5 consoles (AWAKE or STANDBY). Returns all discovered consoles with their current status.
Send a wake packet to turn on a PS5 console. The console must be in standby mode and on the same local network. Requires the console to be registered first (run ps5_register).
Get current authenticated PSN user information including username, account ID, and other profile details.
No output schemas documented for any tool. LLMs cannot predict response structure and must infer from context, leading to parsing errors and wasted reasoning.
Missing tool annotations (readOnlyHint, destructiveHint). Tools with WRITE risk (psn_login, ps5_register, ps5_wake) should declare destructiveHint=true; READ-ONLY tools should declare readOnlyHint=true for safety.
Descriptions lack recovery guidance and prerequisites. psn_login does not state it is required before ps5_register; ps5_register does not state it is required before ps5_wake. Dependencies should be explicit so LLMs plan the correct sequence.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Authenticate with PlayStation Network (PSN). Opens a browser window for OAuth2 login. After logging in, copy the redirect URL from your browser and call this tool again with the redirectUrl parameter.
Parameter types not consistently declared in schema. ps5_register 'host' and 'accountId' lack explicit 'type: string' declarations, although descriptions imply string. Schema must be self-contained.
Numeric parameter 'timeout' in ps5_discover lacks bounds (min/max). LLMs may pass absurd values (0, 999999). Add minProperties/maxProperties or document range in description.
No error handling guidance. Tools do not document recovery paths. E.g., psn_login does not explain what to do if redirect URL is invalid; ps5_wake does not explain host unreachable recovery.
Vague parameter descriptions. ps5_wake 'credential' described as 'User-credential string' without explaining what content it holds or how to obtain it if not auto-fetched.
Tool name 'ps5_status' is generic and could be confused with HTTP status. Verb_noun naming like 'get_ps5_status' or 'list_ps5_consoles' would be clearer.