Repository navigation
0.2.0 turns plans into a versioned history that chat and the web page share, with merge, undo and restore, and adds a planner workbench, inventory and progress sections and a recipes codex to the page. The power ledger is now built from the save's actual circuits, and the map gets a new look: the game's own textures and tree crowns, a live sun with separate terrain and tree shadows, and an option to publish the map as a public, map-only site.
Before you upgrade
- Do not downgrade after running this version. Plans move from
plans/<world>.jsonto a versioned log underplans/<world>/. The move runs once, the first time a world's plans are read. It copies the old file toplans/<world>/backup-v<version>/first and leaves the old file itself untouched. An older version keeps reading that old file, so it will not see plans created or changed after the upgrade, and anything it writes there is not carried over into the new log. - Do not run an older MCP server next to a newer web server. Stop both and upgrade them together.
- Rebuild the web page (
npm ci && npm run build) or unzip this release'sstatic.zip(see below). world_summaryreportslast_hard_drive_analysedinstead oflast_hard_drive_spent. The save's counter names the drive analysed last, and that drive can still be waiting for a pick.- Machines and generators on no wire are left out of the power ledger, so
power_reportand the page header can show lower draw than before./api/power/circuitslists them underoff_grid. - Label writes: a bad name now returns 400 and an unknown label 404 (both were 409). A 409 carries
stale,name_takenandpinflags. New labels with/or longer than 60 characters are refused. - Stage headroom and count biomass burners are now one setting shared by the page and chat, stored in
settings.jsonin the user data directory. A browser's own earlier value is taken over once. Chat'sbiomass=now defaults to that setting, and a newsettingstool reads and changes it. - Map generation needs
zstandard, now part of thegenextra: stop satisfactory-mcp, then runuv sync --extra gen. Raster caches from an earlier version are still reused;python -m mapgen compress-cache <dir>makes them about 20x smaller. - Re-run the paint layers (
python -m mapgen paint, or paint in the Maps tab) before the next painted render. Paint layers from an earlier version keep no daylight, so a painted map drawn from them keeps the screenshot colours. Paint layers from before generator 5 keep no landscape textures, so a Satellite map drawn from them has no ground detail. - Deprecated: the scripts
tools/gen_map_renders.py,gen_map_image.py,gen_world_heightmap.py,gen_paint_layers.pyandcheck_map_fill.pynow forward topython -m mapgen <command>and print a warning. They will be removed in 0.3.0. - Removed: the biome-coloured satellite style and the light relief are no longer drawn. Maps already rendered in them stay listed as "Biome (old)" and "Relief light (old)" until deleted.
What's new
Planner
- Every plan keeps its full history: each change is a revision, and you can undo it or restore an earlier one.
- Chat and the page edit the same plans. A save made against an older revision is merged instead of overwriting, also across renames.
- A new planner tab on the page shows a versioned workbench that follows what chat is doing, live.
- Payback horizon: a plan can spread rows over more, slower machines when the power they save, priced at the save's grid mix, pays for them in time. An overclock last switch builds a row one machine short instead. Both are on
plan_factoryandplan_layoutand default from the shared settings. - A recalled plan keeps its objective and its pinned logistics; chat and the planner quote the same net power figure.
Factories and power
- The world power ledger is the sum of its circuits. Unwired machines no longer use up headroom, and generators on no wire get their own list.
- Standing Biomass Burners count their 30 MW.
- The Overview and factory action lists show only machines that need action, counted across factories, and leave paused machines out.
- Fluid buffers count towards stock, so stock totals match the containers holding them.
- Detect numbers its suggestions like the map, prefers a made item over an ore when guessing a name, and the map and chat name an unnamed cluster the same way.
- Renames are more robust: power circuit names follow a rename without a reload, and a label containing
/can be renamed or forgotten.
Map
- Satellite (the game-painted map, renamed; Relief is the dark relief) now shows the game's own landscape textures, rock and cliff materials, and every tree crown drawn from its species' own sprite.
- Seas, lagoons, lakes and rivers look closer to the game: turquoise shallows, navy depths, smooth shorelines, and no more stair-stepped water edges or stray foam blocks.
- New maps are rendered with a live sun by default. On the page, terrain shadows and tree shadows can be switched separately, a hillshade only button shows the bare relief, and shade and trees checkboxes turn the lighting and the tree layer off.
- Arches, overhangs and tree canopies cast proper shadows, with dappled light under the canopy.
- The rendered map can be published as a public, map-only static site; docs/map/sharing.md has the steps.
- Renders are much faster and lighter: compressed caches (0.93 GB instead of 18.5 GB), multi-threaded drawing, optional GPU acceleration (
--gpu, needs the newgpuextra), and the same tiles every time. - Rivers take the game's own river absorption: shallow runs show their bed, deep pools and runs go blue. Translucent lakes, like the Blue Crater's, now darken with depth.
- Desert boulders, desert shells and desert arches wear the game's terracotta wherever their material says so; red-grass cliff tops and beach barnacles have their own textures.
- Tree crowns read as rounded forms in the sun, with sky light on their leaves, and keep the shadows smooth when the sun is moved off its usual path.
- Fixed: a seam line across the southern fields, coarse fill showing as blocks in the eastern sea, dry hollows below sea level drawn as water, and a sunken west-coast lake drawn flat.
- The share export can stream a tar straight to a server, and full map renders run about a third faster.
Chat and MCP tools
- New
settingstool to read and change the settings shared with the page (stage headroom, counting biomass burners). - Planning tools write through the plan history and record chat activity, so the page can follow along.
- Search leaves out locked recipes when spoilers are off; building and hand-craft recipes show amounts per build, not per minute.
- An old save with no phase pointer no longer marks every Space Elevator phase complete; retired MAM nodes are not listed or counted.
Web page
- New inventory section: stock, containers and crates.
- New progress section: MAM, Space Elevator, hard drives, power shards and somersloops.
- New recipes codex, with a search box in the header.
- Supply-path trace: pick a machine or factory and see where its inputs come from, drawn on the map.
- The page catches up on plans and chat activity after a lost connection, and saves against the revision you saw.
- Fixes: map clicks work after a trace is closed, an unfinished rename no longer freezes the dashboard, and a malformed
%in the address no longer stops the page from loading.
Install / upgrade
You need Python 3.11 or later, uv and a local Satisfactory installation. Node.js is only needed to build the page yourself.
Stop the MCP server and the web server first. Then:
# new install
git clone https://github.com/lukszi/SatisfactoryMCP.git
cd SatisfactoryMCP
# or, in an existing clone
git pull # tracking `stable` gives you releases only
uv sync --extra web # add --extra gen to keep map generationThen get the web page, either way:
Build it (needs Node.js):
cd src/satisfactory_mcp/interfaces/web/frontend
npm ci && npm run build
cd -Or unzip static.zip from this release. It holds the contents of the static/ folder, so extract it straight into src/satisfactory_mcp/interfaces/web/static, replacing what is there:
# Windows PowerShell
Expand-Archive static.zip -DestinationPath src\satisfactory_mcp\interfaces\web\static -Force# macOS / Linux
unzip -o static.zip -d src/satisfactory_mcp/interfaces/web/staticStart the page with uv run satisfactory-mcp-web and open http://127.0.0.1:8712.
Full list of changes: CHANGELOG.md for v0.2.0