MCP server for AI control of a jailbroken PS3 via webMAN MOD — 16 tools including PS3MAPI deep hardware access
PS3 MCP Server
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)
Requirements
- 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
Installation
From source
git clone https://github.com/hermes-ai/ps3-mcp-server.git
cd ps3-mcp-server
pip install -e .
Direct install
pip install ps3-mcp-server
Configuration
Set 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 PowerShell
Or create a .env file in the project root:
PS3_IP=192.168.1.42
Running the Server
Stdio mode (for MCP clients)
ps3-mcp-server
# or directly
python ps3_server.py
Testing with MCP Inspector
npx @modelcontextprotocol/inspector ps3-mcp-server
Then open the displayed local URL in your browser to interactively test tools.
MCP Client Configuration
Claude Desktop
Add to claude_desktop_config.json (location varies by OS):
macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Config:
{
"mcpServers": {
"ps3": {
"command": "ps3-mcp-server",
"env": {
"PS3_IP": "192.168.1.42"
}
}
}
}
LibreChat / Continue.dev / Other MCP Clients
Point your client to run ps3-mcp-server with the PS3_IP environment variable set.
Available Tools
| 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% |
PS3MAPI Tools (Advanced)
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 ⚠️ Dangerous |
Note: PS3MAPI features require webMAN MOD (Full) with syscall 8 enabled. Write operations can crash or brick the PS3 — use with caution.
webMAN API Endpoints Used
| 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 |
Security Considerations
- 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.
Project Structure
ps3-mcp-server/
├── ps3_server.py # Main MCP server implementation
├── pyproject.toml # Package configuration
├── README.md # This file
└── .env.example # Environment variable template
Troubleshooting
Connection refused / timeout
- 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
Permission denied
- Ensure no firewall blocks port 80 between host and PS3
- Try accessing
http://<PS3_IP>/cpursx.ps3from a browser
MCP client not detecting tools
- Verify
ps3-mcp-serveris in your PATH:which ps3-mcp-server - Check MCP client logs for stdio connection errors
- Test with MCP Inspector first
License
MIT License — See LICENSE for details.