factorio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FACTORIO_TAKEOVER | No | Set to '1' to take over character even if another session holds it | 0 |
| FACTORIO_CHARACTER | No | The character this instance controls | agent |
| FACTORIO_RCON_HOST | No | RCON host | 127.0.0.1 |
| FACTORIO_RCON_PORT | No | RCON port | 27015 |
| FACTORIO_MCP_WAIT_S | No | Default wait_s for job tools | 30 |
| FACTORIO_RCON_PASSWORD | Yes | RCON password (required) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusA | Connect (if needed) and report the connection, your character's binding, and a summary of its surroundings. |
| look_aroundB | Your character's position, inventory, equipment and jobs, plus what it knows around it: players and other agent characters in view, resource patches and trees on explored ground, your force's buildings with status counts, visible enemies, research, power and top production. |
| check_inventoryC | Your character's inventory and equipment. |
| inspect_entityA | Details of entities near map positions (searched within 1.5 tiles; explored ground only; other forces only while visible): type, status, recipe, crafting progress, inventories, fuel burning, energy buffer (kJ), belt contents, fluids, and for mining drills the ore left in their mining area. Up to 16 per call. |
| scan_areaB | ASCII tile grid of a square area: one character per tile, rows north to south. Unexplored tiles are '?'. The legend explains every symbol (uppercase = resources, lowercase = your force's buildings, @ = you). |
| describe_prototypeA | Everything about up to 10 names at once — the item (stack size, fuel value), the entity it places (footprint, power use in kW, crafting/mining speed, mining area, drill drop offset, inserter pickup/drop offsets, module slots, belt speed) and the recipe that makes it (ingredients, products, time, unlocked or not). |
| analyze_factoryB | Machines of your force in an area (explored ground) grouped by problem — no power, low power, no fuel, missing ingredients (with which ingredient when detectable), output full, depleted ore, idle — plus power summary. |
| can_placeA | Check whether items could be placed at explored positions right now (no side effects). Up to 24 placements per call. Answers yes, or no with the blocker when identifiable. |
| find_buildable_areaA | Nearest width x height rectangle of free land (no water, cliffs or entities; trees allowed and counted) on explored ground near a point. |
| production_statsA | Your force's item and fluid production and consumption on your surface, per minute over a time window (like the production statistics window), plus all-time totals. |
| list_trainsB | Trains on your surface (id, state, mode, cars, position, station, schedule, cargo) and the known train stop names. |
| list_blueprintsB | Blueprints your character carries (inventory and books, nested books included). |
| read_blueprintA | Decode a carried blueprint by label into relative entity positions and its item bill (read in windows). |
| import_blueprintA | Decode a blueprint export string into relative entity positions (top-left entity at 0,0), directions, recipes and the item bill. Does not build. |
| export_blueprintA | Capture your force's buildings in an explored rectangle (max 200x200 tiles) as a blueprint export string, with entity counts and the map anchor of its top-left entity. |
| read_chatB | Chat messages since your last read (or since since_id): players and other agents; your own lines excluded. |
| get_eventsC | Events since your last read (or since since_id): your jobs finishing or failing, your character attacked or killed, research finished, supply warnings of duties. |
| wait_for_eventsA | Block until new chat or a new event arrives, or timeout_s passes (polls about twice per second). |
| sayA | Say something in game chat as your character. |
| start_researchC | Queue a technology for research for your force. |
| equipA | Move a gun, ammo and/or armor from your main inventory into your equipment slots. |
| exit_vehicleA | Leave the vehicle you are in. |
| set_train_scheduleB | Set a train's schedule (existing stop names with wait conditions) and switch it to automatic. |
| respawnA | Create a new body for your character at the spawn point (after death), with the scenario's respawn kit. |
| walk_toA | Walk to a map position with the game pathfinder at normal walking speed. The goal must be on explored ground or within the exploration radius (default 64 tiles) of you. |
| drive_toA | Board the nearest free car (fuelling it from your inventory if needed) and drive to a position. |
| follow_playerA | Persistent job: follow a player at a distance until cancelled. Replaces your current jobs. |
| mineA | Mine by hand (vanilla mining time and reach): either the minable thing at x,y, or |
| place_entityA | Place a building from your inventory (walks within build range; normal placement rules). |
| craft_itemsA | Hand-craft with your character's crafting queue (real crafting time; missing intermediates are queued too). |
| insert_itemsB | Move items from your inventory into the entity at x,y (walks within reach). |
| extract_itemsA | Take items out of the entity at x,y into your inventory: specific counts, or all=true (walks within reach). |
| set_recipeB | Set the recipe of the crafting machine at x,y (walks within reach). |
| rotate_entityB | Rotate the entity at x,y one step, or to a 16-way direction (walks within reach). |
| build_planA | Build many entities as ONE job: steps are placed in order (walking within build range, items from your inventory, normal placement rules), each optionally setting a recipe and inserting items. Failed steps are reported and skipped unless stop_on_error. auto_craft hand-crafts missing placeable items first. dry_run=true only checks the plan (items, recipes, placement, overlaps) without building. |
| build_blueprintA | Build a whole blueprint as ONE job, anchored so its top-left entity lands at (anchor_x, anchor_y): from an export string, or a carried blueprint by label. Up to 1000 entities; per-step failures are reported. |
| run_planA | Queue a sequence of actions (craft, insert, extract, mine, place, set_recipe, rotate, walk_to) as chained jobs. If one fails, the rest of the chain is cancelled. Waits for the last one up to wait_s. |
| deconstructA | Mine your force's own buildings back into your inventory (vanilla mining time): the nearest one at x,y, or all within area_radius (max 10 tiles, 50 buildings). |
| fightA | Fight visible enemies around a point with your equipped gun (walks into range, shoots, next target); anchored to the radius; retreats below flee_below health. |
| defend_areaA | Persistent job: guard an area — shoot enemies that come near, refill ammo turrets and repair structures from your inventory — until cancelled. Replaces your current jobs. |
| keep_fueledB | Persistent job: keep burner machines around a point fuelled from your inventory until cancelled. Replaces your current jobs. |
| job_statusA | Status of one of your jobs, or (without job_id) your running job, queue and recently finished jobs. |
| job_waitC | Wait up to timeout_s for one of your jobs to finish. |
| job_cancelA | Cancel one of your jobs, or all of them (all=true), stopping your character. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 44 tools
Most tools target clearly distinct resource+action pairs (mine vs deconstruct, insert_items vs extract_items, build_plan vs run_plan). A few overlaps exist, particularly status/look_around/check_inventory all reporting character state and read_blueprint/import_blueprint both decoding blueprints, but the descriptions provide enough distinction.
The majority use a readable verb_noun snake_case pattern, but there are notable deviations: status is a bare noun, job_cancel/job_status/job_wait put the object first, and production_stats is noun_noun. The style is still consistent enough to be readable, but not uniform.
44 tools is well above the 25+ threshold and feels heavy even for a complex game agent. Many tools are granular and individually useful, but the surface could likely be consolidated (e.g. unified job management or movement tools) without losing capability.
The tool set covers character state, movement, mining, building, blueprints, inventory, combat, trains, research, jobs, events, and factory analysis. Minor gaps exist—such as no dedicated manual repair tool or broader logistics/rail construction tools—but the core gameplay workflows are well supported.