Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SW_GAME_DIRNoStormworks install, for part definitions and workbench locations. Workshop tile mods are found through Steam.Found through your Steam libraries
SW_DESIGNS_DIRNoSaved design specs.%APPDATA%\stormworks-hull-mcp\designs
SW_TOOL_TIMEOUTNoSeconds a preview or save may run before the server stops it.300
SW_VEHICLES_DIRNoWhere vehicles are read and saved.%APPDATA%\Stormworks\data\vehicles
SW_DEFINITIONS_DIRNoPart definitions directly.<game>\rom\data\definitions

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
hull_design_guideA

Read first. Topics: full, workflow, units, spec, interior, archetypes, style, limits, staged, building, testing, smoothing. Focused topics avoid resending the entire spec reference.

get_runtime_statusB

Diagnose version, runtime paths, game definitions and timeout without writing files.

list_hull_presetsA

List built-in hull archetypes with a one-line description and main dimensions.

list_workbenchesA

Bench size keywords (S, M, L, XL, XXL, MAX) with their size in metres and the edit areas in the player's game (including workbench mods) that are at least that big. Set one as bench in a spec; preview summaries then say whether the design fits and by how much not.

get_hull_specB

Full resolved spec (every parameter) for a preset, or the defaults. Use as a starting point.

preview_hullA

Build a hull and return a preview image (3/4 above and below, front, side, top) plus stats.

spec: partial or full hull spec (see hull_design_guide); merged over the preset if given. preset: optional preset name to start from. design: a stored design (store_design / save_hull) to start from instead of a preset. patch: JSON-Patch ops applied last, e.g. [{"op": "replace", "path": "/superstructure/bridge/height", "value": 2.5}]. List items can be named instead of indexed. spec_path: a .json file holding a spec (or a stored design), read before spec and patch.

preview_interiorA

Cutaway of the interior: a section on the centreline plus a labelled deck plan for every room level, and a per-room report (clear size, floor width, doors with sill heights and floor steps, engines, warnings). Use after adding interior to a spec (see hull_design_guide, "Interior design"). Floors above the main deck are drawn cropped to their rooms. design/patch/spec_path: as in preview_hull.

deck_profileB

Deck height above the keel, the y a box gets when left out, and the deck half-beam, every step metres from the transom. Use it to place turrets and deckhouses on a sheered deck. Lengths are in spec units (real-world metres when the spec has a scale).

save_hullA

Save a hull into the Stormworks vehicles folder so it can be loaded at a workbench.

name: vehicle name shown in the game's Load menu. The spec is also stored as a design of the same name. overwrite: replace an earlier design saved by this tool under the same name. Vehicles not made by this tool are never overwritten. design/patch: as in preview_hull, e.g. save_hull(name="Iowa", design="Iowa").

store_designA

Keep a design spec on the server without writing a vehicle, so later calls can send only changes. Typical loop: store_design("Iowa", spec=...) once, then preview_hull(design="Iowa", patch=[...]) to try a change and store_design("Iowa", design="Iowa", patch=[...]) to keep it. Replaces any stored design of that name; save_hull(name, design=name) writes the vehicle when ready. spec_path: read the spec from a .json file instead of sending it. Stored designs are plain JSON files that every call re-reads, so editing one on disk takes effect at once.

list_designsC

Names of stored hull, land and imported drafts.

load_designD

Hull spec, or land/import draft metadata and revision. Use part tools to edit land/imports.

search_partsB

Search installed part definitions by name/id; returns actual sizes, mass and pagination.

get_part_definitionC

Installed footprint, attachment/sealing surfaces and relevant part settings.

get_part_orientationB

Explain local mounting/motion/function axes and solve their requested world directions. Example Fin Rudder targets: mount_normal=[0,0,1], span_axis=[0,1,0]. Road wheel targets should include axle_axis, wheel_reference_up and wheel_forward; right placements can require mirror. Returns effective rotation plus proper r/mirror for XML. Arrow signs still need game checks.

get_calibration_observationsB

Read recorded in-game checks for a part; expose stale evidence and contradictory reports.

complaintA

Report an encountered problem or improvement request; save local JSON and Markdown reports. Required: title and description. Include failing tool/arguments, expected vs actual behavior, error messages, steps, affected design/vehicle/definition and a suggested improvement if known. Categories: placement, rotation, smoothing, connections, definitions, performance, tool_error, usability, missing_feature, other. Severity: low, medium, high, blocker. Returns a report id and file paths; no external issue is published.

list_complaintsB

List locally recorded complaints newest first; filter by text, category or severity.

get_complaintB

Read a complaint's complete reproduction evidence and Markdown report by its id.

land_vehicle_guideC

Road vehicle workflow, installed parts, chassis spec, units, layout limits and game checks.

search_land_partsB

Installed components useful for land builds, with footprints and actual connection ports. Categories: wheels, tracks, lights, controls, propulsion, transmission, power, fuel, cooling, body, logic, utility. Use get_part_definition/get_part_orientation for details. Family filters are a convenience; search_parts exposes the full installed catalogue.

find_land_vehiclesB

Read the player's saves for wheel/track examples, including unnamed experiments. kind=wheeled/tracked/all. Counts only vehicle body components, not controller internals. Wheel-based boats/aircraft can match; this does not establish vehicle purpose or quality.

analyze_land_vehicleA

Analyze a saved v3 vehicle or draft: body-local axles, wheelbase, mounts and light axes. Sections: wheels, lights, controls, equipment, issues. All component rows are paginated. forward is a horizontal unit vector; otherwise infer each body's driver-seat facing, falling back to +z explicitly. Axle span measures mounting origins, not tyre-centre track. Multi-body references stay separate. Suspension/steering sweep and mesh edits need game checks.

create_land_vehicleA

Create a land draft: default utility_buggy, or preset=chassis for a custom bare layout. Read land_vehicle_guide for the spec. Dimensions/positions are game metres on the 0.25 m grid. Buggy includes bodywork, four suspension wheels, saddle, premade fuel tanks, engine, battery, radiator and actual lights. Parts must fit, mount and leave driver/service access. preset=humvee_4x4 has open custom-door bays, compact glass and enclosed chassis pipes. humvee_4x4 and utility_4x4 include radiator/fuel/air/exhaust/driveline pipes and typed links. Use query_connections/edit_connections/route_connections/preflight_vehicle to complete custom layouts. Extend through query_parts/edit_parts/preview_vehicle, then save_vehicle.

analyze_vehicleA

Read saved-vehicle examples, body groups, link coverage and rudder mounting/motion issues. Supports multi-body references without editing them. Observations are not game verification. Search rudder/propeller/engine/trans to focus evidence. Sections: parts, links, controllers, bodies, placement_issues, connection_candidates, open_transmission_ports. All are paginated.

suggest_hull_blocksB

Rank real block slope families by an outward x/y/z normal. Read the selection rules: the angle alone cannot choose pyramid vs inverse, location, or a watertight joint.

analyze_hullA

Measure actual hull material, floor gaps, and partial-face seams at z stations. x/stations are integer BLOCK coordinates. name reads a saved v3 vehicle (one body at a time); otherwise build spec/preset/design in the fixed build frame. Procedural reports include floor height above keel and drop from rim, so verify depth before saving. Imported saved vehicles use their original body-local frame; choose body_id explicitly when the largest structural body isn't the hull. source="backups" reads data/backups/vehicles, e.g. name="autosave9". This is read-only geometry, not a seal test.

import_vehicleB

Import an existing single-body version-3 vehicle into a new draft; never changes the source. Existing configured/wired parts are protected. Use query_parts/edit_parts and save_vehicle.

query_partsC

Parts and revision for precise editing. select: ids, name, definition or inclusive bounds [[min_x,min_y,min_z],[max_x,max_y,max_z]]. Coordinates are integer blocks (0.25 m), in the uncentred build frame for generated hulls/land drafts and original body-local frame for imports. Rows include scalar settings, proper rotation plus a local mirror bitmask, and the effective transform matrix. Partial multi-voxel selections are rejected; select an id to target the whole component.

edit_partsA

Atomic part edits; defaults to preview only. Pass the revision from query_parts. Ops: add(part/parts), fill(bounds,color), remove/replace/move/rotate/paint/copy/mirror/repeat. Selection ops need select={ids/bounds/name/definition}. move/copy/repeat use delta in blocks; repeat count is additional copies; rotate uses a local-to-world matrix or r string and pivot; mirror uses axis and plane. replace needs part; paint needs color. Added parts use definition, position in blocks, rotation, optional mirror (1=x, 2=y, 4=z), color, name and scalar settings. Placement rotation accepts an effective mirrored matrix; use that or proper rotation plus mirror. Prebuilt engines default to max_force_scale=1 (100%). commit=true keeps one undo step.

undo_editsC

Restore the previous committed edit batch. Keeps up to ten batches of undo history.

query_connectionsC

Installed/configured node indices, transmission surface indices, wires and draft revision. Wire endpoints: {part_id,port}; pipe endpoints: {part_id,surface_index}. Coordinates are uncentred integer blocks. Paginate components; links retain stable IDs for disconnect.

edit_connectionsA

Preview/commit typed control and electrical wires. Uses the query_connections revision. Ops: {op:'connect',from:{part_id,port},to:{part_id,port}} or {op:'disconnect',link_id}. Signal outputs connect to inputs; electricity is bidirectional. One driver per signal input. Power/fluid use route_connections. Original XML/settings remain lossless; commit has undo.

route_connectionsA

Preview/commit actual pipes between transmission faces, preserving access and structure. Each route: {from:{part_id,surface_index},to:{part_id,surface_index},bounds?:[[lo],[hi]], waypoints?:[[x,y,z],...],name?:str,pipe_style?:auto|exposed|enclosed,through_blocks?:[part_id,...]}. Bounds/waypoints use integer blocks. Routes minimize length, then bends. Default auto uses enclosed pipes for explicitly selected through_blocks; other cells use exposed pipes. through_blocks replaces only selected unconfigured/unlinked 01_block parts, retaining paint. All selected blocks must lie on the route (use waypoints if needed); removal restores them. Other structure and access are preserved; routes never join unrelated pipe networks. Clutch/gearbox ports may use several routes; create an explicit T-piece for a branch. Remove an added route with {op:'remove',route_id} from query_connections, then reroute.

preflight_vehicleB

Check engine fuel/air/exhaust/radiator paths, driveline, electrical power and controls. Reports configuration_checks (explicit engine power), gearbox_configuration_checks (saved off/on ratio indices, including reverse-off warnings) and wheel_direction_checks (drive arrows and steering signs for supported direct/inverting paths). Unknown logic stays unknown. Includes blocked transmission exits. Separates physical pipes from typed wires and keeps functional component circuits distinct. Connected geometry still needs in-game testing.

plan_vehicle_repairsA

Diagnose faults and test suggested edits/wires/pipes without changing the draft. Returns severity, affected IDs, explanations, concrete operations and manual-review reasons. Use the returned revision, plan_id and available finding IDs with repair_vehicle.

repair_vehicleB

Preview selected repairs with overlays and before/after preflight. commit=true applies the whole batch as one undo step. Revision/plan guards reject stale suggestions and conflicting repairs.

list_vehicle_assembliesB

Reusable controls, required ID bindings and gate definitions. Place any required gates using edit_parts, then bind queried IDs with apply_vehicle_assembly; geometry is not preset-specific.

apply_vehicle_assemblyA

Configure/wire reusable controls using explicit current part IDs. Existing target drivers are replaced atomically. Clutch needs its own gate, separate from the idle throttle gate. Starter is manual/hold; idle is open-loop, and reverse must be selected while stopped. Preview includes diagnostics. commit=true creates one undo step; tune behavior in game.

preview_vehicle_diagnosticsB

Show red fault parts, amber blocked exits and blue wheel/steering arrows over geometry. Repair and assembly previews additionally show proposed green wires/pipes. Uses draft block coordinates.

prepare_vehicle_validationC

Export a separate test vehicle and create a seven-check in-game checklist tied to its exact XML SHA-256 and draft revision. Starts pending; topology never counts as game evidence.

get_vehicle_validationB

Read game-test evidence and report whether the export bytes and draft revision still match.

record_vehicle_validationA

Record human-observed pass/fail/skipped results with evidence and measurements. Refuses a changed export or mismatched hash. All seven checks need pass evidence for a passed run.

preview_vehicleA

Preview a draft using installed meshes. yaw/pitch/zoom/focus gives a close-up. layer=all/components/structure; components hides bodywork to inspect seats/tanks/powertrain. Paint and wheel neutral poses are approximate; the image is not an in-game screenshot.

save_vehicleC

Save any draft. Imported originals are never overwritten, even with overwrite=true.

check_sealA

Trace finished geometry from interior to outside: sealed, leaking or indeterminate. Generated drafts choose room/hull seeds automatically. Imported drafts require seeds: [[x,y,z],...] or [{name,position:[x,y,z]}], in integer blocks in their original body frame. door_state=closed/open models supported doors. Returns connected compartments and a highlighted escape path. Unsupported nearby sealing geometry prevents a confident pass.

list_game_vehiclesC

Vehicles in the player's Stormworks vehicles folder, optionally filtered by a substring.

preview_game_vehicleA

Render any vehicle from the player's vehicles folder, e.g. to study their existing boats.

Uses installed component meshes, with reported footprint fallbacks. source=workshop reads an installed numeric item ID. For articulated vehicles choose body_id; by default show the largest body alone, without pretending unrelated local frames line up.

inspect_viewA

Render one large view of a hull design or saved vehicle from any angle, like a camera you can point. Use it to check details the fixed previews hide.

name: a vehicle in the player's vehicles folder, or pass spec/preset/design(+patch). yaw: 0 = side view with bow to the right, 90 = from the bow, 180 = other side, 270 = stern. pitch: degrees above (+) or below (-) the horizon; -30 shows the hull bottom. zoom: 1 = whole vehicle, 2-6 = close-up. focus: [fx, fy, fz] fractions of the bounding box to centre on (x across, y up, z stern to bow), e.g. [0.5, 0.3, 0.9] = low on the bow. highlight: a superstructure box name (designs only): painted magenta and labelled, and its position is reported in spec units and as game-metre heights above the keel. Views at pitch 0 or +-90 get metre rulers in spec units (z from the transom, y from the keel, x from the centreline).

open_in_viewerC

Open a vehicle in the interactive 3D viewer in the player's web browser.

name: saved vehicle or installed numeric workshop item (source=workshop). design supports hull/land/imported drafts. Uses installed component meshes, with explicit fallbacks. For articulated references choose body_id; otherwise shows the largest body alone.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.9/5.0

Scored across 50 tools

Disambiguation3/5

Several tool clusters overlap: analyze_vehicle vs analyze_land_vehicle vs analyze_hull, preview_vehicle vs preview_game_vehicle vs inspect_view vs open_in_viewer, and search_parts vs search_land_parts vs query_parts. The detailed descriptions clarify contexts, but an agent could still misselect within these families, especially for preview and analysis tasks.

Naming Consistency4/5

Most tools follow a snake_case verb_noun pattern (list_*, get_*, query_*, edit_*, preview_*, save_*). A few deviate by using noun phrases or unusual forms (complaint, deck_profile, hull_design_guide, land_vehicle_guide, open_in_viewer), but the overall convention is readable and predictable.

Tool Count2/5

50 tools is heavy for a single MCP server, even for a complex domain like Stormworks vehicle design. Many tools could be consolidated or split into sub-servers (e.g., hull design, land design, part editing, validation, previews). The count exceeds the practical sweet spot and increases selection burden.

Completeness4/5

The surface covers hull and land vehicle design, part editing, connection routing, validation lifecycle, previews, and complaint reporting very thoroughly. Minor gaps exist such as no explicit delete/rename design tool and no aircraft-specific design guide, but core workflows are fully supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues