BeamNG MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| capabilities_getA | Return supported tiers, connection state, safety gates, and available tool names. |
| simulator_statusA | Return BeamNGpy connection and BeamNG.tech feature-tier status. |
| simulator_connectA | Connect to BeamNG, optionally launching the configured installation. |
| simulator_disconnectA | Stop autonomous control and disconnect without forcing the game process to quit. |
| simulation_controlC | Pause, resume, step, or change deterministic simulation timing. |
| environment_getA | Read gravity and time-of-day state. |
| environment_setC | Set gravity, time-of-day playback, and/or a weather preset. |
| traffic_controlC | Spawn, stop, or reset simulator traffic. |
| scenario_listA | List available BeamNG scenarios, optionally within one level. |
| scenario_loadA | Load an existing scenario by level and scenario name. |
| scenario_createC | Create surface-relative scenario files; replacement needs two explicit flags. |
| scenario_controlC | Start, restart, or stop the loaded scenario. |
| vehicle_listA | List vehicles and their current kinematic state. |
| vehicle_stateB | Read one vehicle's position, velocity, direction, and speed. |
| vehicle_spawnC | Spawn at measured surface plus model-origin clearance and connect. |
| vehicle_removeA | Despawn a vehicle; confirm=true is required. |
| vehicle_controlC | Apply clamped vehicle inputs with ADAS-safe or explicit direct arbitration. |
| vehicle_teleportC | Teleport a vehicle to a position and optional quaternion rotation. |
| vehicle_ai_configureC | Disable or stop standalone native AI; moving modes require autonomy_start. |
| sensor_attachC | Attach a camera, lidar, radar, ultrasonic, GPS, IMU, or vehicle-state sensor. |
| sensor_pollB | Poll a sensor; large arrays and images are saved as bounded local artifacts. |
| sensor_removeC | Remove an attached sensor and release shared memory. |
| map_road_networkC | Read a bounded slice of the current map road network. |
| map_road_edgesA | Read left, middle, and right edge points for one road. |
| map_object_listC | List allowlisted live scene objects through the GELua bridge. |
| map_object_getA | Read one live scene object by name or numeric ID. |
| map_object_createC | Create an allowlisted live scene object without saving the level. |
| map_object_updateB | Update an allowlisted live scene object's transform or safe fields. |
| map_object_deleteA | Delete a live scene object; confirm=true is required. |
| map_trigger_createB | Create a disabled, ephemeral box-trigger draft with bridge-event actions only. |
| map_trigger_getA | Read one bridge-owned trigger by its opaque handle. |
| map_trigger_updateB | Update a trigger draft or explicitly enable/disable it. |
| map_trigger_listC | List a bounded set of bridge-owned ephemeral triggers. |
| map_trigger_eventsB | Page sanitized bridge events for one currently owned trigger handle. |
| map_trigger_deleteA | Delete a bridge-owned trigger; confirm=true is required. |
| map_saveC | Request an editor save behind both gates; BeamNG 0.38 cannot verify durability. |
| lua_bridge_statusA | Read bridge status; probe=true attempts an authenticated loopback connection. |
| lua_extension_reloadC | Reload an extension from the Lua bridge's own strict allowlist. |
| mod_scaffoldB | Create a new path-confined mod workspace with a manifest and type-specific roots. |
| mod_file_listB | List mod workspace files with sizes and SHA-256 revisions. |
| mod_file_readA | Read one UTF-8 mod file and return its SHA-256 for optimistic writes. |
| mod_file_writeB | Atomically write a UTF-8 mod file, optionally requiring an expected SHA-256. |
| softbody_handoff_createC | Create an expiring Blender export slot with a reviewed, exact-coordinate runner. |
| softbody_handoff_validateB | Validate staged DAE hashes, axes, bounds, vertices, topology, refs, and base evidence. |
| softbody_mod_buildC | Compile and transactionally assemble one validated Blender handoff as a JBeam prop. |
| softbody_mod_validateB | Recompile and hash-check an assembled DAE/JBeam/material/provenance bundle. |
| mod_validateB | Validate paths, sizes, manifests, JSON, symlinks, and risky Lua patterns. |
| mod_packB | Build a correctly rooted BeamNG zip after validation. |
| mod_installB | Install a packed mod into the configured user folder; confirmation is mandatory. |
| mod_test_startC | Start static validate/pack checks; optional install does not execute the mod. |
| job_getA | Read one job's status, current stage, cancellability, result, and error. |
| job_listA | List recent jobs with their current stages and cancellability. |
| job_cancelA | Cancel cooperative work; non-cancellable stages return an actionable error. |
| autonomy_startC | Start native AI, vision lane keeping, or hybrid simulated autonomous driving. |
| autonomy_stopA | Stop autonomous driving and apply full braking. |
| autonomy_statusA | Read perception rate, latency, controls, watchdog, and emergency state. |
| emergency_stopB | Immediately brake through every connected control path; safe and idempotent. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| inspect_current_scene | |
| build_and_test_mod | |
| build_softbody_mod | |
| cautious_autonomous_run |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| status_resource | |
| vehicles_resource | |
| autonomy_resource | |
| softbody_contract_resource | Return versioned authoring schemas and explicitly non-authoritative presets. |
TDQS
Scored across 57 tools
Each tool targets a distinct operation (e.g., spawn vs. remove, attach vs. poll, scenario load vs. create). Domain prefixes (simulator_, vehicle_, map_, etc.) further reduce ambiguity, and even overlapping areas like AI control are separated into vehicle_ai_configure and autonomy_start/stop with clear dependency documentation.
Tool names follow a consistent snake_case pattern with domain prefix followed by a verb or verb_noun (e.g., vehicle_spawn, map_object_list, autonomy_start). The convention is uniform across all 57 tools, with predictable verbs like get, set, list, create, update, delete.
57 tools is far beyond the typical well-scoped range of 3–15 and even beyond the 'too many' threshold of 25+. Even for a complex simulation server, this many tools imposes a significant cognitive load and suggests poor modularization or inclusion of too many subdomains.
The tool surface comprehensively covers the BeamNG simulation ecosystem: connection, simulation control, environment, traffic, scenarios, vehicles, sensors, map objects and triggers, mod building and installation, job management, and autonomous driving. Essential operations (CRUD for vehicles, sensors, map objects; lifecycle for mods) are present, with no obvious gaps in the stated purpose.