Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

loenn-mcp

MCPB · LOENN-MCP-7.2.0.MCPB

Celeste map editor for AI agents: read, edit, validate, preview and generate .bin maps.

0 this week 42 Trust /100

Last scanned (1 hour ago)

Scores higher than 73% of MCPB servers

Category Entertainment and Games

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security12
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs were checked across the 15 of 15 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
  • Install-script risk not yet assessed.Unverified
  • 1 of 15 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability71
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 7885 tokens (~88/item across 89 items; 89 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_entity" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 90 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 42

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed mcpb/https://github.com/Magedeline/loenn-mcp/releases/download/v7.2.0/loenn-mcp-7.2.0.mcpb@7.2.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Dependencies 15 packages
Packages resolved 15
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 89 exposed · ~7,588 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_decal ~132

Add a decal to a room.

NameTypeReqDescription
layerstring–"fg" or "bg".
map_pathstringyesPath to the .bin file.
room_namestringyesTarget room.
scale_xnumber–Horizontal scale (default 1.0).
scale_ynumber–Vertical scale (default 1.0).
texturestringyesDecal texture path (e.g. "decals/1-forsakencity/flag_a00").
xintegeryesX position.
yintegeryesY position.
NameTypeReqDescription
resultstringyes–

No examples provided.

add_entity ~149

Add an entity to a room and save the map.

NameTypeReqDescription
entity_idinteger–Entity ID (-1 to auto-assign)
entity_namestringyesEntity type (e.g. "player", "MaggyHelper/KirbyBoss")
heightinteger–Entity height (0 if inapplicable)
map_pathstringyesPath to the .bin file
propertiesstring–JSON object string of extra properties
room_namestringyesRoom name
widthinteger–Entity width (0 if inapplicable)
xintegeryesX position in pixels
yintegeryesY position in pixels
NameTypeReqDescription
resultstringyes–

No examples provided.

add_room ~131

Add a new empty room to a map.

NameTypeReqDescription
darkboolean–Whether the room is dark
heightinteger–Room height in pixels (multiple of 8)
map_pathstringyesPath to the .bin file
room_namestringyesRoom name (prefixed with 'lvl_' if needed)
spaceboolean–Whether the room has space physics
widthinteger–Room width in pixels (multiple of 8)
xinteger–Room X position in pixels
yinteger–Room Y position in pixels
NameTypeReqDescription
resultstringyes–

No examples provided.

add_styleground ~159

Add a styleground effect to a map.

NameTypeReqDescription
effect_namestringyesEffect type (e.g. "parallax", "2.5DHelper/VoidBg", "WhiteholeBg", "apply" for a group element)
indexinteger–Position to insert at (-1 appends to the end)
layerstring–"bg" / "background" / "backgrounds" (default), or "fg" / "foreground" / "foregrounds"
map_pathstringyesPath to the .bin file
propertiesstring–JSON object of effect properties (e.g. '{"texture": "bgs/01/bg", "only": "lvl_a-01"}')
NameTypeReqDescription
resultstringyes–

No examples provided.

add_trigger ~208

Add a trigger to a room and save the map.

NameTypeReqDescription
heightinteger–Trigger height in pixels (default 16)
map_pathstringyesPath to the .bin file
nodesstring–JSON array of {"x": int, "y": int} objects for triggers that need path/target nodes (e.g. cameraTargetTrigger). Default "[]".
propertiesstring–JSON object string of extra properties (e.g. '{"dialog_id": "MAP_INTRO"}')
room_namestringyesRoom name
trigger_idinteger–Trigger ID (-1 to auto-assign)
trigger_namestringyesTrigger type (e.g. "everest/dialogTrigger", "2.5DHelper/StarterFlagTrigger")
widthinteger–Trigger width in pixels (default 16)
xintegeryesX position in pixels
yintegeryesY position in pixels
NameTypeReqDescription
resultstringyes–

No examples provided.

analyze_difficulty ~57

Estimate room or map difficulty from hazard density, nav aids, and tile coverage.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
room_namestring–Specific room to analyze. Empty = analyze all rooms.
NameTypeReqDescription
resultstringyes–

No examples provided.

analyze_map ~30

Get detailed statistics about a map file.

NameTypeReqDescription
map_pathstringyesPath to the .bin file
NameTypeReqDescription
resultstringyes–

No examples provided.

analyze_room_connectivity ~38

Analyze room adjacency graph showing isolated rooms, dead ends, and hubs.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
NameTypeReqDescription
resultstringyes–

No examples provided.

audit_plugin_coverage ~69

Compare the mod's C# [CustomEntity] names with its Lönn plugin definitions.

NameTypeReqDescription
prefixstring–Only report names starting with this (e.g. "CEL/").
source_dirstring–C# source folder relative to the workspace (default "Source").
NameTypeReqDescription
resultstringyes–

No examples provided.

batch_add_entities ~119

Add multiple entities to a room in one call.

NameTypeReqDescription
entities_jsonstringyesJSON array of entity objects. Each must have "__name". Optional: x, y, width, height, etc. IDs are auto-assigned. Example: '[{"__name":"strawberry","x":100,"y":50},…
map_pathstringyesPath to the .bin file.
room_namestringyesTarget room name.
NameTypeReqDescription
resultstringyes–

No examples provided.

batch_validate_and_fix ~51

Validate all rooms in a map and optionally auto-fix issues.

NameTypeReqDescription
auto_fixboolean–If True, apply automatic fixes.
map_pathstringyesPath to the .bin file.
NameTypeReqDescription
resultstringyes–

No examples provided.

check_assets ~59

Check that a map only uses things that exist: entity/trigger names with a Lönn definition, decal and parallax textures.

NameTypeReqDescription
limitinteger–Maximum findings to list
map_pathstringyesThe .bin to check
NameTypeReqDescription
resultstringyes–

No examples provided.

check_authoring_json ~102

Resolve authoring JSON without a map: show each object with its defaults filled in from the Lönn definitions, and flag unknown names.

NameTypeReqDescription
authoring_jsonstringyesInline JSON, or a path to a .json file. Format: {"rooms": [{"room": "a-05", "entities": [{"name": "strawberry", "x": 120, "y": 64}], "triggers": [...]}]}
NameTypeReqDescription
resultstringyes–

No examples provided.

check_sprites_xml ~71

Check a Sprites.xml: it parses, ids are unique, and every Anim/Loop has frames in the atlas. Check this first when a sprite does not show in game.

NameTypeReqDescription
limitinteger–Maximum findings to list
xml_pathstring–Sprites.xml in the workspace
NameTypeReqDescription
resultstringyes–

No examples provided.

clone_room ~100

Clone an existing room to a new name and position.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
new_namestringyesName for the cloned room.
source_roomstringyesName of the room to clone.
xinteger–X position for the clone (-1 = place to the right of source).
yinteger–Y position for the clone (-1 = same Y as source).
NameTypeReqDescription
resultstringyes–

No examples provided.

compare_rooms ~55

Compare two rooms in the same map side-by-side.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
room_astringyesFirst room name.
room_bstringyesSecond room name.
NameTypeReqDescription
resultstringyes–

No examples provided.

create_map ~59

Create a new empty Celeste .bin map file.

NameTypeReqDescription
map_pathstringyesPath for the new file (relative to workspace)
package_namestring–Map package name (e.g. "Maggy/PCG/MyMap")
NameTypeReqDescription
resultstringyes–

No examples provided.

editor_close ~59

Close an editor session. Without force, the editor may ask about unsaved changes and stay open.

NameTypeReqDescription
forceboolean–Kill the editor; unsaved editor changes are lost
sessionstring–Session id; empty = the latest
NameTypeReqDescription
resultstringyes–

No examples provided.

editor_open ~114

Open a map in Lönn (or Rysy), optionally on a room. MCP writes to that map are refused until it closes.

NameTypeReqDescription
editorstring–"loenn" or "rysy"
map_pathstringyesThe .bin to open
roomstring–Room to select on load (Lönn only)
storagestring–Lönn settings folder: "isolated" (own copy, default) or "user" (your normal Lönn)
NameTypeReqDescription
resultstringyes–

No examples provided.

editor_status ~22

List editor sessions from this server and any other running Lönn.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

editor_wait ~66

Wait until the user saves in the editor (or it closes), then report what changed. Call again to keep waiting.

NameTypeReqDescription
sessionstring–Session id from editor_open; empty = the latest
timeout_sinteger–Seconds to wait, 1 to 600
NameTypeReqDescription
resultstringyes–

No examples provided.

export_room_json ~63

Export a room as a JSON file for external editing or sharing.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
output_pathstring–Output JSON path (default: auto-generated).
room_namestringyesRoom to export.
NameTypeReqDescription
resultstringyes–

No examples provided.

find_missing_definitions ~42

List namespaced entities and triggers in a map that no installed Lönn plugin defines.

NameTypeReqDescription
map_pathstringyesPath to the .bin file.
NameTypeReqDescription
resultstringyes–

No examples provided.

game_log ~68

Recent lines of the game's log.txt: errors, warnings and level loads.

NameTypeReqDescription
linesinteger–How many trailing log lines to scan.
only_problemsboolean–Keep only errors, warnings about missing events or textures, failed map loads and level-load lines (default True).
NameTypeReqDescription
resultstringyes–

No examples provided.

game_play_tas ~99

Play CelesteTAS inputs from a room's spawn and report where the player ended up.

NameTypeReqDescription
inputsstringyesTAS input lines.
intro_framesinteger–Frames to wait after loading before inputs act.
map_pathstringyesPath to the .bin file (relative to the workspace).
roomstringyesRoom to start in.
timeout_snumber–Give up after this many seconds.
NameTypeReqDescription
resultstringyes–

No examples provided.

game_reload_map ~55

Make the running game re-read a map after it was edited on disk.

NameTypeReqDescription
map_pathstringyesPath to the .bin file (relative to the workspace).
sidestring–A, B or C.
NameTypeReqDescription
resultstringyes–

No examples provided.

game_status ~24

Where the running game is: map SID, side, room and player position.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

game_teleport ~83

Load a room of a map in the running game (a fresh debug session).

NameTypeReqDescription
map_pathstringyesPath to the .bin file (relative to the workspace).
roomstringyesRoom name, with or without 'lvl_'.
sidestring–A, B or C.
x–––
y–––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_effect_definition ~44

Read the source of a Lönn effect definition .lua file.

NameTypeReqDescription
effect_namestringyesName of the effect (searches in Loenn/effects/).
NameTypeReqDescription
resultstringyes–

No examples provided.

get_entity_definition ~66

Read a Lönn entity Lua definition and extract its properties.

NameTypeReqDescription
entity_filestringyesEntity name as placed in maps (e.g. "CEL/KrackoBoss") or a filename (e.g. "kirbyBoss" or "kirbyBoss.lua")
NameTypeReqDescription
resultstringyes–

No examples provided.

get_map_dependencies ~39

Read the mod dependencies list from a map's everest.yaml or meta node.

NameTypeReqDescription
map_pathstringyesPath to the .bin file
NameTypeReqDescription
resultstringyes–

No examples provided.

get_map_metadata ~39

Read the map-level metadata block (Everest/celeste.yaml meta settings).

NameTypeReqDescription
map_pathstringyesPath to the .bin file
NameTypeReqDescription
resultstringyes–

No examples provided.

get_mod_info ~17

Get information about the current mod project.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

get_room_settings ~59

Get all editable settings for a room (music, physics, wind, camera, flags).

NameTypeReqDescription
map_pathstringyesPath to the .bin file
room_namestringyesRoom name (with or without 'lvl_' prefix)
NameTypeReqDescription
resultstringyes–

No examples provided.

get_room_tiles ~65

Get the complete tile grid for a room as text.

NameTypeReqDescription
layerstring–"fg" for foreground (solids), "bg" for background
map_pathstringyesPath to the .bin file
room_namestringyesRoom name
NameTypeReqDescription
resultstringyes–

No examples provided.

get_trigger_definition ~44

Read the source of a Lönn trigger definition .lua file.

NameTypeReqDescription
trigger_namestringyesName of the trigger (searches in Loenn/triggers/).
NameTypeReqDescription
resultstringyes–

No examples provided.

import_room_json ~111

Import a room from a JSON file into a map.

NameTypeReqDescription
json_pathstringyesPath to the JSON file (exported by export_room_json).
map_pathstringyesPath to the .bin file to import into.
new_namestring–Optional new name for the room (overrides name in JSON).
xinteger–X position override (-1 = use position from JSON).
yinteger–Y position override (-1 = use position from JSON).
NameTypeReqDescription
resultstringyes–

No examples provided.

json_to_map ~66

Convert typed JSON (from map_to_json, possibly edited) back to a .bin map.

NameTypeReqDescription
json_pathstringyesTyped JSON file
map_pathstringyesOutput .bin path
overwriteboolean–Must be true to replace an existing map
NameTypeReqDescription
resultstringyes–

No examples provided.

list_decals ~64

List all decals in a room (foreground or background).

NameTypeReqDescription
layerstring–"fg" for foreground decals, "bg" for background decals.
map_pathstringyesPath to the .bin file.
room_namestringyesRoom name.
NameTypeReqDescription
resultstringyes–

No examples provided.

list_effect_definitions ~31

List available Lönn effect definitions.

NameTypeReqDescription
filter_textstring–Optional text to filter filenames
NameTypeReqDescription
resultstringyes–

No examples provided.

list_entity_definitions ~34

List available Lönn entity definitions from the project.

NameTypeReqDescription
filter_textstring–Optional text to filter filenames
NameTypeReqDescription
resultstringyes–

No examples provided.

list_maps ~35

List all .bin map files in the project.

NameTypeReqDescription
subdirstring–Subdirectory to search (default: "Maps")
NameTypeReqDescription
resultstringyes–

No examples provided.

list_stylegrounds ~37

List all stylegrounds (foreground + background effects) in a map.

NameTypeReqDescription
map_pathstringyesPath to the .bin file
NameTypeReqDescription
resultstringyes–

No examples provided.

list_trigger_definitions ~31

List available Lönn trigger definitions.

NameTypeReqDescription
filter_textstring–Optional text to filter filenames
NameTypeReqDescription
resultstringyes–

No examples provided.

map_backups ~45

List the timestamped backups of a map, newest first.

NameTypeReqDescription
limitinteger–Maximum entries
map_pathstringyesThe .bin whose backups to list
NameTypeReqDescription
resultstringyes–

No examples provided.

map_commit ~132

Apply a working copy to the real map: whole file, or only the listed rooms. Dry run shows the diff first.

NameTypeReqDescription
allow_issuesboolean–Write even if the committed rooms fail validation (e.g. no player spawn)
dry_runboolean–Only show the diff and checks (default). Set false to write.
roomsstring–Comma-separated room names to take from the copy; empty = replace the whole map
target_mapstringyesThe map to update (a timestamped backup is kept)
work_mapstringyesThe edited copy
NameTypeReqDescription
resultstringyes–

No examples provided.

map_copy ~67

Copy a map to a working copy so edits never touch the original. Default target: Maps/<mod>/wip/<name>.copy.bin.

NameTypeReqDescription
deststring–Target .bin in the workspace; must not exist yet
map_pathstringyes.bin to copy
NameTypeReqDescription
resultstringyes–

No examples provided.

map_diff ~92

Semantic diff of two maps: rooms, geometry, fg/bg tiles, entities, triggers, decals, stylegrounds, meta.

NameTypeReqDescription
limitinteger–Maximum output lines
map_astringyesThe older map (or the map to compare with its latest backup when map_b is empty)
map_bstring–The newer map; empty = compare map_a's latest backup -> map_a
NameTypeReqDescription
resultstringyes–

No examples provided.

map_restore ~71

Restore a map from one of its backups (the current file is backed up first).

NameTypeReqDescription
backupstring–Backup file name from map_backups, or "latest"
dry_runboolean–Only show what would change (default)
map_pathstringyesThe .bin to restore
NameTypeReqDescription
resultstringyes–

No examples provided.

map_to_json ~76

Convert a .bin map to typed JSON that converts back byte-identical.

NameTypeReqDescription
indentinteger–JSON indent; 0 for the most compact file
map_pathstringyesPath to the .bin file
output_pathstring–Where to write the JSON (default: Export/<map>.json)
NameTypeReqDescription
resultstringyes–

No examples provided.

Install

How do I install the loenn-mcp server?

loenn-mcp ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 99aa5f3cd18d0bcc9fc9016683aa7a10b29beaa868161cb40f45f640fe2a90f5; the commands to do that are on this page. If it does not match, do not open it.

mcpb · loenn-mcp-7.2.0.mcpb

Download bundle

Check the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.

SHA-256

99aa5f3cd18d0bcc9fc9016683aa7a10b29beaa868161cb40f45f640fe2a90f5

macOS / Linux

echo "99aa5f3cd18d0bcc9fc9016683aa7a10b29beaa868161cb40f45f640fe2a90f5  loenn-mcp-7.2.0.mcpb" | shasum -a 256 -c

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\loenn-mcp-7.2.0.mcpb).Hash -eq "99aa5f3cd18d0bcc9fc9016683aa7a10b29beaa868161cb40f45f640fe2a90f5"

Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.

Common questions

What is the loenn-mcp server?

loenn-mcp is listed in the public MCP registry as io.github.Magedeline/loenn-mcp. Celeste map editor for AI agents: read, edit, validate, preview and generate .bin maps. This page covers its MCPB bundle (https://github.com/Magedeline/loenn-mcp/releases/download/v7.2.0/loenn-mcp-7.2.0.mcpb).

Is the loenn-mcp server safe to use?

loenn-mcp scores 42 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the loenn-mcp server expose?

loenn-mcp exposes 89 tools: list_maps, read_map_overview, read_room, get_room_tiles, add_entity, and 84 more. Their descriptions and schemas cost roughly 7,588 tokens of context every time the server is loaded.

What licence is the loenn-mcp server under?

loenn-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.