mcp server
docker-pd2
This Docker container provides a complete environment for running Project Diablo 2 with VNC remote access, memory monitoring, and MCP server integration for AI assistance.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 21, 2026Project Diablo 2 Docker Container
This Docker container provides a complete environment for running Project Diablo 2 with VNC remote access, memory monitoring, and MCP server integration for AI assistance.
Features
- Headless Gaming: Runs Project Diablo 2 in a virtual X11 display
- Remote Access: VNC server for remote desktop connection
- AI Integration: MCP server for Claude Desktop integration
- Memory Monitoring: Real-time game state monitoring
- Custom Resolution: Optimized 1068x600 resolution for container environment
- 3dfx Support: Enhanced graphics rendering with 3dfx emulation
Prerequisites
- Docker and Docker Compose installed
- Project Diablo 2 game files in
pd2/directory - VNC client (optional, for remote access)
Quick Start
-
Build and run the container:
docker-compose up --build -
Connect via VNC:
- Host:
localhost - Port:
5901 - No password required
- Host:
-
Access services:
- VNC:
localhost:5901 - MCP Server:
localhost:8765 - Health Check:
localhost:3000
- VNC:
Directory Structure
Diablo2/
├── Dockerfile # Container definition
├── docker-compose.yml # Service orchestration
├── README.md # This documentation file
├── INSTALL.md # Installation and setup guide
├── start_diablo2.sh # Main startup script (executable)
├── diablo2_monitor.py # Memory monitoring service
├── diablo2_mcp_server.py # MCP server for AI integration
├── screenshots/ # Directory for game screenshots
├── memory_dumps/ # Directory for memory analysis dumps
└── pd2/ # Project Diablo 2 game files (user provided)
├── Base Game Files (Root Level):
├── D2.LNG # Language file
├── d2char.mpq # Base character data
├── d2data.mpq # Base game data
├── d2exp.mpq # Expansion pack data
├── d2music.mpq # Base music files
├── d2sfx.mpq # Base sound effects
├── d2speech.mpq # Base voice files
├── d2video.mpq # Base video files
├── D2xMusic.mpq # Expansion music
├── d2xtalk.mpq # Expansion voice files
├── D2xVideo.mpq # Expansion videos
├── Patch_D2.mpq # Base game patches
├── Save/ # Save Directory
│
└── ProjectD2/ # Project D2 mod directory
├── Executables:
├── Game.exe # Main game executable
├── Diablo II.exe # Original Diablo 2 executable
├── PD2Launcher.exe # Project D2 launcher
├── D2VidTst.exe # Video test utility
│
├── Core Game Libraries:
├── D2Client.dll # Client library
├── D2Common.dll # Common game functions
├── D2Game.dll # Core game library
├── D2gfx.dll # Graphics library
├── D2Lang.dll # Language support
├── D2Launch.dll # Game launcher
├── D2Net.dll # Network functionality
├── D2sound.dll # Audio system
├── D2Win.dll # Windows interface
├── D2CMP.dll # Compression library
├── D2Multi.dll # Multiplayer support
├── D2MCPClient.dll # Battle.net client
├── Fog.dll # Blizzard utility library
├── Storm.dll # Blizzard core library
│
├── Graphics & Display:
├── D2DDraw.dll # DirectDraw wrapper
├── D2Direct3D.dll # Direct3D wrapper
├── D2Gdi.dll # GDI graphics
├── D2Glide.dll # 3dfx Glide wrapper
├── D2HD.dll # HD graphics support
├── ddraw.dll # DirectDraw implementation
├── glide3x.dll # 3dfx Glide library
├── SGD2FreeRes.dll # Resolution mod library
├── SGD2FreeDisplayFix.dll # Display fix library
│
├── Media & Codec Libraries:
├── binkw32.dll # Bink video codec
├── SmackW32.dll # Smacker video codec
├── ijl11.dll # Intel JPEG library
├── sciter.dll # HTML/CSS engine
├── WebView2Loader.dll # Modern web integration
├── libcrypto-1_1.dll # Cryptography library
│
├── Project D2 Mods:
├── ProjectDiablo.dll # Main Project D2 modifications
├── PD2_EXT.dll # Project D2 extensions
├── BH.dll # BH maphack integration
├── Bnclient.dll # Battle.net client mod
├── StormLib.dll # MPQ archive library
│
├── Game Data Archives:
├── d2gl.mpq # D2GL graphics mod
├── D2MultiRes.mpq # Multi-resolution support
├── patch_d2.mpq # Game patches
├── pd2assets.mpq # Project D2 assets
├── pd2data.mpq # Project D2 data
├── pd2maps.mpq # Project D2 maps
├── SGD2FreeRes.mpq # Resolution mod data
├── SlashDiabloHD.mpq # HD graphics pack
├── ver-IX86-1.mpq # Version-specific data
│
├── Configuration Files:
├── BH.json # BH maphack settings
├── BH.json.bak # BH settings backup
├── d2gl.json # D2GL graphics settings
├── d2gl.yaml # D2GL YAML config
├── ddraw.ini # DirectDraw settings
├── D2HD.ini # HD graphics settings
├── default.filter # Default item filter
├── loot.filter # Loot filter settings
├── local_metadata.json # File integrity checksums
├── ProjectDiablo.cfg # Project D2 configuration
├── ProjectDiablo.json # Project D2 JSON config
├── ProjectDiablo.json.bak # Config backup
├── SGD2FreeResolution.json # Resolution settings
├── SGD2FreeRes.json # Resolution config
└── UI.ini # UI positioning configuration
File Categories
Essential Game Files
Base Diablo 2 Installation (in pd2/):
*.mpqfiles - Original game data archivesD2.LNG- Language support file
Project D2 Mod (in pd2/ProjectD2/):
Game.exe- Modified game executableD2*.dll- Core game librariesProjectDiablo.dll- Main mod functionality- Modified
*.mpqfiles - Mod-specific content
Enhancement Files
BH.dll- BH maphack integrationSGD2FreeRes.mpq+SGD2FreeResolution.json- Resolution modWebView2Loader.dll- Modern web integration
Configuration Files
UI.ini- Interface positioningSGD2FreeResolution.json- Display settings
Environment Variables
| Variable | Default | Description |
|---|---|---|
WINEPREFIX | /root/.wine | Wine installation directory |
WINEARCH | win32 | Wine architecture (32-bit) |
WINEDEBUG | -all | Disable Wine debug messages |
DISPLAY | :1 | X11 display number |
Ports
| Port | Service | Description |
|---|---|---|
| 5901 | VNC | Remote desktop access |
| 8080 | Web VNC | Optional web-based VNC |
| 3000 | Health Check | Container health endpoint |
| 8765 | MCP Server | AI integration endpoint |
Game Launch Parameters
The game is launched with the following parameters:
wine Game.exe -ns -3dfx
-ns: No splash screen-3dfx: Enable 3dfx graphics acceleration
Desktop Integration
The container creates desktop shortcuts and menu entries:
- Desktop Shortcut:
/root/Desktop/Diablo2.desktop - Fluxbox Menu: Right-click desktop to access game launcher
- Applications Menu: Available in
/root/.local/share/applications/
Troubleshooting
Common Issues
-
Game won't start:
- Check if game files exist in
pd2/ProjectD2/ - Verify Wine initialization completed successfully
- Check container logs for error messages
- Check if game files exist in
-
VNC connection failed:
- Ensure port 5901 is not blocked by firewall
- Try connecting to
0.0.0.0:5901instead oflocalhost:5901
-
Resolution issues:
- Modify
SGD2FreeResolution.jsonfor different resolutions - Adjust Xvfb resolution in
start_diablo2.sh
- Modify
-
Performance issues:
- Try different Wine D3D renderer settings
- Adjust container resource limits in docker-compose.yml
Debug Commands
Access the running container:
docker exec -it diablo2_container /bin/bash
Check running processes:
docker exec diablo2_container ps aux
View logs:
docker-compose logs diablo2
Development
Adding New Features
- Memory Monitoring: Extend
diablo2_monitor.py - MCP Server: Modify
diablo2_mcp_server.py - Game Configuration: Update config files in
pd2/ProjectD2/
Custom Resolutions
To use different resolutions:
-
Update
SGD2FreeResolution.json:"Ingame Resolutions": ["1920x1080"] -
Modify Xvfb in
start_diablo2.sh:Xvfb $DISPLAY -screen 0 1920x1080x16 &
Security Notes
- VNC server runs without password (suitable for local development only)
- Container runs as root (consider non-root user for production)
- All ports are exposed (restrict in production environments)
License
This container setup is for educational and development purposes. Ensure you own legitimate copies of all game files.