Running AI agents in a self-hosted Habbo Hotel (via MCP)
I built a self-hosted Habbo setup where AI agents can interact with the hotel in real time: spawn users, chat, move between rooms, send alerts, and more.
The project is habbo-agent-platform, based on Arcturus + Nitro + an MCP server layer.
It started as a "Claude in Habbo" experiment, but the current version is broader: it works with any MCP-compatible client (Claude Code, Cursor, and others).
What this is
The stack has three parts:
-
Hotel stack (Docker)
- Arcturus emulator
- MariaDB
- Nitro web client
-
MCP server (
habbo-mcp)- Node.js/TypeScript
- Talks to Arcturus over RCON
- Reads/writes relevant data via MySQL
-
Any MCP-compatible client
- Calls tools exposed by
habbo-mcp - Can trigger actions like account creation, messages, moderation, economy changes
- Calls tools exposed by
Architecture
MCP Client (Claude Code / Cursor / etc)
|
v
habbo-mcp server ---- MySQL (players, room/chat data)
|
v
RCON TCP
|
v
Arcturus emulator (Docker)
|
v
Nitro frontend (browser)
What changed recently (important)
The repo is now much more production-friendly than the first version:
-
Multi-arch GHCR images (
amd64+arm64) - Faster publish workflow (Buildx cache in GitHub Actions)
- Portainer-friendly compose with env-driven ports/subnet
- Automatic DB bootstrap when core tables are missing
- Automatic Nitro asset conversion on first run
- HTTPS/WSS-ready Nitro URL generation via env vars
- Optional SSH auto-tunnel in MCP for remote hotel management
- README restructured for starter onboarding (Docker/Portainer-first)
Quick start (recommended path)
git clone https://github.com/tndejong/habbo-agent-platform.git
cd habbo-agent-platform
Create .env.registry:
HABBO_OWNER_OR_ORG=tndejong
HABBO_PUBLIC_HOST=127.0.0.1
HABBO_PUBLIC_PROTOCOL=http
HABBO_NITRO_PORT=1080
HABBO_GAME_PORT=3000
HABBO_RCON_PORT=3001
HABBO_DB_PORT=13306
Start:
docker compose --env-file .env.registry -f docker-compose.registry.yaml up -d
Then open:
http://127.0.0.1:1080?sso=123
First run can take a while: Java build + Nitro conversion + initial setup.
MCP client config (minimal env)
Use these values in your MCP client:
MCP_API_KEY=<your-key>
RCON_HOST=127.0.0.1
RCON_PORT=3001
DB_HOST=127.0.0.1
DB_PORT=13306
DB_NAME=arcturus
DB_USER=arcturus_user
DB_PASSWORD=arcturus_pw
HABBO_BASE_URL=http://127.0.0.1:1080
Remote server management via SSH tunnel
If your hotel runs on a VPS and DB/RCON are local-only there, MCP can auto-open an SSH tunnel.
Example:
SSH_TUNNEL_ENABLED=true
SSH_TUNNEL_HOST=<server-ip>
SSH_TUNNEL_PORT=22
SSH_TUNNEL_USER=<ssh-user>
SSH_TUNNEL_KEY_PATH=/path/to/private_key
SSH_TUNNEL_LOCAL_RCON_PORT=43001
SSH_TUNNEL_REMOTE_RCON_PORT=13001
SSH_TUNNEL_LOCAL_DB_PORT=43306
SSH_TUNNEL_REMOTE_DB_PORT=13306
And then point MCP runtime to local forwarded ports:
RCON_HOST=127.0.0.1
RCON_PORT=43001
DB_HOST=127.0.0.1
DB_PORT=43306
Example in-hotel bot action
I can now do things like:
- deploy an NPC bot into the active room at
(5,5) - make it say:
- "Welcome to Habbo agent platform what can i do for u today?"
That all goes through MCP tools (deploy_bot, talk_bot) against the running emulator.
Production notes
-
sso=123is fine for local tests, not for real user auth. - Keep DB/RCON private (localhost/internal network only).
- Prefer proxying Nitro through Nginx Proxy Manager on
80/443. - Use VPN/IP allowlists if the hotel is internal-only.
- Keep secrets out of committed files.
Visual
Links
- Current project repo: https://github.com/tndejong/habbo-agent-platform

Top comments (0)