loenn-mcp
MCPB · LOENN-MCP-7.2.0.MCPB
Celeste map editor for AI agents: read, edit, validate, preview and generate .bin maps.
Available components
Last scanned (2 hours ago)
Scores higher than 73% of MCPB servers
Category Entertainment and Games
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 13 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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.
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.
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 →
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 →
merge_json_into_map ~131
Add entities, triggers and rooms from authoring JSON to an existing map.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | Write even when placement checks fail |
| allow_unknown | boolean | – | Place objects with no Lönn definition anyway |
| authoring_json | string | yes | Inline JSON or a path to a .json file (see check_authoring_json) |
| dry_run | boolean | – | Only show the diff (default). Set false to write. |
| map_path | string | yes | Path to the .bin file |
| preview | boolean | – | Also render an HTML preview with the additions highlighted |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
move_entity ~76
Move an entity to a new position.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_id | integer | yes | ID of the entity to move. |
| map_path | string | yes | Path to the .bin file. |
| room_name | string | yes | Room containing the entity. |
| x | integer | yes | New X position. |
| y | integer | yes | New Y position. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
move_room ~66
Move a room to a new world-space position.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| x | integer | yes | New X position in pixels |
| y | integer | yes | New Y position in pixels |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
pcg_generate_room ~335
Generate a gray-box room with the shared C# PCG core and write it into a map (dry run first).
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | Write even when placement checks fail |
| bg | string | – | Background tileset character |
| difficulty | integer | – | 1 (gentle) to 10 (hard): hop length, spikes, jump-throughs, refills |
| dry_run | boolean | – | Only show the result (default) |
| entry | integer | – | Index in exits of the exit the player enters by (must be left or right) |
| exits | string | – | Comma list of side:offset:size in tiles (side left/right/top/bottom; offset = first row or column) |
| fg | string | – | Foreground tileset character for solid tiles |
| height | integer | – | Room height in tiles (23 = one screen) |
| map_path | string | yes | Map to write into (the base when output_path is set) |
| output_path | string | – | Write to this .bin instead of map_path |
| replace | boolean | – | Replace an existing room's tiles and entities (solid cells keep their tileset) |
| room | string | yes | Room name (lvl_ is added if the map's rooms use it) |
| seed | – | – | Seed; default derived from the map path and room name |
| width | integer | – | Room width in tiles (40 = one screen) |
| x | – | – | Room x in pixels for a new room; default: right of the existing rooms |
| y | – | – | Room y in pixels for a new room |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
preview_map_section ~112
Generate an ASCII preview of a map section, like a Lönn mini-map.
| Name | Type | Req | Description |
|---|---|---|---|
| center_room | string | – | Center the view on this room name |
| cols | integer | – | Terminal width for the preview (default 140) |
| map_path | string | yes | Path to the .bin file |
| prefix | string | – | Only show rooms whose name starts with this (e.g. "g-", "h-") |
| rows | integer | – | Terminal height for the preview (default 60) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
read_map_metadata ~36
Read high-level metadata from a map without listing all room contents.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
read_map_overview ~45
Parse a .bin map file and return a summary of rooms and structure.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file (relative to workspace or absolute) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
read_room ~54
Get detailed data for a specific room: tiles, entities, triggers.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name (with or without 'lvl_' prefix) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_decal ~68
Remove a decal by index.
| Name | Type | Req | Description |
|---|---|---|---|
| index | integer | yes | Decal index (from list_decals output). |
| layer | string | – | "fg" or "bg". |
| map_path | string | yes | Path to the .bin file. |
| room_name | string | yes | Room name. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_entity ~54
Remove an entity from a room by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_id | integer | yes | Entity ID to remove |
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_room ~41
Remove a room from a map.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_styleground ~76
Remove a styleground from a map by its index in the layer.
| Name | Type | Req | Description |
|---|---|---|---|
| index | integer | yes | 0-based index of the styleground in that layer |
| layer | string | yes | "fg"/"foregrounds" or "bg"/"backgrounds" |
| map_path | string | yes | Path to the .bin file |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
remove_trigger ~54
Remove a trigger from a room by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| trigger_id | integer | yes | Trigger ID to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
rename_room ~59
Rename a room in a map.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| new_name | string | yes | New room name (lvl_ prefix added automatically if missing) |
| room_name | string | yes | Current room name |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
render_map_html ~212
Render an interactive HTML map preview with zoom, pan, search, and detail panel.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | boolean | – | Draw each room's solid/background tiles and entity markers (hazards red, collectibles gold, spawns green, refills light green). False draws room boxes only. |
| map_path | string | yes | Path to a .bin file, or to a typed JSON dump made by map_to_json |
| output_file | string | – | Output HTML filename (default: map_preview.html in Temp/) |
| overlay | string | – | Authoring JSON (inline, or a path to a .json file) to preview as a merge: it is applied in memory only, and every object it would add is ringed in magenta (red when a placement check failed). Nothing… |
| prefix | string | – | Only show rooms matching this prefix (e.g. "g-", "w-"); works whether or not the map's room names carry 'lvl_' |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
replace_audio_event ~113
Find and replace an FMOD audio event path anywhere in a map.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | If true, report what would change without writing the file |
| map_path | string | yes | Path to the .bin file |
| new_event | string | yes | Replacement substring, e.g. "DZ" |
| old_event | string | yes | Substring to find, e.g. "pusheen" or a full event path like "event:/music/pusheen/lvl2/beginning" |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
resize_room ~93
Resize a room (snaps to 8-pixel grid, preserves tile data).
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | yes | New height in pixels (must be multiple of 8, min 40) |
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| width | integer | yes | New width in pixels (must be multiple of 8, min 40) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
run_author_script ~126
Run a JavaScript authoring script (js/ package, lucid-dream style) and use its output.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | See merge_json_into_map |
| allow_unknown | boolean | – | See merge_json_into_map |
| dry_run | boolean | – | Only show the diff when merging (default) |
| map_path | string | – | Map to merge into (optional) |
| output_json | string | – | Where to save the generated authoring JSON (default: Export/<script>.authoring.json) |
| script_path | string | yes | The .js file |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
search_entities ~126
Search for entities across all rooms (or a specific room) by type and/or position.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_type | string | – | Filter by entity type name (substring match). Empty = all. |
| map_path | string | yes | Path to the .bin file. |
| max_x | integer | – | Maximum X position filter. |
| max_y | integer | – | Maximum Y position filter. |
| min_x | integer | – | Minimum X position filter. |
| min_y | integer | – | Minimum Y position filter. |
| room_name | string | – | Search only in this room. Empty = all rooms. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
search_triggers ~69
Search for triggers across all rooms by type.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file. |
| room_name | string | – | Search only in this room. Empty = all rooms. |
| trigger_type | string | – | Filter by trigger type (substring match). Empty = all. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
selecte_generate ~323
Generate a whole level with seleCte (rooms sampled from a Markov model of the vanilla maps), encode it with Julia and validate the .bin.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | Copy to output_path even when the checklist reports problems |
| height | integer | – | Room height in tiles (14 is quick, 23 = one screen) |
| model | string | – | Probability-estimation dictionary (file stem in seleCte's probability_estimation_dicts); default pe_d5_full |
| name | string | yes | Level name: the .bin file stem and the work folder (letters, digits, - and _) |
| nb_rooms | integer | – | Number of rooms |
| output_path | string | – | Also copy the validated .bin to this map path in the workspace (backup, protected maps, open editors apply) |
| proba | number | – | Layout shape: 0 is a straight corridor, values near 1 a labyrinth |
| reset_skeleton | boolean | – | Redraw the whole layout when a room never comes out playable |
| seed | – | – | Seed for reproducible runs (needs the patched seleCte clone) |
| timeout | integer | – | Seconds allowed for each of the two steps |
| tries_limit | integer | – | Resample attempts per room before it is kept as it is |
| width | integer | – | Room width in tiles (22 is quick, 40 = one screen but slow) |
| work_dir | string | – | Folder for the level's files; default <state dir>/selecte/<name> |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
set_map_dependencies ~112
Write or update the mod dependency list in the map's everest.yaml.
| Name | Type | Req | Description |
|---|---|---|---|
| dependencies | string | yes | JSON array of dependency objects, each with "Name" and "Version" fields. Use "Celeste" and "Everest" as base deps. Example: '[{"Name":"Everest","Version":"1.0.0"},… |
| map_path | string | yes | Path to the .bin file |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
set_map_metadata ~133
Set map-level metadata properties (Everest meta block).
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| settings | string | yes | JSON object of meta key/value pairs to set, e.g. '{"Wipe": "Mountain", "Dreaming": true}' |
| subpath | string | – | Optional '/'-separated path to a nested element under meta to target instead of meta itself, e.g. "mode/audiostate" for '{"Music": "event:/music/DZ/lvl2/beginning"}'. Missing intermedi… |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
set_room_tiles ~92
Set tile data for a room. Each row is a line of characters ('0'=air).
| Name | Type | Req | Description |
|---|---|---|---|
| layer | string | – | "fg" for foreground (solids), "bg" for background |
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| tiles | string | yes | Tile data (newline-separated rows, 1 char per tile) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
sf_import ~249
Import a Sprite Fusion JSON export (map.zip) as a Celeste room: solid/bg tiles plus gray-box entities.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | Write even when placement checks fail |
| allow_unknown | boolean | – | Place names with no Lönn definition |
| dry_run | boolean | – | Only show the result (default) |
| export_path | string | yes | map.zip, its folder, or map.json (any absolute path) |
| legend_path | string | – | Custom legend JSON; default: the built-in gray-box legend |
| map_path | string | yes | Map to import into (the base when output_path is set) |
| output_path | string | – | Write to this .bin instead of map_path (created from map_path if missing) |
| replace | boolean | – | Replace an existing room's fg/bg tiles and entities (triggers, decals, settings stay; solid cells keep their tileset) |
| room | string | yes | Room name (lvl_ is added if the map's rooms use it) |
| x | – | – | Room x in pixels for a new room; default: right of the existing rooms |
| y | – | – | Room y in pixels for a new room |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
sf_make_tileset ~54
Write the Celeste gray-box tileset for Sprite Fusion (PNG, legend JSON, README).
| Name | Type | Req | Description |
|---|---|---|---|
| out_dir | string | – | Folder to write to (any absolute path); default <state dir>/sprite-fusion |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_export_room ~244
Turn a Summer room scene into a Celeste room (new, or replace=true). Same checks and safe write as sf_import.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_problems | boolean | – | Write even when placement checks fail |
| allow_unknown | boolean | – | Place marker entities with no Lönn definition |
| dry_run | boolean | – | Only show the result (default) |
| map_path | string | yes | Map to write into (the base when output_path is set) |
| output_path | string | – | Write to this .bin instead of map_path |
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox |
| replace | boolean | – | Replace an existing room's fg/bg tiles and entities (solid cells keep their tileset) |
| room | string | – | Celeste room name; default: the scene's celeste_room metadata, else the scene name |
| scene | string | yes | Room name, rooms/x.tscn or res:// path in the Summer project |
| x | – | – | Room x in pixels for a new room; default: right of the existing rooms |
| y | – | – | Room y in pixels for a new room |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_from_sprite_fusion ~121
Turn a Sprite Fusion export (map.zip) into a Summer room scene, to refine it in Summer before export.
| Name | Type | Req | Description |
|---|---|---|---|
| export_path | string | yes | map.zip, its folder, or map.json |
| legend_path | string | – | Custom legend JSON; default: the built-in gray-box legend |
| overwrite | boolean | – | Replace an existing scene |
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox |
| scene | string | yes | Room/scene name to create (rooms/<scene>.tscn) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_import_room ~105
Copy a Celeste room into the Summer project as a scene (fg/bg tiles, gray-box entities as tiles, others as markers).
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Map holding the room |
| overwrite | boolean | – | Replace an existing scene |
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox |
| room | string | yes | Room name |
| scene | string | – | Scene to write; default rooms/<room>.tscn |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_init ~56
Create or refresh the Summer Engine gray-box project (tileset with collision, room template, bridge scripts).
| Name | Type | Req | Description |
|---|---|---|---|
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox (LOENN_MCP_SUMMER_PROJECT) |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_open ~71
Open the gray-box project in Summer Engine, optionally on a room scene.
| Name | Type | Req | Description |
|---|---|---|---|
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox |
| scene | string | – | Room name, project path (rooms/x.tscn) or res:// path; empty = just the project |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
summer_rooms ~38
List the room scenes in the Summer gray-box project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_dir | string | – | Project folder; default ~/Documents/CEL-Graybox |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_entity ~93
Update properties of an existing entity by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_id | integer | yes | ID of the entity to update. |
| map_path | string | yes | Path to the .bin file. |
| properties_json | string | yes | JSON object of properties to set/update. Example: '{"x": 100, "y": 50, "width": 16}' |
| room_name | string | yes | Room containing the entity. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_room ~82
Update room-level properties (music, dark, wind, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file. |
| properties_json | string | yes | JSON object of properties to update. Example: '{"dark": true, "windPattern": "Left"}' |
| room_name | string | yes | Room name (with or without lvl_ prefix). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_room_settings ~91
Update room settings (music, physics, wind, camera, flags) by merging a JSON object.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file |
| room_name | string | yes | Room name |
| settings | string | yes | JSON object of key/value pairs to update, e.g. '{"music": "event:/music/lvl2/beginning", "dark": true}' |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
update_styleground ~87
Merge properties into an existing styleground without replacing it.
| Name | Type | Req | Description |
|---|---|---|---|
| index | integer | yes | 0-based index of the styleground in that layer |
| layer | string | yes | "fg"/"foregrounds" or "bg"/"backgrounds" |
| map_path | string | yes | Path to the .bin file |
| properties | string | yes | JSON object of properties to merge in |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_audio ~34
Check every audio event a map references against the sound banks.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_map ~59
Validate an entire map for playability issues.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_fix | boolean | – | If True, automatically fix issues where possible (adds spawns, floor tiles, clamps entities). |
| map_path | string | yes | Path to the .bin file. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_room ~49
Check a room for common playability problems.
| Name | Type | Req | Description |
|---|---|---|---|
| map_path | string | yes | Path to the .bin file. |
| room_name | string | yes | Room name (with or without 'lvl_' prefix). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
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 bundleCheck 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.
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.