ice-puzzle-mcp
An MCP server for building, validating, and publishing Ice Puzzle levels with AI assistants, featuring integrated solver feedback and quality checks. It provides over 60 tools for level design, difficulty analysis, and benchmarking AI performance on design tasks.
README
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://<project-id>.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)
undoredorevert_to_last_solvable
Tile + Region Operations (6)
place_tileremove_tilemove_tileplace_tiles_batchfill_regionclear_region
Grid + Positions (5)
set_grid_sizeset_startset_goalset_parset_par_to_shortest
Special Elements (10)
add_warp_pairremove_warpadd_thin_iceremove_thin_iceadd_pushable_rockremove_pushable_rockset_pressure_plateremove_pressure_plateset_barrierremove_barrier
Solver + Validation (10)
solve_leveltest_placementreachable_fromsuggest_stop_pointssimulate_movesimulate_playthroughanalyze_difficultyvalidate_quality_gatecheck_publish_readinessvisualize_level
Layout Seeding (2)
seed_layout_patternsuggest_skeleton_layout
Rules + Docs (4)
get_game_rulesget_tile_typesget_level_requirementsinteraction_faq
Campaign Examples (2)
list_campaign_examplesget_campaign_example
Firebase / Publishing (11)
save_draftload_draftlist_remote_draftsdelete_remote_draftlist_my_published_levelsget_my_published_levelunpublish_levelrestore_published_levelpublish_levelpreview_levelauth_status
Canonical Rules Enforced
- Non-tutorial levels may have tied optimal paths, but shortest optimal length must equal
par. - Any path shorter than
paris a hard failure. - Timeout death is strict: if moves
>= parand goal not reached, run fails (WASTED). - Warp behavior: stepping on warp teleports to pair and ends movement.
- Hot Coals/hot tile behavior:
-5 HPon landing and-5 HP/secwhile standing. - Thin ice behavior: crossing marks tile broken; entering broken thin ice is fatal.
- Draft payload parity: thin ice and pushables must use dedicated fields (
thinIceTiles,pushableRocks).
Local + Remote Drafts
- Local snapshots are in-memory (this MCP process).
- Remote drafts/publishing use Firebase (
draftLevels,communityLevels,notifications). - Use
preview_levelfor staging links andcheck_publish_readinessbeforepublish_level. - Published level lifecycle tools are available via
list_my_published_levels,get_my_published_level,unpublish_level, andrestore_published_level.
Development
npm install
npm run build
npm test
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.