Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BG3_DIVINENoPath to LSLib's Divine.exe. Discovered from PATH and common folders when omitted.
BG3_DATA_CACHENoOverrides the SQLite index cache directory. Defaults to %LOCALAPPDATA%\bg3-data-mcp\cache (Windows) or ~/.cache/bg3-data-mcp/cache (WSL).
UV_PROJECT_ENVIRONMENTNoDirectory for the uv-managed virtual environment (used e.g. under WSL to keep the environment on the Linux filesystem).

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
bg3_layersA

List data layers in load order with source timestamps and entry counts.

bg3_refreshA

Re-index layers whose sources changed. force: a layer name, or 'all', to rebuild regardless.

bg3_add_mod_layerB

Register a mod layer: an unpacked mod folder (containing Public/ and Mods/) or a .pak file. position: 1-based slot among mod layers (default: on top). The layer is indexed immediately.

bg3_remove_mod_layerB

Unregister a mod layer (base cannot be removed).

bg3_get_entryB

Resolve a stats entry (spell, status, passive, character, object, weapon, ...) through inheritance across the selected layers. Shows the using chain and, per field, the layer/source that set it.

bg3_searchB

Find stats entries whose name or any field contains text. type: SpellData, StatusData, PassiveData, Character, Object, Weapon, Armor, InterruptData... field: restrict to one field. defined_in: only entries that this layer itself defines or overrides (e.g. 'dnd55e' = what dnd55e adds).

bg3_referencesC

Everything that mentions token (entry name, status, passive, GUID...) in stats, templates, progressions and lists.

bg3_diffC

What layer changes about stats entry NAME compared with the layers below it.

bg3_locaC

Look up a localization handle (e.g. h1a950eaag...), or search localized text.

bg3_templateC

Resolve a root template (MapKey GUID or Name) through its ParentTemplateId chain.

bg3_progressionC

Progression nodes for a class/subclass (Name, e.g. 'Soulknife', or TableUUID), merged by node UUID so a higher layer's node replaces a lower one's.

bg3_staticB

Static game data by UUID or Name (highest layer wins): kind = ClassDescription (classes/subclasses, with ProgressionTableUUID), LevelMapSeries (e.g. SuperiorityDie, per-level values), ActionResourceDefinition (resources: MaxValue, ReplenishType), Feat. A partial key lists matches.

bg3_spell_listC

A spell/passive/skill list by UUID or Name (highest layer wins).

bg3_spell_visualsC

The visual/audio kit of a spell: effects, animations, sounds, icon - for reusing vanilla VFX.

bg3_similar_spellsB

Spells matching damage type / school / spell type (Target, Projectile, Shout, Zone...) / level / name keyword, with their visual kits - to borrow effects and animations for new spells.

bg3_effectC

Resolve an effect GUID: a MultiEffectInfo (the value of stats *Effect fields) with its component effect resources (names, bones, duration, looping, .lsfx file), or a single effect resource. Also lists the stats entries that use it.

bg3_search_effectsA

Find effects by what they're called (e.g. 'Necrotic', 'Impact_BodyFX', 'Radiant_Beam'): MultiEffectInfos whose name, or any component effect's name, matches. Returns the GUID to put in a stats *Effect field, what matched, and sample spells/statuses already using it.

bg3_se_statusA

Is the game running, which Script Extender log belongs to this run, and the latest game state.

bg3_se_evalA

Run Lua inside the RUNNING game via Script Extender and return its printed output plus the return value (JSON). context: 'server' (game logic, Osi.*, Ext.Stats) or 'client' (UI/visuals). delay: seconds to wait first (e.g. for a cast or boost to resolve). The test harness, once staged, is available as the global BG3T. This executes code in the user's live game session.

bg3_se_commandB

Send one Script Extender console line to the running game (e.g. '!apofeature Barbarian_PersistentRage') and return the log lines it produced within wait seconds (max 60).

bg3_se_logB

Tail the current game run's Script Extender runtime log, optionally only lines containing filter (e.g. '[Apotheosis]', 'error', 'FAILED').

bg3_se_live_entryB

Ground truth: compare a stats entry as the running game actually loaded it with the index's resolution for layers. Pick layers matching what's deployed. Shows each field as MATCH or DIFF.

bg3_se_hot_loadA

HOT-LOAD a mod layer into the RUNNING game without restarting: mirrors its stats .txt files as loose files under /Data/Public/BG3DataHot_/, loads them with Ext.Stats.LoadStatsFile(…, true) (overwriting existing entries), Syncs every entry to the client, and (loca=True) pushes its English strings. files: only these stats files (e.g. ['Passive.txt']). Progressions/lists/templates can't be hot-loaded (restart with a pak). Test-only: don't save the game while relying on hot-loaded entries. Clean up with bg3_se_hot_clean.

bg3_se_hot_cleanA

Remove the loose hot-load folders (Data/Public/BG3DataHot_*) from the game install. Entries already hot-loaded stay in the running session until restart.

bg3_se_reset_luaA

Reload Script Extender Lua (console reset): re-runs every loaded mod's Bootstrap scripts from its pak/loose files. Only affects mods that were loaded at game start.

bg3_environmentB

What this machine looks like to bg3-data: Windows or WSL, the discovered game install (Steam library, GOG or configured), game exe, Divine.exe, the Larian user folder (Mods, modsettings.lsx, Script Extender logs), Script Extender presence, detected mod managers (Vortex, BG3 Mod Manager, in-game) and what they mean for hand-deployed paks, and each mod layer's deploy/enable state.

bg3_deployA

Pack a mod layer (Mods/ + Public/, via Divine), deploy the pak to the user Mods folder (refused while the game runs; previous pak backed up) and enable it in the active profile's modsettings.lsx after its dependencies. Works for any mod; no per-mod scripts. Re-run after a mod manager rewrites the load order.

bg3_game_restartA

Kill the game, optionally deploy a mod layer (its layers.json deploy command, else the built-in bg3_deploy), relaunch (Steam -applaunch, or the game exe for GOG/other installs; --skip-launcher -continueGame loads the NEWEST save) and wait until a host character is loaded. Unsaved progress is lost.

bg3_level_upA

Grant the host exactly enough XP (from the layers' XPData) to reach levels more levels. The user then levels up in the UI, so every feature and spell is class-sourced; follow with bg3_level_check.

bg3_level_checkB

Compare the host with its class/subclass progressions up to its current level: passives added and removed, AddSpells lists (with the spell's source), ActionResource boosts, and this level's choices.

bg3_test_listC

Test cases a mod layer defines (TOML under /tests/bg3, or layers.json tests), validated against the index (spells, statuses, templates, aliases).

bg3_test_scriptC

Write the human test script (step-by-step reading script per level and case) to /docs/test-scripts/ and return it.

bg3_test_stageB

Set up one test case in the running game: preconditions (class level, spell learned through the class, not in combat), spawns, HP/status setup, host-first initiative, safety watch, event recorder. mode="script" cases are cast immediately. Then the user acts; finish with bg3_test_verify.

bg3_test_verifyB

Evaluate the staged case's expectations (before/after snapshots + recorded events), report PASS/FAIL per check with its fidelity, then remove every spawn, test boost and applied status.

bg3_test_runA

Run one auto/script case end to end: stage (real combat, host acts first), scripted cast, verify, cleanup. Effects come from recorded events; costs are checked against the spell's loaded UseCosts (a scripted cast never charges them). player-mode cases need bg3_test_stage + a hotbar cast instead.

bg3_test_run_levelB

Run every automated case for a level, one after another, and summarise: the cases assigned to build (see bg3_test_plan), or all of class_name's cases at that level. Lists the player-mode cases that still need a hotbar cast.

bg3_lint_statsB

Static stats lint for a mod layer, before the game ever loads it: enum values (Cooldown, StatsFunctorContext, RemoveEvents, SpellFlags, TickType...) and functor/condition/boost names that no other layer uses (the engine silently drops what it doesn't know), plus missing referenced entries (statuses, unlocked spells/interrupts, using, containers) and unknown action resources.

bg3_lint_progressionsB

Static progression checks for a mod layer: invalid node UUIDs (the game silently drops those nodes), selectors referencing lists no layer defines, and same table+level nodes from different layers (both load, so their choices/feats stack).

bg3_test_planB

The step-by-step plan for a test build ([[build]] in the suite TOML): for every level the exact level-up choices (subclass, which spells, feat), chosen so every spell a test needs is learned by its test level, plus the tests that run there. Written to /docs/test-scripts/plan-.md.

bg3_test_cleanupA

Remove every test spawn, boost (tag BG3Test) and applied status, and stop recording.

bg3_ingame_checkB

Compare EVERY stats entry a mod layer defines with what the running game loaded (the engine drops invalid values silently). layers = what's deployed (default: all).

bg3_toolkit_statusB

Where the Larian Toolkit expects this mod (Data/Projects, Mods, Public, Editor/Mods): present or missing, linked to the repo or a separate copy, file counts, and the meta.lsx version (mod.io readiness).

bg3_toolkit_checkB

Compare the mod's Toolkit editor copy (dest='toolkit': /Data/Editor/Mods/; 'repo': /Editor/Mods/) with an export of its game-ready files: missing/extra objects and differing fields per file. Run before publishing; 0 problems = both copies say the same.

bg3_toolkit_exportA

Generate the Toolkit editor copy (.stats for stats, .tbl for lists/progressions/resources/classes/ level maps/feats) from the mod's game-ready files. Existing editor UUIDs are kept. write=False is a dry run listing files, object counts and warnings; write=True writes them (dest 'toolkit' or 'repo'). Close the Toolkit first: it overwrites files it has open.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 44 tools

Disambiguation3/5

Many tools are clearly distinct by context (layer management vs. runtime Script Extender vs. toolkit vs. tests), but several pairs overlap: bg3_ingame_check/bg3_se_live_entry both compare indexed vs. loaded data, bg3_search/bg3_search_effects/bg3_references/bg3_static all search different facets, and bg3_get_entry/bg3_diff both resolve entries. Descriptions help, but with 44 tools an agent faces real misselection risk.

Naming Consistency4/5

All tools use the bg3_ prefix and snake_case, making them predictable and visually cohesive. However, the verb_noun pattern is not strict: many tools are noun-only (bg3_layers, bg3_environment, bg3_static, bg3_progression) while others use verbs (bg3_get_entry, bg3_search_effects), a minor deviation.

Tool Count2/5

At 44 tools, the surface is far above the typical well-scoped range of 3-15 and even beyond the 25+ threshold that the rubric treats as too many. Although BG3 modding is a complex domain, the sheer count—driven by many specialized test, runtime, and toolkit operations—creates a heavy cognitive load and higher likelihood of tool selection errors.

Completeness4/5

The surface covers a broad lifecycle: layer add/remove/list/refresh, stats and effect search/resolution, runtime Script Extender interaction, hot-loading, automated and scripted testing, linting, toolkit export/check, deployment, and environment discovery. Gaps are minor—for example, there is no direct stats-entry editing or file mutation tool, but the inspection/test/deploy focus appears intentional and workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues