Skip to content

Releases: clankercode/tm-control-mcp

v0.4.0

Choose a tag to compare

@XertroV XertroV released this 16 Aug 07:04

tm-control-mcp v0.4.0

Install

  • Openplanet → install the .op asset below, or folder-plugin per README
  • Requires MLHook + MLFeedRaceData (Editor++ optional; E++ tools live in tm-mcp-pack-epp)

Highlights

  • TakeScreenshot now reports the captured file. Waits for the native viewport capture to land and returns fullName (game-side path from Viewport.ScreenShotFullName), sizeBytes, and detected — no more guessing which ScreenShotNN.jpg is yours.
  • New capture options:
    • hideOverlay: true — clean shots without HUD/Manialink overlays (native DisableOverlayRender, restored right after).
    • forceRes: true + width/height — capture at a forced resolution (verified: 3840×2160 and 2560×1440 files come out at exactly the requested size), restored after.
    • waitMs (default 5000; noWait: true / 0 for fire-and-forget) with timedOut on miss instead of a hard error.
  • format is validated (jpg | webp | tga | dds) — unknown formats now return INVALID_INPUT instead of silently falling back to jpg.
  • Crash-prone native capture paths stay unexposed (360° panoramas, tiled supersampling, alpha/pixel-output switching) — the tool only drives the same capture queue the in-game screenshot key uses. New screenshots guide documents the safe surface and the danger zones (GetGuide {"topic":"screenshots"}).
  • tools/call.py scales its socket timeout to your waitMs and still adds Linux-side detectedScreenshot.linuxPath detection.

Artifacts

  • tm-control-mcp-0.4.0.op — Openplanet plugin package (no DEV defines)

Security

  • Localhost JSON socket, no auth — see SECURITY.md
  • Keep Socket Host at 127.0.0.1

Full changelog

See CHANGELOG.md entry for 0.4.0

v0.3.0

Choose a tag to compare

@XertroV XertroV released this 14 Aug 16:10

tm-control-mcp v0.3.0

Breaking: E++ tools moved to tm-mcp-pack-epp

All Editor++ tools now live in a separate tool pack plugin — tm-control-mcp no longer depends on Editor++ at all.

  • Freeblock/item placement (PlaceBlockViaEditorPlusPlus, …), the named-macroblock suite, tag provenance (SetAgentTag/RemoveByTag), inventory control, ControlEditMode, ControlItemEditor, macroblock inspection, E++ camera focus
  • Old builtin names still dispatch but return a structured moved_to_pack error naming the pack, so agents can self-correct
  • Install tm-mcp-pack-epp (depends on tm-control-mcp + Editor++) and call tm-mcp-pack-epp.<Tool>

Highlights

  • Tool packs: any plugin can register MCP tools via TmMcp::RegisterToolPack(ToolPackBuilder) — packId-prefixed names, incremental schemas, builtin ListToolPacks. See docs/tool-packs.md.
  • VehicleState/Camera tools: GetVehicleState, ListVehicleVis, GetVehicleVis (by entityId/name/login), GetRenderCamera, ProjectWorldToScreen, SetEditorOrbitalTarget (optional deps)
  • Socket host/port/enable apply live; Settings tab with safe port-apply (no more mid-edit rebind crash)
  • Request payloads trace to plugin storage (request-trace.log) instead of flooding Openplanet.log; one-line tool start/done traces remain
  • ControlPlugin RemoteBuild parity: load/unload/reload + getLogs

Install

  • Requires MLHook + MLFeedRaceData; optional VehicleState, Camera; E++ tools via tm-mcp-pack-epp

Artifacts

  • tm-control-mcp-0.3.0.op — no DEV defines

Security

  • Localhost JSON socket (127.0.0.1:30006), no auth — see SECURITY.md

Full changelog

See CHANGELOG.md entry for 0.3.0.

v0.2.0

Choose a tag to compare

@XertroV XertroV released this 11 Aug 23:30

tm-control-mcp v0.2.0

First tagged public release of the Openplanet localhost JSON bridge for Trackmania editor/menu control (AI agents + scripts).

Install

  1. Requires Editor++ and MLHook
  2. Install the attached tm-control-mcp-0.2.0.op via Openplanet, or use a folder plugin per README
  3. Default socket: 127.0.0.1:30006 — localhost only, no auth (SECURITY.md)
python3 tools/call.py status
python3 tools/call.py --until-ready editor GetMode

Highlights

  • 100 tools in release builds (editor, menu OnAction automation, free placement, named macroblocks, readiness/tags, plugin settings, …)
  • DEV/RE tools gated — DevSafeRead, fuzz, pointer dumps, etc. only with ./build.sh dev (#if DEV); not in this .op
  • Agent ergonomics: GetReadiness / WaitUntil, provenance tags + RemoveByTag, AssertPlacement, durable named-MB JSON
  • Menu: CreateMapViaMenu, ClickMenuButton (never TriggerPageAction)
  • Openplanet Meta:: ListPlugins / ControlPlugin / settings get-set
  • ControlMapObjectives (clones / laps via Editor++)
  • Live smoke recipe: python3 tools/smoke_tag_cleanup.py
  • Script timeout 15s; status reports live plugin version

Artifacts

  • tm-control-mcp-0.2.0.op — Openplanet package (no DEV defines)

Security

Localhost JSON control socket with no authentication. Keep Socket Host at 127.0.0.1. Full notes: SECURITY.md.

Full changelog

See CHANGELOG.md entry for 0.2.0.

Verify (maintainers)

TM_PLUGIN_SKIP_LSP=1 ./build.sh release-check   # must compile without DEV
python3 -m pytest tests/test_call_wait.py -q
python3 tools/smoke_tag_cleanup.py              # game up