3d_model_checker_mcp
Accepts .glb models exported from Blender and provides validation, model reports, animation checks, and six-view render sheets without modifying the source file.
Supports glTF/GLB workflows by exporting Three.js builds as GLB, validating glTF in plain language, and checking externally supplied GLB files.
Builds and inspects 3D models from Three.js build modules using a supplied THREE kit, exporting GLB and producing multi-view reports for geometry, materials, parts, and animations.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
3D model checker
An MCP server that lets a coding agent see the 3D models it makes.
It has one tool, check_3d. Give it a Three.js build module and it builds the model, exports a GLB and hands back a report and a six-view render sheet (front, right, back, left, top and three-quarter, over a floor grid). Give it a .glb from anywhere else, Blender included, and you get the same report and sheet without anything being written.
The report covers size, parts, triangle counts, materials, glTF validation in plain words, and a check of every animation clip: feet that slide, limbs that pass through the floor, loops that don't close. Ask for one clip and the sheet shows it moving. Ask for one part and it frames that part close up.
It needs no model and no network. It started as the 3D helper in Haruspex, which still uses the same core.
Setup
You need Node 22 or newer and a Chromium. The server looks for one in this order:
CHECK_3D_BROWSER, if you set it to a Chromium or Chrome binary.Playwright's own Chromium. Install it with
npx playwright install chromium.An installed Google Chrome.
Rendering uses SwiftShader, so it works on a machine with no GPU.
Until the packages are on npm, build from a checkout:
npm install
npm run buildClaude Code
claude mcp add check-3d -- node /path/to/3d_model_checker_mcp/packages/mcp/dist/cli.js --root /path/to/your/projectAny other client
Most clients take a stdio server in a JSON block like this:
{
"mcpServers": {
"check-3d": {
"command": "node",
"args": [
"/path/to/3d_model_checker_mcp/packages/mcp/dist/cli.js",
"--root",
"/path/to/your/project"
]
}
}
}--root is the folder the tool can see. Paths in calls are relative to it, and nothing outside it is read or written. Leave it out and the server uses the folder it was started in.
Related MCP server: canvas3d-mcp
Writing a build module
A module imports nothing. Its default export gets THREE and a small kit, and returns an Object3D, or { object, animations } when it has clips:
export default function build(THREE, kit) {
const asset = new THREE.Group();
const glass = new THREE.MeshStandardMaterial({ color: 0x4aa8e0 });
const pts = [
[0, 0],
[0.12, 0.02],
[0.15, 0.1],
[0.05, 0.22],
[0.04, 0.3]
].map(([x, y]) => new THREE.Vector2(x, y));
const flask = new THREE.Mesh(new THREE.LatheGeometry(pts, 10), glass);
flask.name = 'Flask';
asset.add(flask);
return asset;
}Units are metres, y is up and the front faces +z. The tool's description tells the agent the rest: the kit, animation modules, textures and the arguments for clips, close-ups and normalising a GLB.
What it doesn't do
It doesn't make models. The agent writes the module; this builds it and shows the result.
It runs one call at a time. A second call waits for the first.
It doesn't follow a
.gltfthat points at files beside it. Export a.glb, or embed the buffers.A module gets no network and can't read files, apart from PNG textures next to it that it names with
kit.texture.
How it works
Everything runs in one headless Chromium page, because the render sheets need WebGL. The page lives on a made-up origin that only the server answers, so the only things it can load are its own script and the three.js kit. Build modules run in a sandboxed iframe inside that page, with an opaque origin. Files reach the page through two bindings that only the page's own frame may call. A call that runs past 180 seconds (CHECK_3D_TIMEOUT_MS) is stopped and its browser replaced, since a module stuck in a loop freezes the page.
Packages
packages/core,3d_model_checker_core: the checks, the render sheets and the module runner. It runs in any browser page, given aCheck3dHostfor files and a sandboxed frame. Haruspex hosts it in its webview.packages/mcp,3d_model_checker_mcp: the server.
Development
npm run build # both packages; the server's tests use the build
npm test
npm run check # TypeScript
npm run format:checkLicence
MIT. See LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.
Turn text or an image into an animation-ready 3D model (GLB): generate, rig, animate, retexture.
Free text/image → 3D: generate, rig, avatar-ify, and refine GLB models. No auth, no payment.
3D avatars, embeds, glTF tools, agent memory, and on-chain agent identity from three.ws.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables processing, validation, optimization, and analysis of 3D models with glTF/GLB support, including format conversion, compression (Meshopt/Draco), texture optimization, and detailed model statistics.31 npmMIT
- FlicenseAqualityDmaintenanceEnables AI agents to create, render, and validate 3D scenes, 2D art, and games in HTML canvas using Three.js, WebGL, or Canvas 2D, with multi-angle screenshots, structured validation reports, and interactive playtesting.5-
- AlicenseNot gradedqualityDmaintenanceEnables coding agents to visually inspect and diagnose 3D files (meshes and Gaussian splats) for defects like flipped normals or floaters, without GPU dependencies.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create, edit, and export 3D models (GLB, USDZ) from natural-language descriptions and YAML, with rendering and problem detection.14 npmMIT