3D Visualizer
# 3D Visualizer MCP server
Give AI agents tools to inspect, compare and export 3D data. The server runs
locally and accesses files inside directories you explicitly allow.
## Install and connect
Install [uv](https://docs.astral.sh/uv/getting-started/installation/), then add
this configuration to your MCP client. Replace the root with your data folder:
```json
{
"mcpServers": {
"3d-visualizer": {
"command": "uvx",
"args": [
"--from",
"3d-visualizer[mcp]==0.4.2",
"3d-visualizer-mcp",
"--root",
"/absolute/path/to/data"
]
}
}
}
```
No API key is required. The client starts the server and discovers its tools
over stdio. Version 0.4.2 is the published release described here.
## What agents can do
- Open point clouds and meshes from allowed local files or remote URLs.
- Project depth and disparity images using supplied calibration and optional
aligned RGB images, including COLMAP depth workflows.
- Inspect coordinates, attributes and presentation state; move the camera, focus
a selection, set viewpoints and capture PNG previews.
- Select labeled regions, isolate geometry, measure distances and export subsets
with attributes and point provenance where supported.
- Transform objects, adjust visibility, point size, coloring and opacity;
compare predictions and references with distance coloring.
- Save and restore scene states and named views; control supported model
animations and camera keyframes.
- Visualize NumPy arrays and PyTorch tensors through the companion Python API.
## Rendering requirements
Interactive views and PNG captures in release 0.4.2 require a compatible MCP
Apps client with WebGL and widget-to-server calls. Plain stdio tool discovery
works without a browser, GPU or dataset; it does not prove that a client can
render the inline viewer. The server is local software, not a public hosted
endpoint. Remote URLs are inputs to the viewer.
## Example requests
- "Open this PCD, list its labels, isolate label 20 and frame it."
- "Show this depth image as a cloud using the calibration beside it."
- "Compare these prediction and reference clouds, then capture the result."
- "Export the selected object with its labels and original point indices."
For file conventions, client configuration and detailed workflows, see the
[MCP reference](https://github.com/kleinicke/ply-visualizer/blob/main/packages/python/MCP.md)
and
[Python documentation](https://github.com/kleinicke/ply-visualizer/blob/main/packages/python/README.md).
## Optional agent skill
The
[3D inspection skill](https://github.com/kleinicke/ply-visualizer/tree/main/skills/3d-visualizer-inspection)
helps agents choose inspection workflows and translate calibration from nearby
files. Install the whole folder, including its depth reference, in your client's
skill directory. MCP tool descriptions and workflow resources remain available
without the skill; installing it does not configure the MCP connection.
TDQS
Scored across 27 tools
Several tools occupy near-adjacent roles: set_3d_camera vs navigate_3d_view for camera control, capture_3d_view vs preview_3d_views for image inspection, and manage_3d_views vs manage_3d_scene_states for saved state. The long descriptions help, but an agent must carefully compare multiple tools before selection. The app-only transport tools (submit_viewer_reply, read_viewer_data) also blur the boundary between domain actions and internal communication.
The naming is generally very consistent: snake_case verb-first names such as open_3d_files, set_3d_camera, and manage_3d_scene_states create a clear pattern. Minor divergences like open_depth_image, visualize_points, submit_viewer_reply, and read_viewer_data do not use the same 3d marker, but the overall verb_noun convention remains predictable.
With 27 tools, the surface is too large; only a handful of related verbs are needed for the core workflows. Many tools could be grouped or filtered into a smaller, more focused set. The breadth may be useful, but the agent-facing tool count creates too much decision overhead.
The domain is broadly covered: opening local, remote, and depth data; inspecting, updating, closing, transforming, aligning, measuring, selecting, exporting, comparing, and animating scenes. Minor gaps include lack of explicit per-object deletion and a couple of internal app-only transport tools that do not fit the domain surface.