Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MIB2C_PORTNoWebSocket port on 127.0.0.1 (also settable with the option --port <n>). Enter the same port in the app's Claude menu.47391
MIB2C_ORIGINSNoMore page origins allowed to connect, comma-separated; `*` matches any part (e.g. https://mib2c.example.home). Always allowed: https://mib2c.pqisa.eu, http://localhost:*, http://127.0.0.1:*, https://*.ddev.site.

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 drives the MIB2 Configurator web app (https://mib2c.pqisa.eu) open in the user's browser: a tool for VW MIB2 head unit skins (ambient light, climate, car status, parking, energy flow, tyre and traffic sign screens).

  • Call status first. If the page isn't connected, tell the user how to connect it (the status result says how).

  • The user must open their skins folder in the app themselves; the browser doesn't let anything else pick it.

  • get_state says what is shown; navigate changes it; screenshot shows it (labels: true names every point and touch area; region + zoom for a close look).

  • Ambient light, climate, car status: get_scene_data lists the zone file; move_items, set_points, align_items, distribute_items, reset_items, copy_points (to the other side or car, mirrored) edit it. Parking and energy flow: get_parking_data / move_parking, get_energy_data / move_energy. undo / redo / revert_file step back.

  • Images: list_images, export_image (to a PNG file to edit elsewhere), replace_image / replace_images (from files), revert_image.

  • Preview settings (set_preview, set_parking_preview, set_energy_preview) only change what is drawn. Edits stay unsaved until save; get_changes lists them and check_skin checks them. Don't save unless the user asked for it.

  • The user sees everything you do in the app's Claude log.

  • Car names marked unconfirmed, and point or area names marked guessed, are the app's best guesses.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
statusA

Whether the MIB2 Configurator page is connected, and how the user connects it if not. Call this first.

get_stateA

What the app shows now: the open skin and its head unit, the theme skin, the page, View / Edit mode, the car and driving side, unsaved changes (replaced images, moved positions per data file) and undo availability.

list_carsC

The cars a page has pictures for (car codes such as 0203070200 = VW Golf 7 estate, with names where known), each with its driving sides on the interior pages and whether it has unsaved changes.

navigateB

Changes what the app shows: page (ambient light, climate, car status, parking, energy flow, tyres, traffic signs, all images), car, driving side, View or Edit mode, theme skin, the head unit UI around the picture (uiElements), and on the interior pages the screen view (frame). Returns the new state.

screenshotA

A picture of the page's screen as the app draws it (the head unit's screen, or the picture with its lights, vents, parts and zone outlines). labels draws point ids and touch area outlines with their names (interior pages). region + zoom shows a part up close. pictureBox in the answer says where the picture sits in the screenshot (x, y, pixels per picture pixel). With file, the PNG is written there instead of shown.

get_scene_dataA

The ambient light, climate or car status page's zone file for the shown car and side: touch areas (corners), feature / vent / part points with names, positions (and the saved ones when moved), their images and sizes, what the preview shows, screen views, undo state. Coordinates are picture pixels from the top-left; a point is its image's top-left corner.

move_itemsA

Moves zone file items on the interior page shown (ambient light, climate, car status), kept inside the picture; one undo step. Either dx / dy (move all items together) or x / y (place one item: a point by its top-left, a touch area by its bounding box top-left, a corner exactly). Unsaved until save.

align_itemsB

Lines up two or more items' boxes on one edge or centre line of the box around them all (as the app's inspector does); one undo step.

distribute_itemsB

Spreads three or more items so the gaps between their boxes are equal; the first and last stay. One undo step.

set_pointsB

Puts many points, touch areas or corners at exact positions in one step (one undo step), on the interior page shown. Picture pixels; kept inside the picture.

reset_itemsA

Puts the given points or touch areas back where the saved file has them (one undo step). A corner puts its whole touch area back.

revert_fileA

Puts a whole data file back as saved (one undo step, so undo brings the edits back): the zone file shown, or the file named (a path from get_state's unsaved files: .gca, carstatus.car, .ops, .efl).

copy_pointsA

Copies the interior page's point and touch area positions from one car / side to another, in one undo step in the target file: points by id, touch areas by order. Between driving sides they are mirrored (by default); to a picture of another size they are scaled (by default). Default: from the car and side shown, to the other side of the same car.

get_changesA

Everything that save would write: each replaced image (with the file it came from) and every moved point, touch area, parking or energy flow position, with its saved and new place.

check_skinA

Checks the edited zone files (and the one shown): whether the head unit loads each file, and points or touch areas that reach outside their picture or are too small to press. Errors would break the screen on the unit; warnings are worth a look.

get_parking_dataA

The parking page's layout file (config_mini.ops / config.ops) for the car shown: sectors with their bands, background pieces and car image positions (with saved places when moved), the sensors by group, and the preview. Open the parking page first.

move_parkingA

Moves parking sectors (all their bands), background pieces or car image positions by dx / dy (stored left-half pixels; the right half follows mirrored). One undo step. Unsaved until save.

set_parking_previewC

What the car reports on the parking page (nothing is written): layout, 360° side sensors, rear traffic alert, trailer, obstacles per sensor, faults per group, guide lines and steering, the area view side.

get_energy_dataA

The energy flow page's file (config_BEV.efl / config_PHEV.efl) for the car shown: car picture, features (battery, engine, e-motor) and flows (tracks, masks, wheel rings) with names and saved places when moved, and the preview. Open the energy flow page first.

move_energyA

Moves the car picture, features or flows of the energy flow file by dx / dy (one undo step). A track and its mask usually move together. Unsaved until save.

set_energy_previewC

What the car reports on the energy flow page (nothing is written): kind (BEV / PHEV), situation, parts on or off, battery flow and charge, movement.

undoA

Undoes one position edit: in the zone file shown, or in the data file named (a path from get_state's unsaved files: .gca, carstatus.car, parking .ops, energy flow .efl).

redoB

Redoes one position edit: in the zone file shown, or in the data file named (a path from get_state's unsaved files: .gca, carstatus.car, parking .ops, energy flow .efl).

get_previewB

What the car reports in the preview: ambient light colour, brightness and mode; climate preset, fan, temperatures, air (cooling / venting / heating) and automatic distribution; car status messages, readiness and start-stop; lights or vents switched off.

set_previewA

Sets what the car reports in the preview (nothing is written to the skin): ambient light, climate, car status, and which ambient lights or climate vents are on (page shown). Take a screenshot after to see it.

find_vehicle_messagesB

The head unit's 453 vehicle messages (car status): each lights one part in a state (info, warning, stop). Search by text, part id or state.

list_imagesA

Images in the skin's images.mcf whose path contains the query, with their index, every path that uses them (an image can be shared), and any unsaved replacement.

get_imageA

One image from the skin as PNG: as stored ("current") or its unsaved replacement ("new", the default when there is one).

export_imageA

Writes one image of the skin to a PNG file on this computer (as stored, or its unsaved replacement): to edit it in another tool, then bring it back with replace_image.

replace_imagesA

Replaces several images at once from picture files on this computer, each matched by its file name to the image of that name whose path contains scope (such as "0204080200/GenericCarAdjuster/AmbianceLight/" or a car code). A file that matches no image, or several different ones, is skipped and listed; an image shared by several cars counts once. Unsaved until save.

replace_imageA

Replaces one image of the skin with a picture file on this computer (PNG, JPEG or WebP), stored in the image's format. It must have the image's size (only ambient feature images may change size) unless fit is "fit", "fill" or "stretch". A shared image changes everywhere it is used. Unsaved until save; revert_image takes it back.

revert_imageC

Takes back an image's unsaved replacement.

saveA

Saves every unsaved change into the skin folder (or downloads the files where the browser can't write to it). Unless the user let Claude save without asking (in the app's Claude menu), the app first shows them the list of changes and waits for them to confirm, so this can take a while; it reports whether they saved or cancelled. A .backup of each file is kept before its first save. Run check_skin first.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 33 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action, and the three parallel editors (zone / parking / energy) are separated by domain-specific verbs (move_items vs move_parking vs move_energy) plus the 'open that page first' hints. The main soft spots are the family of 'take it back' tools (undo, redo, revert_file, revert_image, reset_items) whose boundaries are subtle, and the many get_*_data / set_*_preview pairs, which an agent can still resolve from descriptions.

Naming Consistency4/5

The overwhelming majority follow a snake_case verb_noun pattern (get_state, list_cars, move_items, replace_images, set_energy_preview). Deviations are minor but present: bare noun-only names like 'status', plus verb-less actions 'save', 'screenshot', 'undo' and 'redo', and inconsistent noun forms across the parallel tools (move_parking / move_energy vs move_items).

Tool Count3/5

At 33 tools this is heavy, driven by three near-parallel data-file editors (get/move/set_preview ×3) plus a separate image pipeline, preview simulation, validation and undo stack. Each tool is defensible for this complex skin-configurator domain, but the surface is on the large side and the repetition inflates it.

Completeness4/5

Lifecycle coverage is strong: connect, inspect state/scene/changes, edit positions, save with backups, undo/redo, validate with check_skin, inspect/replace/export images, and simulate previews. Notable gaps are creation/deletion of items — there is no tool to add a new point, touch area, flow or sector, only to move or reset existing ones — and no way to create a new skin or car entry.