ice-puzzle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ICE_PUZZLE_PROJECT_ID | No | The project ID for the Firebase instance. Defaults to 'ice-puzzle-game'. | ice-puzzle-game |
| ICE_PUZZLE_FIREBASE_APP_ID | No | Explicit Firebase App ID override. | |
| ICE_PUZZLE_FIREBASE_API_KEY | No | Explicit Firebase API key override. | |
| ICE_PUZZLE_FIREBASE_AUTH_DOMAIN | No | Explicit Firebase Auth domain override. | |
| ICE_PUZZLE_FIREBASE_STORAGE_BUCKET | No | Explicit Firebase Storage bucket override. | |
| ICE_PUZZLE_FIREBASE_MESSAGING_SENDER_ID | No | Explicit Firebase Messaging sender ID override. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_levelB | Create a new empty ice puzzle level |
| get_levelB | Get the current working draft level with details and visualization |
| list_draftsB | List all locally saved draft snapshots |
| save_local_draftA | Save a snapshot of the current draft in local MCP memory |
| load_local_draftC | Load a locally saved draft snapshot by ID |
| delete_draftC | Delete a locally saved draft snapshot |
| import_levelC | Import a level from PuzzleData JSON |
| export_levelB | Export the current working draft as PuzzleData JSON |
| rename_levelC | Rename the current working draft without recreating it |
| undoB | Undo the last edit operation |
| redoB | Redo the most recently undone operation |
| revert_to_last_solvableB | Restore the latest known solvable state |
| place_tileC | Place a tile (rock, lava, hot_coals, or spike) at position. Auto-solves. |
| remove_tileB | Remove any tile at position. Auto-solves. |
| move_tileC | Move one tile/special element from one coordinate to another. Auto-solves. |
| place_tiles_batchC | Place multiple tiles at once. Auto-solves. |
| fill_regionB | Fill a rectangular region with a tile type. Auto-solves. |
| clear_regionA | Clear all tiles in a rectangular region. Auto-solves. |
| set_grid_sizeB | Resize the level grid. Elements outside new bounds are removed. |
| set_startC | Set the player start position |
| set_goalC | Set the goal position (can be on edge/wall) |
| set_parC | Set explicit par (target shortest optimal move count) for the current draft |
| set_par_to_shortestB | Solve and set par to the current solver shortest path length |
| clear_levelB | Clear all elements from the level, keeping grid size |
| add_warp_pairC | Add a warp portal pair connecting two positions |
| remove_warpC | Remove a warp pair by ID |
| add_thin_iceC | Add thin ice tiles (break after crossing) |
| remove_thin_iceC | Remove thin ice tiles |
| add_pushable_rockC | Add pushable rocks |
| remove_pushable_rockC | Remove pushable rocks |
| set_pressure_plateC | Set pressure plate position (deactivates barrier) |
| remove_pressure_plateC | Remove the pressure plate |
| set_barrierB | Set barrier position (kills if pressure plate not activated) |
| remove_barrierC | Remove the barrier |
| solve_levelB | Run BFS solver on current level with direction balance and unsolvable diagnostics |
| test_placementA | Dry-run placing one tile and solve without modifying the draft |
| reachable_fromC | Analyze all reachable landing positions from a starting coordinate |
| suggest_stop_pointsB | Suggest blocker placements to stop a slide at intermediate points |
| seed_layout_patternC | Apply a starter rock skeleton pattern to bootstrap solvable layout design |
| suggest_skeleton_layoutB | Suggest starter rock skeleton plans without modifying the current draft |
| simulate_moveC | Simulate a single slide move from a position |
| simulate_playthroughC | Simulate a full sequence of moves |
| analyze_difficultyC | Analyze current level difficulty and characteristics |
| validate_quality_gateC | Run canonical parity/quality checks (par-shortest, timeout rule, warp parity, hot coals shortcut diagnostics) |
| check_publish_readinessB | Check publish blockers: auth status + strict quality gate |
| visualize_levelB | Show ASCII art visualization of current level |
| get_game_rulesB | Get comprehensive ice puzzle game rules and design guide |
| get_tile_typesB | Get all tile types with behavior descriptions |
| get_level_requirementsB | Get requirements for publishable levels |
| interaction_faqC | Get quick-reference interaction outcomes for adjacent mechanic combinations |
| list_campaign_examplesB | List campaign level examples by difficulty tier (easy/medium/hard) with solver solutions |
| get_campaign_exampleC | Get one campaign level example (by level number or ID) with solution and optional PuzzleData |
| save_draftA | Save the current draft to Firebase (requires authentication) |
| load_draftC | Load a draft from Firebase by ID |
| delete_remote_draftB | Delete a remote draft from Firebase by ID |
| list_remote_draftsB | List all remote drafts from Firebase |
| list_my_published_levelsB | List your marketplace levels with status filter, sorting, and pagination |
| get_my_published_levelB | Get one of your published marketplace levels by ID |
| unpublish_levelC | Unpublish (soft-delete) one of your marketplace levels by ID |
| restore_published_levelA | Restore an unpublished marketplace level back to ACTIVE status |
| publish_levelC | Publish the current draft as a marketplace level |
| preview_levelB | Create or update a shareable preview link without publishing to marketplace |
| auth_statusB | Check Firebase authentication status |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build-level | Build a solvable ice puzzle level |
| improve-level | Analyze and improve the current level |
| challenge-level | Build a challenging level using all mechanics |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Game Rules | Comprehensive ice puzzle game rules and design guide |
| Tile Types | All tile types with behavior descriptions |
| Current Level | Current working draft level data and visualization |
| Campaign Examples | All campaign level examples with difficulty tiers and shortest solutions |
| Campaign Examples (Easy) | Easy campaign level examples with shortest solutions |
| Campaign Examples (Medium) | Medium campaign level examples with shortest solutions |
| Campaign Examples (Hard) | Hard campaign level examples with shortest solutions |
TDQS
Scored across 63 tools
Most tools have distinct purposes, but some overlap exists, such as 'clear_level' and 'clear_region' both clearing elements, and 'place_tile' and 'place_tiles_batch' differing only in batch size. Descriptions help differentiate, but minor confusion could occur in selection.
Tool names follow a highly consistent snake_case pattern with clear verb_noun structures, such as 'add_pushable_rock', 'remove_tile', and 'simulate_move'. This predictability aids agent understanding and reduces errors.
With 63 tools, the count is excessive for an ice puzzle level editor, leading to potential overwhelm and redundancy. A more focused set of 15-30 tools would better suit the domain without sacrificing functionality.
The toolset provides comprehensive coverage for ice puzzle level creation, including CRUD operations (e.g., create, edit, delete), simulation, solving, publishing, and validation. No obvious gaps exist for the intended purpose.