PIX4Dmatic MCP
Local MCP server for controlling PIX4Dmatic on Windows through GUI automation.
This first version implements the MVP observation and control layer:
- connect to an already running PIX4Dmatic process
- launch PIX4Dmatic when needed
- focus the PIX4Dmatic window
- capture a screenshot
- send hotkeys or plain text
- click visible UI text or menu-like paths
- inspect the UI Automation tree
- open an existing project file
- start processing from visible processing controls
- wait until PIX4Dmatic becomes idle
- run a guarded JSON job for an existing project or current session
- read recent PIX4Dmatic logs
- check expected output files
- collect diagnostics
Install
Install dependencies:
python -m pip install -r requirements.txt
Optional editable package install:
python -m pip install -e . --no-build-isolation
If package installation is blocked by local permissions, run directly from this checkout:
$env:PYTHONPATH = "src"
python -m pix4dmatic_mcp.server
Run
$env:PYTHONPATH = "src"
python -m pix4dmatic_mcp.server
Configuration
The server loads defaults automatically, then optionally reads:
PIX4DMATIC_MCP_CONFIGpix4dmatic_mcp_config.jsonin the current working directoryconfig/pix4dmatic_mcp_config.jsonin the current working directory
Useful environment overrides:
PIX4DMATIC_EXEPIX4DMATIC_MCP_DIAGNOSTICS_DIR
See examples/pix4dmatic_mcp_config.example.json.
For Codex or another MCP client, use examples/mcp_config.example.json as a starting point.
Quick Local Checks
PIX4Dmatic is expected to be running in a normal Windows desktop session.
$env:PYTHONPATH = "src"
python scripts/test_status.py
python scripts/inspect_ui.py
MCP Tools
Session and observation:
pix4d_launchpix4d_focuspix4d_get_statuspix4d_screenshotpix4d_window_screenshotpix4d_get_ui_tree
Low-level UI control:
pix4d_send_hotkeypix4d_type_textpix4d_click_textpix4d_click_menupix4d_list_menu_items
Project and processing:
pix4d_open_projectpix4d_start_processingpix4d_wait_until_idlepix4d_run_jobpix4d_run_job_objectpix4d_run_batchpix4d_run_batch_object
Logs and outputs:
pix4d_read_latest_logspix4d_find_log_errorspix4d_check_outputspix4d_analyze_projectpix4d_detect_blockerspix4d_collect_diagnostics
Job Safety
pix4d_run_job_object and pix4d_run_job will start processing. A job must either provide project_path or explicitly set use_current_session to true.
Use dry_run: true to validate job intent without clicking the PIX4Dmatic UI.
Batch files run jobs sequentially. Set continue_on_failure: true to continue after a failed job. See examples/batch.example.json.
Safety
The server only launches PIX4Dmatic and does not expose a generic process runner. It does not automate login or license changes.