Skip to main content

Weapon Lab

An MCP server that finds and fixes first-person weapon bugs behind a gate: hands off the gun, a magazine crooked in its well, a blade held wrong, arms covering the screen.

Each bug becomes a case: a metric, a weapon, an action and a pass rule. Your game's own probe measures the weapons. The Gate passes a change only when its target cases pass and nothing else got worse. Fix each kind of bug once, then check every weapon with it.

Weapon Lab never runs your game itself. You write a small probe for your engine that follows the probe contract: a job file in, a rows file out. Everything else works on what the probe writes back.

What it does

Group Tools What for
Gate gate_run, gate_verdict, gate_propose, gate_approve, gate_set_baseline, gate_cases, ... Keeps the bugs as cases, measures, compares against a baseline, judges a change, records a person's approval.
Probe probe_run, probe_plan, probe_status Starts your game's probe. Tries a fix before it is written: tuned fields, staged assets, screenshots, parts dumps.
Rig Lab rig_pieces, rig_facts, rig_align, rig_part_line, rig_fist Reads the posed weapon from a parts dump: its pieces, real-world facts (the magazine behind the barrel), a magazine's line into its well, a hilt in the fist.
Motion Lab motion_roll, motion_roll_profile, motion_roll_set, motion_track, motion_render Rebuilds clips in Blender: turns a hand about its forearm inside the forearm's range, puts a sliding part back on its axis.
Specs spec_list, spec_read, spec_validate, spec_write One file a weapon: marks (grip, support), anchors (pieces to find), facts, limits.
Contract contract_check Checks a probe's job, rows or parts dump.

Try it on the demo

The demo is a toy game with two planted bugs and a probe in about 150 lines. It needs no engine.

pip install -e .
cd examples/demo
weaponlab gate run probe,rig

(python -m weaponlab works the same when pip's scripts folder is not on your PATH.)

The rifle's left hand misses its handguard by 3.75 cm. The knife's hilt lies 90 degrees across the fist. tests/test_demo.py walks the whole loop: measure, find the fix, try it by tune, judge it.

Use it in your game

  1. weaponlab init in your project. It writes weaponlab.json and empty data files.
  2. Write your probe from the contract, starting from examples/demo/probe/demo_probe.py. Set its command in weaponlab.json.
  3. List your weapons in weaponlab/data/weapons.json and their actions in actions.json.
  4. Add a case for each bug you know. Measure everything once and set the baseline.
  5. Fix through the loop: try by tune or staging, look at the screenshots, propose, approve, import.

Check your probe on its own with weaponlab contract job|rows|parts <file>.

Add it to an MCP client

{"mcpServers": {"weaponlab": {"command": "weaponlab-mcp", "env": {"WEAPONLAB_PROJECT": "C:/path/to/your/game"}}}}
Setting Meaning
WEAPONLAB_PROJECT The project folder with weaponlab.json. The current folder by default.
WEAPONLAB_BLENDER Blender, for Motion Lab. Found on the PATH or in the usual install folders otherwise.

Requirements

  • Python 3.10 or later.
  • Blender 4.4 or later for Motion Lab and renders. Nothing else needs it.
  • Hand bones named as Unreal's mannequin names them (hand_r, index_01_r, lowerarm_r) for the fist measure and the forearm roll.

Where it came from

Weapon Lab is the general part of the tools built for ToangTown, an Unreal 5.8 game with 46 weapons. Its first probe is ToangTown's. The contract's lessons come from that probe. Pose Lab (poselab-mcp) answers the body's side: clipping, the view, a grip solver. The Gate can use it as a provider.

License

MIT

Metadata

Release files for weaponlab-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for weaponlab-mcp 0.1.0
File Size Uploaded
weaponlab_mcp-0.1.0.tar.gz 44.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for weaponlab-mcp 0.1.0
File Interpreter ABI Platform
weaponlab_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 83.9 kB

Release files / weaponlab_mcp-0.1.0.tar.gz

Download URL weaponlab_mcp-0.1.0.tar.gz
Size 44.0 kB
Tags Source
SHA-256 checksum
How to use checksums
986f7705256212fdfb405984bc0abb17dc840f4b6594735bc26d5682a366a66d
BLAKE2b-256 checksum
How to use checksums
3bb875a65fadf8ea6bbf6103c45fcbbdd97513029fbeba434412f7658cbd9508
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / weaponlab_mcp-0.1.0-py3-none-any.whl

Download URL weaponlab_mcp-0.1.0-py3-none-any.whl
Size 39.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8e28f1f3431fa01c2c2886656d46795881686c85bd5b1fb2e6c0be8ec7f741c
BLAKE2b-256 checksum
How to use checksums
cf6db5f3c358e68cc1527d139c80e8cdc40db34e9da382a1d9cb2ecb15b8f72d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page