Conversation
Co-authored-by: pardeike <853584+pardeike@users.noreply.github.com>
Co-authored-by: pardeike <853584+pardeike@users.noreply.github.com>
|
@copilot I find some of the current launch arguments confusing. For me, a user would configure the dabs server with a fixed configuration that defines all games they want to control. Then, the dabs bridge server is started from the AI (or manually with a network port) and the AI will use it to list (which games can we controll) / check (maybe 'bad configuration', 'stopped', 'starting', 'started', 'quitting', 'unresponsive') / start (will start) / stop (gracefully stop) / kill (force termination) applications. Putting these commands in the launch arguments seems wrong to me. Rethink the approach and refactor the code and all documentation. Since the DABS server is an MCP server these commands should be built-in. Think about what command set would make sense. |
Co-authored-by: pardeike <853584+pardeike@users.noreply.github.com>
I completely agree and have redesigned the architecture as requested. The CLI now uses a configuration-first approach with MCP-native game management. Key changes implemented:
Example usage: # Configure games once
gabs games add minecraft
gabs games add rimworld
# Start MCP server
gabs server
# AI uses MCP tools to manage games
games.list # Shows all configured games
games.start # {"gameId": "minecraft"}
games.status # Check running statusThis separates concerns properly - CLI manages configuration, MCP tools manage game lifecycle. Much cleaner architecture! Commit: 1deef58 |
Co-authored-by: pardeike <853584+pardeike@users.noreply.github.com>
Problem
The original issue asked a fundamental architectural question: "Should the mod create the server that speaks GABP or the bridge server?" However, based on feedback, a deeper architectural problem was identified: the CLI had confusing launch arguments mixed with server configuration, and game management commands should be MCP tools, not CLI commands.
Analysis & Discovery
After analyzing the current GABS architecture, I discovered that while the GABP protocol design was correct (game mods act as servers, GABS acts as client), the CLI design was problematic:
--gameId --launch --target)This made GABS confusing and didn't align with MCP principles where AI should discover and use tools naturally.
Solution
Complete architectural redesign with a configuration-first approach and MCP-native game management:
1. Configuration-First Architecture
Games are now defined once in a persistent config file:
{ "version": "1.0", "games": { "minecraft": { "id": "minecraft", "name": "Minecraft Server", "launchMode": "DirectPath", "target": "/opt/minecraft/start.sh", "gabpMode": "local", "gabpHost": "127.0.0.1" } } }Configuration locations:
%APPDATA%/GABS/config.json~/Library/Application Support/GABS/config.json~/.config/gabs/config.json2. Simplified CLI
Before (confusing):
gabs run --gameId minecraft --launch DirectPath --target "/path/to/minecraft" --gabpMode remote --gabpHost 192.168.1.100After (clean):
New CLI commands:
gabs server- Start MCP server (stdio or HTTP)gabs games add/list/remove/show <id>- Manage game configurationsgabs version- Version information3. MCP-Native Game Management
AI now uses natural MCP tools instead of complex CLI commands:
games.listgames.list {}games.statusgames.status {"gameId": "minecraft"}games.startgames.start {"gameId": "minecraft"}games.stopgames.stop {"gameId": "minecraft"}games.killgames.kill {"gameId": "minecraft"}4. Enhanced Connection Support
The original flexible connection modes are preserved but now configured per-game:
{ "minecraft-local": {"gabpMode": "local", "gabpHost": "127.0.0.1"}, "minecraft-remote": {"gabpMode": "remote", "gabpHost": "192.168.1.100"}, "modded-game": {"gabpMode": "connect"} }AI Integration Examples
With Claude Desktop
{ "mcpServers": { "gabs": { "command": "/path/to/gabs", "args": ["server"] } } }Then ask: "List my games and start minecraft"
With Custom AI Tools
Deployment Scenarios
Local Development
gabs games add minecraft gabs server # AI connects via MCPCloud AI + Remote Games
Multiple Game Management
gabs games add minecraft-survival gabs games add rimworld-colony1 gabs games add factorio-megabase gabs server # AI can manage all via games.* toolsBackward Compatibility
✅ Fully maintained - existing
bridge.jsonfiles still supported✅ Zero breaking changes - GABP protocol unchanged
✅ Migration path - old CLI patterns documented for transition
Testing & Validation
Configuration System
$ go test ./internal/config -v === RUN TestGamesConfig --- PASS: TestGamesConfig (0.00s) PASSMCP Server Functionality
End-to-End Workflow
Documentation
This complete redesign addresses the architectural concerns while maintaining all original cloud AI capabilities. The new approach is much cleaner, more maintainable, and aligns perfectly with MCP principles.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.