ppsspp_health
Probe the MCP server for liveness and readiness, and optionally run a four-point session health check to verify emulator state without modifying it.
Instructions
PURPOSE: Probe MCP server liveness and readiness — plus an optional four-point session health battery.
USAGE: no args for the server-level probe (does NOT contact PPSSPP); pass session_id to also run the session battery (iso_loaded / cpu_running / ws_connected / game_mode_valid — absorbed from the former ppsspp_smoke_test tool).
BEHAVIOR: READ-ONLY. Server counters are read in-memory; the session battery (when requested) contacts PPSSPP over the session transport but never mutates state.
READING session_checks: each entry carries value_status besides passed -- 'ok' (the probe really read), 'stale_address_suspected' (the read succeeded and returned zero on several consecutive readings, so the probe address may have drifted -- a suspicion, not a verdict), 'failed' (the read raised or the data was absent; no value is reported), 'not_configured' (no probe address, so nothing was read). A probe that READ ZERO and one that COULD NOT READ both show passed=false while meaning opposite things: the first is a fact about the game, the second about the tooling. Do not read passed=false alone as a finding about the emulated game.
RETURNS: Dict with status ('ok'/'degraded'), version, python_version, pydantic_version, uptime_s, tool_count, session_count — plus session_checks: [{name, passed, detail, value_status, value?}] and overall_session_status when session_id is provided.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Optional session ID — when provided, appends session_checks (the four-point battery: iso_loaded / cpu_running / ws_connected / game_mode_valid, absorbed from ppsspp_smoke_test) to the server-level report. Omit for the zero-contact server liveness probe. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Server status: 'ok' when all subsystems healthy; 'degraded' when sessions.json is inaccessible/corrupted but server is otherwise functional. | |
| version | Yes | MCP server version. | |
| uptime_s | Yes | Server uptime in seconds. | |
| tool_count | Yes | Number of registered MCP tools. | |
| session_count | Yes | Number of active sessions. | |
| session_error | Yes | When status='degraded', describes the sessions.json issue (e.g. 'FileNotFoundError: ...' or 'JSONDecodeError: ...'). None when sessions.json is healthy. | |
| python_version | Yes | Python interpreter version. | |
| session_checks | No | ||
| pydantic_version | Yes | Pydantic version. | |
| overall_session_status | No |