Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PS5_HOSTYesYour PS5's IP address. There is no default.
PS5MCP_VIEWNoSet to 1 to show the app window; by default the MCP server starts the app headless.
PS5MCP_VIDEONoVideo source for the server, e.g. synthetic or file:PATH.
PS5MCP_STREAM_PORTNoPort used to start the MJPEG stream server with the MCP server, e.g. 8090.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
snapshotB

Current PS5 screen as a JPEG (scaled to max_width; the source is 1920x1080).

pressB

Press and release one button (e.g. cross, circle, up, options). Optionally return a frame afterwards.

holdC

Hold several buttons together for duration_ms, then release them.

stickC

Deflect the left or right stick. x, y in -1..1 (left/up negative), then return to centre.

triggerC

Pull L2 or R2 (side: left/right) to value 0..1, then release.

touchpadC

Click the touchpad. Coordinates are sent but not yet delivered by padd (touch mapping is unknown).

sequenceA

Run timed states in order, then release everything.

Each step: {"buttons": [...], "lx"/"ly"/"rx"/"ry": -1..1, "l2"/"r2": 0..1, "duration_ms": N}. A step with no inputs is a pause. Total duration is capped at 60 s.

record_startA

Start recording every input (agent tools and the keyboard in the viewer) as timed steps.

record_stopB

Stop recording and save it under name (letters, digits, - and _).

list_recordingsC

Saved recordings with their length.

play_recordingC

Replay a saved recording with its original timing (up to 5 minutes).

save_templateB

Save a region of the current frame (full 1920x1080 coordinates) as a template for wait_for.

list_templatesC

Saved template names.

wait_forB

Wait until a saved template appears on screen (or disappears, with gone=true).

Matching is normalised cross-correlation over the whole frame; score 1.0 is identical. Returns where it was found, the score and the frame.

release_allA

Release every button and centre the sticks (agent and keyboard).

homeA

Go to the PS5 home screen (stands in for the PS button, which the pad cannot send).

method: "suspend" (suspend the running game, as the PS button does), "system" or "shellcore". From system screens such as Settings, press circle instead.

close_appA

Close the running game or app (unsaved progress is lost). The console returns to the home screen.

launchA

Launch an installed title by id (e.g. PPSA01325). list_apps() shows what is installed.

A game takes input only from the controller that launched it: launch it here to control it, because a game the user started with their own controller ignores this pad (and one launched here ignores theirs).

list_appsC

Installed title ids (from /user/app on the console).

uninstall_appsA

DESTRUCTIVE: uninstall installed titles by id (e.g. ["PPSA01325"]); their data is deleted.

Only uninstall what the user asked for by name. For titles ShadowMountPlus manages, their source folder or image is deleted too (otherwise it installs them again). The console refuses while a game is running; close_app first. Removal finishes in the background after each request is accepted. Needs padd 1.3 or later.

installA

Install a file from this Mac onto the console.

path: a .pkg package (uploaded through Web File Manager to /data/ps5-mcp/pkg, then installed; can take minutes) or an .elf payload (added to Payload Manager's library). run=True also starts the .elf once.

wait_for_changeB

Wait until the screen changes (mean luma difference >= threshold on a 32x18 grid); returns the new frame.

statusC

Payload link, payload version and counters, capture state and frame age.

show_viewerA

Open the live video window for a human (keyboard in that window drives the console too).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 24 tools

Disambiguation4/5

Tools split cleanly into input emulation, recording, vision/template matching, and app management, with distinct purposes. Minor overlap between press/hold/sequence and between wait_for/wait_for_change, but the descriptions clearly differentiate each.

Naming Consistency4/5

Almost entirely lowercase snake_case with predictable verb_noun or noun forms (record_start, list_recordings, save_template, wait_for_change, uninstall_apps). A few bare single-word names (snapshot, press, touchpad, home, status) deviate slightly but remain readable and consistent in style.

Tool Count4/5

At 24 tools it sits at the heavy end, but the domain genuinely spans capture, input, recording, vision, and app lifecycle, so each tool earns its place. Slightly over-scoped but reasonable for the feature breadth.

Completeness4/5

Covers the full lifecycle: capture/view, input, record/replay, template-based waits, app install/launch/uninstall, and status. Minor gaps like no delete for templates or recordings, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive