Repository navigation
Releases: Magedeline/loenn-mcp
Release list
v7.2.0 - seleCte levels in one call
seleCte levels in one call
selecte_generate(name, nb_rooms, proba, width, height, seed, ...) runs seleCte's Markov-chain level generator (through uv), its Julia/Maple encoder and pcgscene's readiness checklist in one call. output_path copies the validated .bin into the mod through the guarded write (backup, protected maps, open editors) and is refused when the checklist finds problems unless allow_problems is set. The level's data.json, room csvs, logs and .bin stay in <state dir>/selecte/<name>.
loenn_mcp/selecte.py finds the clone at SELECTE_DIR, a seleCte folder next to the repository, or ~/seleCte; UV_EXE and JULIA_EXE override the executables. seed and model need the patched clone (upstream seleCte has no --seed and always uses pe_d5_full); the tool reports when a clone lacks them.
First release of everything on cel-upgrades since 7.0.0
- Safety: timestamped backups outside the mod folder, writes refused while a map is open in an editor,
LOENN_MCP_PROTECT,map_copy/map_commit/map_backups/map_restore, semanticmap_diff. - Editors:
editor_open/editor_wait/editor_status/editor_closefor Lönn and Rysy, with room preselect and isolated storage. - Assets:
check_sprites_xml,check_assets. - Sprite Fusion and Summer Engine gray-box rooms:
sf_make_tileset,sf_import,summer_*. - Shared PCG core (
csharp/CelPcg.*) andpcg_generate_roomwith a reach check. - Lossless map writes, typed JSON round trip (
map_to_json/json_to_map), authoring JSON andmerge_json_into_map, theloenn-mcp-authorJS package andloenn-jsonCLI. - Live game link over Everest's debug server:
game_status,game_reload_map,game_teleport,game_log,game_play_tas. - Detailed
render_map_html, generated README tool reference, hidden extra tools unlessLOENN_MCP_TOOLS=all.
Full notes: RELEASE_NOTES.txt.
Install
MCPB bundle (no PyPI, no Python setup): loenn-mcp-7.2.0.mcpb below is a bundle for hosts that support MCPB, such as Claude Desktop. It uses the uv runtime, so the host installs Python and the dependencies itself; only uv has to be on the machine. Open it in the host and point its "Celeste mod folder" setting at your mod. This is the package the MCP Registry entry io.github.Magedeline/loenn-mcp points to (SHA-256 99aa5f3cd18d0bcc9fc9016683aa7a10b29beaa868161cb40f45f640fe2a90f5).
Python package: the attached wheel installs directly:
pip install https://github.com/Magedeline/loenn-mcp/releases/download/v7.2.0/loenn_mcp-7.2.0-py3-none-any.whl
🤖 Generated with Claude Code
v7.0.0 - Remove AI tools, harden map.bin writes, add pcgscene CLI
v7.0.0 — Remove AI tools, harden map.bin writes, add the pcgscene CLI
AI removal (breaking)
- Removed
ai_analyze_map,ai_describe_room,ai_suggest_entities, and theai_analyzer.pymodule. - Dropped the
anthropicdependency. Every remaining tool is deterministic/procedural — no API key needed, no calls to any AI/LLM service. - Disclaimer: this project was developed with the assistance of Claude (Anthropic) as a coding tool, implementing the algorithms published in Robinet et al., "Towards a Celeste AI Framework" (FDG '25, DOI 10.1145/3723498.3723796). All output has been human-tested.
map.bin write safety
write_mapnow serializes to memory, round-trip validates the bytes by re-parsing them, writes to a temp file, rotates rolling.bak1–.bak3backups of the existing file, and atomically replaces the target. A crashed or invalid write can no longer destroy a map.- Added
serialize_map()andread_map_bytes()helpers.
New: pcgscene CLI (console script), batch-first for big maps:
scan— score every room (interestingness, difficulty, exit connectivity, spawn presence, fairness gate) plus map-wide reachability from the start room.score— single-room deep report.validate— in-game readiness checklist, exit code 0/1 for CI.fix— safe auto-repairs (missing spawns, bad room names, fake golden berries), with--dry-runand--only, always going through the hardenedwrite_map.diff— room/entity/tile changes between two maps.generate— preset-driven generation (quick/simple_fair/explore/challenge) with reproducible--seed; requires thepcg_helpermodule from the full build and refuses gracefully without it.- Every command supports
--json/--outfor editor integration.
pip install --upgrade loenn-mcp
v5.2.1 - Documentation and Module Exports Update
Documentation and module exports update
v5.2.0 - PCGHelper Integration
PCGHelper integration: MdMC/WFC tile generation, skeleton layout, end-to-end PCG pipeline. 5 new MCP tools (87 total). No new dependencies. See RELEASE_NOTES.txt for full details.
Updated with major bug fixes
loenn-mcp v5.1.0 — AI-Powered Analysis
Celeste map editing meets Claude AI. This release adds intelligent design assistance powered by Anthropic's Claude API, giving you AI feedback on your maps, narrative room descriptions, and smart entity placement suggestions.
✨ What's New
3 New AI-Powered MCP Tools
| Tool | What It Does |
|---|---|
ai_analyze_map |
Get Claude's expert feedback on your map's design, difficulty curve, visuals, or flow |
ai_describe_room |
Generate atmospheric, technical, story, or brief descriptions of any room |
ai_suggest_entities |
Receive specific entity placement recommendations with exact coordinates |
🤖 AI Analysis in Action
Analyze Your Map Design
# General design assessment
ai_analyze_map(map_path="Maps/MyMod/1-City.bin", analysis_type="general")
# → "Strengths: Good checkpoint distribution. Suggestions: Add more
# strawberries in rooms 3-5, consider a difficulty ramp before the boss..."
# Difficulty curve analysis
ai_analyze_map(map_path="Maps/MyMod/1-City.bin", analysis_type="difficulty")
# → "Room a-01: Easy (2/10). Room a-05: Hard spike (8/10). Consider
# adding a checkpoint between a-04 and a-05..."
# Visual design feedback
ai_analyze_map(map_path="Maps/MyMod/1-City.bin", analysis_type="visual")
# → "Good use of dark rooms for atmosphere. Consider varying room sizes
# more — 70% of rooms are 320x184px..."Generate Room Descriptions
# Atmospheric narrative
ai_describe_room(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", style="atmospheric")
# → "A windswept precipice where ancient stone meets howling gales.
# The path forward hangs suspended over void, each jump a prayer
# to the mountain's indifferent heart."
# Technical breakdown
ai_describe_room(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", style="technical")
# → "Vertical climb section with 4 wallbounce opportunities.
# Spike hazards on alternating sides create timing challenge.
# Refill crystal at midpoint prevents softlock."
# Story snippet
ai_describe_room(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", style="story")
# → "Madeline found the old climber's note here: 'The mountain
# doesn't care if you're ready.' She almost turned back."Get Entity Placement Suggestions
# Add challenge
ai_suggest_entities(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", goal="add_challenge")
# → "1. Add trigger spikes at (120, 80) - forces precise timing
# 2. Replace refill at (200, 100) with double-dash variant
# 3. Add crumble block platform at (160, 120) - no return"
# Improve flow
ai_suggest_entities(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", goal="improve_flow")
# → "1. Add jump-through at (80, 140) - clearer upward path
# 2. Place coin at (240, 80) - rewards risky jump
# 3. Add feather to bypass difficult section (optional path)"
# Add secrets
ai_suggest_entities(map_path="Maps/MyMod/1-City.bin", room_name="lvl_a-03", goal="add_secrets")
# → "1. Hidden strawberry behind fake wall at (300, 160)
# 2. Secret room access via spring at (40, 100) - requires
# dash-through-spring tech"⚙️ Setup
1. Install the update
pip install -U loenn-mcp2. Get your Claude API key
- Visit console.anthropic.com
- Sign up / log in
- Create an API key
3. Configure your environment
# Windows (PowerShell)
$env:ANTHROPIC_API_KEY="sk-ant-api03-..."
# Windows (Command Prompt)
set ANTHROPIC_API_KEY=sk-ant-api03-...
# macOS/Linux
export ANTHROPIC_API_KEY="sk-ant-api03-..."4. Add to VS Code / Claude Desktop config
{
"mcpServers": {
"loenn-mcp": {
"command": "python",
"args": ["-m", "loenn_mcp.server"],
"env": {
"LOENN_MCP_WORKSPACE": "/path/to/your/mod",
"ANTHROPIC_API_KEY": "sk-ant-api03-..."
}
}
}
}🛡️ Graceful Degradation
Don't have an API key? No problem. The AI tools will return helpful error messages explaining what's needed:
Claude API Error: ANTHROPIC_API_KEY environment variable not set.
Set it to your Claude API key from console.anthropic.com
All existing 60+ tools continue to work exactly as before.
📊 Tool Count
Total MCP tools: 63
- Map Reading: 8 tools
- Map Editing: 14 tools
- Room Settings: 5 tools
- Map Metadata: 4 tools
- Stylegrounds: 4 tools
- Decals: 3 tools
- Entity Catalog: 6 tools
- Analysis: 12 tools
- Wiki/Cache: 4 tools
- Mod Project: 2 tools
- Import/Export: 2 tools
- Diff & Fix: 2 tools
- Procedural Generation: 4 tools
- Image/Terrain: 3 tools
- AI Analysis: 3 tools ← NEW!
- Lönn Manager: 2 tools
📝 Technical Details
- New dependency:
anthropic>=0.40.0(optional — only needed for AI features) - Default model:
claude-3-5-sonnet-20241022(configurable per-call) - New module:
loenn_mcp/ai_analyzer.py— handles all Claude API interactions - Token limits: Map analysis up to 2000 tokens, room descriptions up to 500 tokens
🙏 Credits
AI analysis powered by Anthropic Claude. Built for the Celeste modding community.
Full Changelog: Compare with v5.0.0
Full Changelog: 5.0.0...5.1.0
Updated the Loenn Mcp
What's Changed
- Add image-to-map conversion and seeded Perlin+Voronoi terrain generation (v4.0.0) by @devin-ai-integration[bot] in #6
- Add 32 gdep-inspired analysis and editing tools — expand to 60 MCP tools (v5.0.0) by @devin-ai-integration[bot] in #7
Full Changelog: v3.0.1...5.0.0
v3.0.1 — Drop unused pygame + pytmx deps
loenn-mcp v3.0.1
Patch release: drop unused pygame + pytmx dependencies.
These were added by an earlier PR but never imported anywhere in the
package. They blocked installation on Pythons that don't have prebuilt
pygame wheels (e.g. Windows + Python 3.14), where pip would fall back to
building pygame from source and fail with:
ModuleNotFoundError: No module named
'setuptools._distutils.msvccompiler'
After this release, pip install loenn-mcp only pulls in fastmcp.
v3.0.0 — Stylegrounds & triggers
loenn-mcp v3.0.0
Closes the styleground / trigger gap reported by users — previously you could
add entities and rooms via MCP, but stylegrounds and triggers required opening
Lönn manually. Now everything is reachable from the agent.
WHAT'S NEW IN v3.0
6 new MCP tools (28 tools total):
Triggers (room-level, mirror add_entity / remove_entity):
add_trigger — place a trigger in a room with width/height
and optional path nodes; auto-assigns a unique
ID across both entities and triggers.
remove_trigger — delete a trigger by ID.
Stylegrounds (map-level, under Style/Foregrounds and Style/Backgrounds):
list_stylegrounds — numbered listing of FG + BG effects (and the
children of any apply groups).
add_styleground — add a parallax, custom Lua effect (e.g.
2.5DHelper/VoidBg), or an apply group to FG
or BG. Auto-creates Style/Foregrounds/
Backgrounds if missing.
remove_styleground — remove an effect by index.
update_styleground — merge property changes into an existing effect
(set keys, or pass null to clear them).
No new runtime dependencies.
v1.0.0
loenn-mcp v1.0.0
Celeste map editor for AI agents - read, edit, analyze, and preview Celeste
.bin map files directly from GitHub Copilot, Claude Desktop, or any MCP
client. No Loenn installation required.
INSTALL
pip install loenn-mcp
WHAT'S INCLUDED
-
18 MCP tools across 5 categories:
Map Reading - list_maps, read_map_overview, read_room, get_room_tiles
Map Editing - add_entity, remove_entity, set_room_tiles, add_room,
remove_room, create_map
Entity Catalog - list_entity_definitions, get_entity_definition,
list_trigger_definitions, list_effect_definitions
Analysis - analyze_map, visualize_map_layout, preview_map_section
Rendering - render_map_html (interactive HTML, zoom/pan/search) -
celeste_bin.py -- pure-Python .bin parser, full read/write round-trip
(no Loenn or Everest required) -
preview_map.py -- one-command HTML map preview that opens in the browser
-
Works with maps created by Loenn or Ahorn
CONNECT TO GITHUB COPILOT (VS Code)
Add to .vscode/mcp.json:
{
"servers": {
"loenn-mcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "loenn_mcp.server"],
"env": { "LOENN_MCP_WORKSPACE": "${workspaceFolder}" }
}
}
}
CONNECT TO CLAUDE DESKTOP
Add to claude_desktop_config.json:
{
"mcpServers": {
"loenn-mcp": {
"command": "python",
"args": ["-m", "loenn_mcp.server"],
"env": { "LOENN_MCP_WORKSPACE": "/path/to/your/mod" }
}
}
}
REQUIREMENTS
Python 3.9+
fastmcp >= 3.0.0
LICENSE
MIT -- https://github.com/Maggy-Studio/loenn-mcp/blob/main/LICENSE