TrimbleX9-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCANNER_BASE | No | API base URL. Default http://192.168.42.1:34567/api/v1 (the instrument over its USB network link; use its WiFi-AP address otherwise). | http://192.168.42.1:34567/api/v1 |
| SCANNER_ALLOW_ACTUATION | No | Set to 1 to enable the actuating/destructive tools. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| scanner_statusA | Get the instrument's current status: battery, AC state, leveling, on-board storage, IMU, laser-pointer, WiFi config (passphrase masked), and the active error list. |
| scanner_projectsA | List all projects on the instrument (id, projectName, projectUUID, nextProjectScanID). |
| scanner_scansA | List all scans as compact records (id, scanUUID, scanMode, points, file path, and the project folder the scan belongs to). Ids are list positions and change when scans are deleted; scanUUID is stable. |
| scanner_scan_modesA | List the available scan modes (the density/range/time menu): mode name, range (m), point count, file size, scan time (s), spacing, and rate. Use these names when starting a scan. |
| scanner_errorsA | Get the instrument's current error list (type, errorLevel, description). |
| scanner_tasksA | List running or queued tasks (e.g. a scan in progress) with their state and percent complete (0-100). An empty list means the instrument is idle. |
| scanner_wait_for_scanA | Wait until no task is running (use after scanner_launch_scan), polling the
task list every |
| scanner_scanfile_infoB | Get metadata for one point-cloud file: file path, size, point count, and whether it has been downloaded. |
| scanner_download_scanfileA | Download a scan's point-cloud file into the server's download directory
(SCANNER_DOWNLOAD_DIR). |
| scanner_download_previewB | Download a scan's panoramic preview JPEG into the server's download directory (default name 'scan--preview.jpg'); same rules as scanner_download_scanfile. |
| scanner_preview_to_anglesA | Convert a box drawn on a scan's preview JPEG into instrument angles for
scanner_launch_area_scan. Both files must already be in the download
directory (scanner_download_scanfile + scanner_download_preview of the same
scan, taken from the station the instrument is still standing on).
(x0, y0)-(x1, y1) are preview pixel corners, y down; if x1 < x0 the box
wraps across the panorama seam. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools are clearly separable, but several pairs overlap: scanner_status already returns the active error list that scanner_errors returns separately, scanner_scans records already include points and file path that scanner_scanfile_info extends, and scanner_wait_for_scan is a polling wrapper around scanner_tasks. Descriptions mitigate these overlaps, but an agent still has to choose between near-duplicates.
All tools share a uniform snake_case 'scanner_' prefix, which makes the set very readable as a family. The only minor deviation is that some tools are bare noun getters (scanner_status, scanner_projects, scanner_errors) while others use verb phrases (scanner_download_scanfile, scanner_wait_for_scan, scanner_preview_to_angles).
At 11 tools the set is well-scoped for an instrument-control server: inspection (status, projects, scans, modes, errors, tasks), acquisition helpers (wait_for_scan, file info, two downloads), and one geometry converter each earn their place. Nothing feels padded or redundant by count.
Descriptions repeatedly reference scanner_launch_scan and scanner_launch_area_scan, but neither tool is present, so scanner_preview_to_angles and scanner_wait_for_scan point at operations the agent cannot perform — a severe dead end for the core workflow of actually starting a scan. There are also no create/delete operations for projects or scans, only listings.