A Model Context Protocol (MCP) server that exposes tools for an AI (Hermes) to remotely control a jailbroken PS3 running webMAN MOD.
The server translates AI tool calls into simple HTTP requests to the PS3's built-in web server, enabling:
- Game mounting & listing (PS3/PS2/PSP/PS1)
- Controller button simulation
- Temperature monitoring
- On-screen popup notifications
- System control (shutdown, reboot, fan speed)
- PS3MAPI deep control (firmware, processes, LED, buzzer, screenshots, memory)
- Python 3.10+
- Jailbroken PS3 with webMAN MOD (full) installed
- PS3 and host machine on the same local network
- PS3 with a static local IP address
git clone https://github.com/hermes-ai/ps3-mcp-server.git
cd ps3-mcp-server
pip install -e .pip install ps3-mcp-serverSet the PS3_IP environment variable to your PS3's local IP address:
export PS3_IP=192.168.1.42 # Linux/macOS
set PS3_IP=192.168.1.42 # Windows CMD
$env:PS3_IP="192.168.1.42" # Windows PowerShellOr create a .env file in the project root:
PS3_IP=192.168.1.42
ps3-mcp-server
# or directly
python ps3_server.pynpx @modelcontextprotocol/inspector ps3-mcp-serverThen open the displayed local URL in your browser to interactively test tools.
Add to claude_desktop_config.json (location varies by OS):
macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonConfig:
{
"mcpServers": {
"ps3": {
"command": "ps3-mcp-server",
"env": {
"PS3_IP": "192.168.1.42"
}
}
}
}Point your client to run ps3-mcp-server with the PS3_IP environment variable set.
| Tool | Description |
|---|---|
list_games(system) |
List games (ps3/ps2/psp/ps1) with name and path |
mount_game(game_path) |
Mount a game by its internal path |
press_button(button) |
Simulate controller button press |
get_temperature() |
Read CPU & RSX temperatures |
send_popup(message) |
Show on-screen notification |
shutdown() |
Power off the PS3 |
reboot() |
Reboot the PS3 |
get_current_game() |
Get currently mounted game title ID |
set_fan_speed(percent) |
Set fan speed 0-100% |
The server also exposes 7 PS3MAPI tools for low-level hardware access via webMAN's PS3MAPI HTTP endpoints. These enable AI agents to interact with the PS3 at a deeper level:
| Tool | Description |
|---|---|
ps3mapi_get_firmware() |
Read firmware version (e.g. "4.90 CEX Cobra 8.4") |
ps3mapi_list_processes() |
List running processes with PIDs |
ps3mapi_screenshot() |
Capture framebuffer dump via /dump.ps3?rsx |
ps3mapi_ring_buzzer(mode) |
Vibrate controller (0=off, 1=light, 2=heavy) |
ps3mapi_set_led(color) |
Set console LED color (#RRGGBB format) |
ps3mapi_read_memory(address, length) |
Read bytes from process memory (max 256) |
ps3mapi_write_memory(address, data_hex) |
Write bytes to process memory |
Note: PS3MAPI features require webMAN MOD (Full) with syscall 8 enabled. Write operations can crash or brick the PS3 — use with caution.
| Action | Endpoint | Notes |
|---|---|---|
| List games | /index.ps3, /index.ps2, /index.psp, /index.psx |
HTML parsed for links |
| Mount game | /mount.ps3/<path> |
Path from list_games |
| Press button | /pad.ps3?<button>=1 |
15 supported buttons |
| Temperature | /cpursx.ps3 |
Returns plain text |
| Popup | /popup.ps3/<message> |
URL-encoded message |
| Eject/Insert | /eject.ps3 / /insert.ps3 |
Disc control |
| Shutdown | /shutdown.ps3 |
Immediate power off |
| Reboot | /reboot.ps3 |
System restart |
| Current game | /game.ps3 |
Returns title ID |
| Fan speed | /sman.ps3?fan=<0-100> |
webMAN MOD full only |
- Local network only — All communication is unencrypted HTTP.
- Isolate your PS3 on a separate VLAN or use firewall rules to limit access.
- Start with read-only tools (temperature, list_games, get_current_game) before enabling destructive tools (shutdown, mount_game, button presses).
- Trusted environment — Anyone with network access to the PS3 can control it via the webMAN web interface.
ps3-mcp-server/
├── ps3_server.py # Main MCP server implementation
├── pyproject.toml # Package configuration
├── README.md # This file
└── .env.example # Environment variable template
- Verify PS3 IP:
ping $PS3_IP - Check webMAN web server is enabled in webMAN MOD settings
- Test in browser:
http://<PS3_IP>/should show webMAN interface
- Ensure no firewall blocks port 80 between host and PS3
- Try accessing
http://<PS3_IP>/cpursx.ps3from a browser
- Verify
ps3-mcp-serveris in your PATH:which ps3-mcp-server - Check MCP client logs for stdio connection errors
- Test with MCP Inspector first
MIT License — See LICENSE for details.