PluginBench
MCP Server
Active
MIT

3D Visualizer MCP Server

io.github.kleinicke/3d-visualizer

Inspect and compare point clouds, meshes, and depth data with fast 3D previews in your editor.

What is the 3D Visualizer MCP server?

The 3D Visualizer MCP server enables AI agents to open, inspect, and analyze 3D files including point clouds, meshes, gaussian splats, and depth maps with inline previews. It supports dozens of formats (PLY, LAS, LAZ, E57, OBJ, STL, GLTF, and more) and leverages Rust/WebAssembly for fast decoding of files with millions of points. Agents can control the camera, measure distances, convert depth images to point clouds, and capture rendered screenshots for analysis.

The 3D Visualizer MCP server brings 3D file inspection capabilities to AI agents. It handles demanding formats like LAS, LAZ, E57, and TIFF with Rust geometry kernels, supports comparing multiple point clouds in one view, renders gaussian splatting reconstructions, inspects meshes as surfaces or wireframes, and converts depth/disparity images into point clouds. Use it to analyze 3D scan data, validate reconstruction results, measure geometry, and extract visual information from 3D scenes.

How to install 3D Visualizer

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "3d-visualizer": {
      "command": "uvx",
      "args": [
        "3d-visualizer",
        "--with",
        "mcp>=2.2,<3",
        "mcp",
        "--root"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • open_scene — Open a 3D file (point cloud, mesh, depth map, or gaussian splat) in the viewer
  • control_camera — Adjust camera position, rotation center, and viewing angle
  • measure_distance — Build measurement paths and extract distance data from 3D geometry
  • capture_screenshot — Render and capture the current 3D scene view
  • toggle_point_clouds — Load and independently toggle visibility of multiple point clouds
  • convert_depth_to_pointcloud — Convert depth or disparity images into point clouds with configurable projection settings
  • inspect_mesh — Render meshes as surfaces, wireframes, points, or normals
  • render_gaussian_splats — Render 3D Gaussian Splatting reconstructions as sorted splats or center point clouds

Use cases

  • Analyze and compare multiple LiDAR or photogrammetry scans in a single view
  • Convert depth sensor data or stereo disparity maps into inspectable point clouds
  • Validate 3D reconstruction results by examining mesh topology and geometry
  • Extract visual information from gaussian splatting models for AI analysis
  • Measure distances and spatial relationships in 3D scan data

3D Visualizer MCP server FAQ

What is the 3D Visualizer MCP server?

It's an MCP server that gives AI agents the ability to open, inspect, and analyze 3D files (point clouds, meshes, depth maps, gaussian splats) with fast WebAssembly-based decoding and inline 3D previews. Agents can control the camera, measure distances, and capture screenshots.

What file formats does it support?

Point clouds (PLY, XYZ, PCD, LAS, LAZ, E57, KITTI BIN, NPY), meshes (OBJ, STL, GLTF, GLB, FBX, DAE, 3DS), gaussian splats (3DGS PLY, SPZ, SPLAT, KSPLAT, SOG), and depth/disparity images (TIFF, PNG, PFM, NPY, NPZ).

Is it free?

Yes, the 3D Visualizer is open-source and available on PyPI as a free Python package. The MCP server is included in the Python package.

How do I install it?

Install via PyPI with `uv add 3d-visualizer` or `pip install 3d-visualizer`. The MCP server is included and can be configured to connect with Claude or Cursor.

Does it require authentication?

No, the 3D Visualizer MCP server does not require authentication. It works locally with files on your system.

Can it handle large files?

Yes, it's optimized for performance. Files with millions of points open in seconds thanks to Rust and WebAssembly decoding, with performance-aware rendering that stops generating frames when the scene is static.

README (reference)

Source of truth, from the repository.

3D Visualizer

View, compare and inspect point clouds, meshes, gaussian splats, depth maps and disparity images in your editor or browser — with Rust and WebAssembly doing the heavy decoding, so files with millions of points open in seconds.

Depth image converted to a point cloud

Highlights

  • Open large point clouds quickly, including files with millions of points
  • Decode the demanding formats in Rust/WebAssembly — LAS, LAZ, E57 and TIFF — alongside Rust geometry kernels for camera models and scan registration
  • Compare multiple point clouds in one view and toggle them independently
  • Convert depth and disparity images into point clouds
  • Render gaussian splat reconstructions as sorted splats or center point clouds
  • Inspect meshes as surfaces, wireframes, points and normals
  • Use Eye-Dome Lighting and brightness correction for clearer uncolored geometry
  • Measure distances and adjust camera, rotation center and view parameters
  • Use the shared viewer on the website
  • Try the local Python package and command-line viewer for 3D files, NumPy/PyTorch arrays and inline local notebooks (uv add 3d-visualizer)
  • Connect AI agents through the local MCP server to open scenes, control the camera and inspect rendered screenshots

Supported formats

TypeFormats
Point cloudsPLY, XYZ, XYZN, XYZRGB, PCD, PTS, NPY, LAS, LAZ, E57, KITTI BIN, Stonex X3A/X3R (experimental)
MeshesPLY, OBJ, STL, OFF, GLTF, GLB, FBX, DAE (Collada), 3DS
Gaussian splats3DGS PLY, SPZ, SPLAT, KSPLAT, SOG
Depth/disparity imagesTIFF, PNG, PFM, NPY, NPZ
3D Body PosesJSON pose data (experimental)
Camera ProfilesJSON pose data (experimental)

Model animation playback and remote URL loading are supported; see model details and remote files.

Because .bin and .json are generic extensions, neither is opened with the 3D Visualizer by default. For KITTI BIN, use Open With... or right-click and choose Open with 3D Visualizer. For a supported JSON pose, right-click and choose Load JSON as 3D Pose.

Features

Depth and Disparity to Point Cloud

Convert depth or disparity images into point clouds. Projection settings include fx, fy, cx, cy, camera distortion models, mono depth scale and bias, PNG int16 scale and disparity offset.

Eye-Dome Lighting

Use Eye-Dome Lighting to improve depth perception, especially for uncolored point clouds.

Eye-Dome Lighting

Multiple Point Clouds

Load multiple point clouds into the same view, toggle them independently and switch between them with Shift-click.

Multiple point clouds

Mesh Inspection

Inspect mesh files with controls for surface, wireframe, points and normals. This is useful when checking geometry, topology or exported reconstruction results without leaving the editor.

Gaussian Splatting

Open 3D Gaussian Splatting reconstructions (3DGS PLY, SPZ, SPLAT, KSPLAT, SOG) and render them as real sorted splats via Spark, or as a point cloud of the gaussian centers with colors derived from the spherical-harmonics coefficients. Switch per file with the ✨ Splats button in the Files panel. Measurement and picking keep working on the gaussian centers in splat mode. Oversized background gaussians can be reduced with the logarithmic Max splat size control, while coloring center points by the opacity scalar field in Points mode helps with spotting floaters.

Point Cloud Attributes

Point cloud files can include positions, RGB colors, normals and scalar fields. The viewer uses positions for geometry, original RGB values when available, normals for inspection, and intensity/reflectivity fields for optional scalar coloring. The recognized property names are x/y/z, red/green/blue, nx/ny/nz and intensity/reflectivity/reflectance/remission. Any other numeric per-vertex PLY property (e.g. confidence, error, curvature) also appears in the Color dropdown for Viridis or grayscale colormap coloring. LAS/LAZ attributes such as classification, returns, scan angle and GPS time are exposed through the same scalar-field color controls. E57 containers load each scan as a separate, independently visible entry.

Distance Measurement Tools and Camera Manipulation

Build multiple measurement paths with Shift-double-click. See control settings for options.

Camera Recording

Create smooth camera paths from keyframes and export them as configurable video recordings.

Navigation

Double-click a point to change the rotation center. This allows for easy navigation using a mouse or a trackpad. You can also manually enter the camera position, rotation center and viewing angle.

Performance-Aware Rendering

The viewer shows the current frame rate. When the point cloud is not moving, no more frames are generated, which helps reduce power usage.

NPY file structure options

  • As a depth image: [X,Y]
  • As a point cloud: [...,3] with the three values X,Y,Z

Feature requests and issues

If you have a workflow that would benefit from new features or file formats, please open an issue on the GitHub repository. Example files are especially helpful when adding support for new formats.

Roadmap

  • Add support for more file formats
  • Improve dataset support with example images from Middlebury stereo and ETH3D
  • Use calibration files next to depth images automatically when available (example files needed)
  • Accept 3d body pose files (example files needed)

Links

Listed on mcpservers.org

Related MCP servers

MCP server for Klever blockchain smart contract development with knowledge base and deployment tools.

31
TypeScript
MIT
View repository →

Generate tailored resumes via AI agents using KlevrCV. Returns a signed PDF download URL.

View repository →

VibeLens MCP tool for AI to visualize code changes with inline annotations in VS Code/Cursor

0
TypeScript
View repository →

HOI4 modding tools for agents: local references, visual previews, focus trees, interfaces and maps.

2
TypeScript
Apache-2.0
View repository →

Search 30,000+ decided U.S. DOHA security-clearance decisions, cited to the public record.

View repository →

MCP server for PDF generation using PDFKit

1
TypeScript
MIT
View repository →