SatisfactoryMCPBLOCK
MCP server and local interactive map for Satisfactory — plan factories, trace logistics, and explore your world, all read straight from your own save files.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Ask Claude about your Satisfactory world — and get answers read straight from your own save files. This is an MCP server plus a local web map: the server plans factories with a real optimizer over the game's own recipe data and your actual progress, and the map renders your world in the browser — terrain, factories, belts and pipes, power wiring, floors, crates. Everything runs locally: your saves, the recipe data and the map artwork are all read off this machine, and nothing about your world is sent anywhere.
What you can ask
Phrased however you like — the model picks the tools:
- *"Plan a factory for 20 Modular Frames per minute using only recipes I've actually unlocked —
what do I build, and how much power will it draw?"*
- "Which of my pending hard drives should I bank first, and why?"
- "How healthy is my steel factory right now? Anything idle or starved?"
- "Where am I standing, and what's the best spot near me for an aluminium setup?"
- "What's still missing for Phase 3, and which factory is the bottleneck?"
- "Trace my Reinforced Iron Plates upstream and tell me where the chain is thinnest."
- *"Compare th
877245b5237aOBSERVED · 2026-10-10Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add satisfactory-mcp-web-frontend -- npx -y satisfactory-mcp-web-frontend
{
"mcpServers": {
"satisfactory-mcp-web-frontend": {
"command": "npx",
"args": [
"-y",
"satisfactory-mcp-web-frontend"
]
}
}
}Exposed tools (22)
18 read · 2 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
advise_hard_drive_pick | read | Rank one pending drive |
bom | read | Flattened bill of materials: total raw and intermediate rates for qty/min of an item. |
compare_recipe_options | read | Rank whole ROUTES to make an item by what each actually costs. |
crates | read | The crates lying on the ground: what is in each one and where to walk to get it. |
explain_byproducts | read | Explain which byproducts stall a plan, and what can legally consume them. |
factory_map | read | Proposed factories, from power islands and belt topology, plus what is named. |
factory_sites | read | Built production buildings clustered into sites, largest first. |
forget_factory | destructive | Delete a factory label. The machines themselves are untouched. |
forget_plan | destructive | Delete a saved plan. Nothing in the world is touched, and plan_log can undo it. |
list_factories | read | Named factories for this world, with how much of each is still standing. |
list_pending_hard_drive_choices | write | The pending hard-drive choices stored in the save, with rerolls left. |
list_regions | read | Named map regions, optionally only those containing a given resource. |
list_worlds | write | List save games grouped by world, newest first. |
phase_requirements | read | What the Space Elevator still wants, live record and deprecated record apart. |
power_report | read | Generation capacity vs machine draw, nameplate AND measured. |
power_shards | read | Power Shards held, committed and free, plus what an overclock plan would cost. |
recipe_detail | read | Exact numbers for one recipe: rates, machine, power, unlock source. |
search_items | read | Find items by name. Returns form, energy and sink points. |
somersloops | read | Somersloops held, slotted and owned -- the sibling of power_shards. |
unlocked_recipes | read | Which recipes this world has. Defaults to alternates, never all 872. |
whereami | read | Where the player is standing, and what is around them. |
world_summary | read | Progress, power and problems for one world, and the advisories worth a look (adv: ids). |
Trust audit
BLOCKgrade F · trust 54/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (11 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (4 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (25)
payload.py
loaded: object = pickle.loads(disk.read_bytes())
module = importlib.import_module(module_name)
importlib.import_module(name)
const url = `http://127.0.0.1:${port}/openapi.json`;target: process.env.SATISFACTORY_MCP_WEB || "http://127.0.0.1:8712",
body = render.table([*headers, "Δmach", "ΔMW draw", "Δraw"], rows)
forget_factory, forget_plan
save_body.bin
save_body_destroyed.bin
save_body_v25.bin
save_body_v36.bin
save_body_v52.bin
assert pickle.loads(path.read_bytes())["note"] == "a\nb\r\nc"
home = getattr(rules, module, None) or importlib.import_module(homes[module])
digest = hashlib.md5(data[body_offset:], usedforsecurity=False).digest()
key: hashlib.sha1(key.encode("utf-8"), usedforsecurity=False).hexdigest()digest = hashlib.sha1(json.dumps(shape).encode("utf-8"), usedforsecurity=False)SLICE_DIR = "../../../FactoryGame/Content/FactoryGame/Interface/UI/Assets/MapTest/SlicedMap/"
"../../../FactoryGame/Content/FactoryGame/Interface/UI/Minimap/"
"../../../FactoryGame/Content/FactoryGame/Interface/UI/Minimap/MapAreaPersistenLevel/"
import { button, subTabs } from "../../kit/dashkit";import { hashFor } from "../../map/map";The map is at <http://127.0.0.1:8712>, and it follows your saves live as you play. It binds to
http://127.0.0.1:5173/api/events` delivers `event: save` frames as the watcher emits them,
Gates applied: no_behavioural_pass.
877245b5237afull audit observations/trust-audit/mcp-server/lukszi__satisfactorymcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | 877245b5237a | BLOCK | F | 54 | first audit |
Questions
What is the SatisfactoryMCP MCP server?
MCP server and local interactive map for Satisfactory — plan factories, trace logistics, and explore your world, all read straight from your own save files.
What tools does SatisfactoryMCP expose?
22 in total: 18 read-only, 2 that write, and 2 that can delete or overwrite (forget_factory, forget_plan). Every one is listed on this page with its risk.
Is SatisfactoryMCP safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (54/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does SatisfactoryMCP need?
No credential environment variables were found in its source, so it appears to need none.
How current is this page?
The grade is for one exact copy of the source (877245b5237a), read on 2026-10-10. The repository is watched and re-audited when it changes.