Build, validate, and publish Ice Puzzle levels with AI assistants.
ice-puzzle-mcp
MCP (Model Context Protocol) server for building, validating, and publishing Ice Puzzle levels with AI assistants.
Why Use This
- Build puzzle levels quickly with solver-backed feedback after each edit.
- Keep design fun: sketch an idea, ask the AI to iterate, and immediately test solvability and quality gates.
- Compare AI (Codex vs Claude Code) models on the same level-design task with objective outputs (
solve_level,analyze_difficulty,validate_quality_gate,check_publish_readiness). - Publish with confidence using preview + readiness checks instead of one-shot blind publishing.
Quick Start (Codex / Claude)
1) Install
npm install -g ice-puzzle-mcp
Or run without global install:
npx -y ice-puzzle-mcp setup
2) Get an API key (required for remote drafts, preview, publish)
- Open https://ice-puzzle-game.web.app/settings.
- Open
Settings > Developer. - Sign in with Google.
- Click generate API key.
- Copy the key (
ipk_...) and keep it private.
3) Run setup
ice-puzzle-mcp setup
If you did not install globally, use:
npx -y ice-puzzle-mcp setup
Setup will:
- Validate your API key by exchanging it once.
- Save config to
~/.ice-puzzle-mcp/config.jsonwith0600permissions. - Register MCP in Codex and Claude when available.
- Auto-discover Codex CLI from PATH and standard app locations (including
/Applications/Codex.app/Contents/Resources/codex).
4) Verify registration
codex mcp list --json
You should see an ice-puzzle-mcp entry. Restart your AI client after setup.
What It Does
- Exposes 63 tools for level editing, solve diagnostics, design assistance, layout seeding, quality gates, campaign examples, local snapshots, preview staging, and Firebase publishing.
- Mirrors gameplay mechanics from the
ice_puzzleapp solver/runtime. - Enforces canonical publish checks:
par == shortest, timeout death atmoves >= par, warp-stop semantics, and hot coals shortcut diagnostics. - Adds design-assist workflow helpers: dry-run placement tests, reachability maps, stop-point suggestions, layout seeding, undo/redo, and revert-to-last-solvable recovery.
- Supports offline-first design (all local tools work without auth).
Install
npm install ice-puzzle-mcp
Run
npx ice-puzzle-mcp serve
Optional Auth Setup (for remote drafts + publishing)
- Open https://ice-puzzle-game.web.app/settings.
- Sign in with Google.
- Go to
Settings > Developerand generate an API key. - Run setup and paste your key when prompted:
npx ice-puzzle-mcp setup
By default, setup uses the correct exchange URL automatically and does not prompt for it. Only use advanced mode if you need to override it:
npx ice-puzzle-mcp setup --advanced
Setup stores config at ~/.ice-puzzle-mcp/config.json with mode 0600, registers ice-puzzle-mcp in Codex via codex mcp add when Codex is installed (including app-bundle fallback discovery at /Applications/Codex.app/Contents/Resources/codex), and updates your Claude MCP config (~/.claude/.mcp.json or ~/.claude/mcp.json) using a unique server key (ice-puzzle-mcp, ice-puzzle-mcp-2, ... if needed).
Firebase client config is no longer hardcoded in the package. By default, it is loaded from
https://.web.app/__/firebase/init.json (project ID from config/env, default ice-puzzle-game),
or you can provide explicit ICE_PUZZLE_FIREBASE_* environment variables / firebase overrides in config.
AI Model Comparison Workflow
Use this project as a repeatable level-design benchmark between models.
- Give each model the same prompt and constraints.
- Require title provenance in every generated level name:
- Prefix with
[Claude]for Claude-generated levels. - Prefix with
[Codex]for Codex-generated levels. - Example:
[Codex] L14 - Warp Plate Gauntlet.
- Require the same build loop: edit one mechanic at a time and run
solve_levelafter each change. - Collect objective outputs:
solve_level(solvable, shortest path, moves)analyze_difficulty(difficulty signals, direction balance)validate_quality_gate(pass/fail checks)check_publish_readiness(publish blockers)
- Compare results on:
- Correctness (solvable, no shortcuts, par integrity)
- Design quality (path structure, mechanic integration, anti-shortcut robustness)
- Efficiency (how many edits/iterations needed to pass all checks)
- Optionally publish or preview top candidates and run playthrough feedback.
This makes AI-vs-AI comparisons concrete instead of subjective.
Tool Categories
Level Management (10)
create_levelget_levelsave_local_draftload_local_draftlist_draftsdelete_draftimport_levelexport_levelrename_levelclear_level
History + Recovery (3)
undo
Tools (6)
create_levelInitializes a new puzzle level for editing.solve_levelRuns the solver to check if the level is solvable and returns path data.analyze_difficultyAnalyzes the level for difficulty signals and direction balance.validate_quality_gateRuns quality checks to ensure the level meets design standards.check_publish_readinessChecks the level for any blockers preventing publication.save_local_draftSaves the current level state to a local draft file.Environment Variables
ICE_PUZZLE_FIREBASE_PROJECT_IDOptional override for the Firebase project ID.Configuration
{"mcpServers": {"ice-puzzle-mcp": {"command": "npx", "args": ["-y", "ice-puzzle-mcp", "serve"]}}}