Three.js DevTools MCP
NPM · THREEJS-DEVTOOLS-MCP · SCANNED SEP 23
Inspect and edit Three.js scenes, materials, shaders, lights in real time from any AI agent
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- A known CVE affects extract-zip, but no fixed version has been published, so there is nothing to upgrade to. View diagnostics → Partial
- No install/post-install scripts declared.Pass
- 50 of 170 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 183 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability76
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 4283 tokens (~83/item across 51 items; 51 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "run_js" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Three.js DevTools MCP server?
Three.js DevTools MCP runs locally as an npm package, launched with npx -y threejs-devtools-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · threejs-devtools-mcp
claude mcp add dmitriygolub-threejs-devtools -- npx -y threejs-devtools-mcp
{
"mcpServers": {
"dmitriygolub-threejs-devtools": {
"command": "npx",
"args": [
"-y",
"threejs-devtools-mcp"
]
}
}
} {
"servers": {
"dmitriygolub-threejs-devtools": {
"command": "npx",
"args": [
"-y",
"threejs-devtools-mcp"
]
}
}
} codex mcp add dmitriygolub-threejs-devtools -- npx -y threejs-devtools-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dmitriygolub-threejs-devtools": {
"type": "local",
"command": [
"npx",
"-y",
"threejs-devtools-mcp"
],
"enabled": true
}
}
} openclaw mcp add dmitriygolub-threejs-devtools --command npx --arg -y --arg threejs-devtools-mcp
mcp_servers:
dmitriygolub-threejs-devtools:
command: "npx"
args: ["-y", "threejs-devtools-mcp"] {
"McpServers": {
"dmitriygolub-threejs-devtools": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"threejs-devtools-mcp"
]
}
}
} assistant mcp add dmitriygolub-threejs-devtools -t stdio -c npx -a -y threejs-devtools-mcp
{
"mcpServers": {
"dmitriygolub-threejs-devtools": {
"command": "npx",
"args": [
"-y",
"threejs-devtools-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 +1
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Sept 2026 · Analysed npm/threejs-devtools-mcp@0.2.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-7pqw-9j4j-h8q3 | CVE-2026-19693 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H | no |
| GHSA-jmr9-qjv8-65gv | CVE-2026-56876 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N | no |
Background: What a vulnerability scan can and cannot prove →
Dependencies 170 packages
| Packages resolved | 170 |
|---|---|
| Stale | 50 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_helper ~211
Add a visual debug helper to a scene object. Types: box, axes, skeleton, arrow, grid, polar_grid, camera, directional_light, spot_light, point_light, hemisphere_light, plane Debug only — page reload will reset. No code changes needed.
| Name | Type | Req | Description |
|---|---|---|---|
| color | number | – | Color as hex number (default: 0x00ff00) |
| direction | array | – | [x, y, z] direction for ArrowHelper/PlaneHelper |
| divisions | number | – | Grid divisions (GridHelper, default: 10) |
| length | number | – | Arrow length (ArrowHelper, default: 1) |
| origin | array | – | [x, y, z] origin for ArrowHelper |
| size | number | – | Size for AxesHelper/GridHelper/LightHelpers (default: 1) |
| target | string | – | Target object name |
| targetUuid | string | – | Target object UUID |
| type | string | – | Helper type (default: box) |
No output schema declared.
No examples provided.
animation_details ~25
List all AnimationMixers, their actions, clips, weights, and playback state
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
bounding_boxes ~161
Show/hide axis-aligned bounding boxes for scene objects. Runtime only — for debugging frustum culling and object bounds. Debug only — page reload will reset. No code changes needed.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | Remove all bounding boxes |
| color | number | – | Box color as hex (default: 0x00ff00) |
| enabled | boolean | – | true=show (default), false=remove all |
| limit | number | – | Max boxes to add (default: 50) |
| name | string | – | Target object name (omit for all meshes) |
| onlyVisible | boolean | – | Only visible objects (default: true) |
| recursive | boolean | – | Include children of target |
| uuid | string | – | Target object UUID |
No output schema declared.
No examples provided.
bridge_status ~15
Check bridge connection and proxy status
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
camera_details ~26
Get active camera properties: type, position, FOV, near/far, aspect
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
dispose_check ~32
Find potential memory leaks: orphaned geometries/textures not in scene but tracked by renderer, hidden objects with geometry
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
env_map_details ~28
Inspect environment maps: scene.environment, scene.background, per-material envMap, IBL settings
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
find_objects ~161
Search scene objects by type, material, visibility, name pattern, or custom property. Returns matching objects with details.
| Name | Type | Req | Description |
|---|---|---|---|
| hasGeometry | boolean | – | Filter objects with/without geometry |
| limit | number | – | Max results (default: 50, max: 200) |
| material | string | – | Material name or type to filter by |
| minChildren | number | – | Minimum number of children |
| namePattern | string | – | Regex pattern to match object names |
| property | string | – | Custom property name to check on the object |
| type | string | – | Object type: Mesh, Group, InstancedMesh, Light, etc. |
| value | – | – | Expected value for the custom property |
| visible | boolean | – | Filter by visibility |
No output schema declared.
No examples provided.
fog_details ~29
Get scene fog settings: type (Fog/FogExp2), color, near/far or density
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
geometry_details ~49
Inspect geometry: vertices, attributes, indices, bounding box, morph attributes
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Object name (owning mesh) |
| uuid | string | – | Object UUID (owning mesh) |
No output schema declared.
No examples provided.
gltf_to_r3f ~91
Convert a GLTF/GLB file to a ready-to-use React Three Fiber component (like gltfjsx)
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute or relative path to the .glb or .gltf file |
| preload | boolean | – | Add useGLTF.preload() call (default: true) |
| typescript | boolean | – | Generate TypeScript (default: true) |
No output schema declared.
No examples provided.
highlight_object ~90
Highlight an object for debugging (wireframe or visibility toggle). Runtime only — for visual inspection, not persisted. Debug only — page reload will reset. No code changes needed.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | – | Enable/disable highlight (default: true) |
| mode | string | – | Highlight mode (default: wireframe) |
| name | string | – | Object name |
| uuid | string | – | Object UUID |
No output schema declared.
No examples provided.
instanced_mesh_details ~95
Inspect an InstancedMesh: count, max instances, geometry, sample transforms, custom attributes, instance colors
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | InstancedMesh name |
| sampleCount | number | – | Number of instances to sample (default: 5, max: 20) |
| startIndex | number | – | First instance index to sample (default: 0) |
| uuid | string | – | InstancedMesh UUID |
No output schema declared.
No examples provided.
layer_details ~20
Show camera layer mask and objects with non-default layer assignments
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
material_details ~41
Get full properties of a material: color, maps, uniforms, defines
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Material name |
| uuid | string | – | Material UUID |
No output schema declared.
No examples provided.
material_list ~21
List all materials in the scene with type, color, transparency
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
memory_stats ~28
Detailed GPU memory analysis: geometry buffers, texture VRAM, instance data, top textures by size
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
morph_targets ~23
List all meshes with morph targets, their target names and current influence values
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
object_details ~60
Get detailed info about a specific object by name, uuid, or path
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Object name (first match) |
| path | string | – | Dot path: "Scene.MyGroup.MyMesh" |
| uuid | string | – | Object UUID |
No output schema declared.
No examples provided.
performance_snapshot ~27
Get detailed performance analysis: draw calls, triangles, instanced meshes, object counts by type
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
postprocessing_list ~33
List post-processing passes from EffectComposer: render passes, shader passes, effects (bloom, SSAO, etc.)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
raycast ~82
Cast a ray from camera through screen coordinates and return hit objects
| Name | Type | Req | Description |
|---|---|---|---|
| maxHits | number | – | Maximum hits to return (default: 10) |
| x | number | yes | Normalized device X coordinate (-1 to 1, 0 = center) |
| y | number | yes | Normalized device Y coordinate (-1 to 1, 0 = center) |
No output schema declared.
No examples provided.
remove_helper ~42
Remove a previously added debug helper Debug only — page reload will reset. No code changes needed.
| Name | Type | Req | Description |
|---|---|---|---|
| helperId | string | yes | Helper ID returned by add_helper |
No output schema declared.
No examples provided.
renderer_info ~21
Get renderer stats: draw calls, triangles, memory, capabilities
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
renderer_settings ~26
Get renderer configuration: toneMapping, exposure, colorSpace, shadowMap, pixelRatio
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
run_js ~91
Execute arbitrary JavaScript with access to scene, renderer, camera. Returns the result. Runtime only (lost on reload). If the code mutates scene state, ASK the user first: runtime preview or persistent code change? Debug only — page reload will reset. No code changes needed.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | JavaScript code. Available vars: scene, renderer, camera, gl. Use return for results. |
No output schema declared.
No examples provided.
scene_background ~28
Inspect scene background, environment map (IBL), color management, backgroundBlurriness/Intensity
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
scene_diff ~71
Compare scene state over time. First call saves a snapshot, second call shows what changed (added/removed/modified objects, transforms, materials, lights).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | snapshot=save state, diff=compare with saved, auto=snapshot if none saved, diff if exists (default: auto) |
No output schema declared.
No examples provided.
scene_tree ~115
List all objects in the Three.js scene tree. Returns compact text tree by default (saves tokens). Set compact=false for full JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | Compact text tree (default: true). Set false for full JSON with positions/geometry. |
| depth | number | – | Max tree depth (default: 3) |
| maxChildren | number | – | Max children per node (default: 15 compact, 100 JSON) |
| types | array | – | Filter by type: Mesh, Light, Group, etc. |
No output schema declared.
No examples provided.
set_animation ~163
Control animation: mixer timeScale, action play/stop/pause/weight. Runtime only — for testing. Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| actionPaused | boolean | – | Pause/unpause action |
| actionTimeScale | number | – | Action time scale |
| actionWeight | number | – | Action weight (0-1) |
| clipName | string | – | Target action by clip name |
| mixerIndex | number | – | Mixer index (default: 0) |
| play | boolean | – | Play the action |
| stop | boolean | – | Stop the action |
| time | number | – | Mixer current time |
| timeScale | number | – | Mixer global time scale |
No output schema declared.
No examples provided.
set_camera ~205
Modify camera: position, rotation, FOV, near/far, zoom — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| aspect | number | – | Aspect ratio (PerspectiveCamera) |
| bottom | number | – | Bottom plane (OrthographicCamera) |
| far | number | – | Far clipping plane |
| fov | number | – | Field of view (PerspectiveCamera) |
| left | number | – | Left plane (OrthographicCamera) |
| near | number | – | Near clipping plane |
| position | array | – | [x, y, z] |
| right | number | – | Right plane (OrthographicCamera) |
| rotation | array | – | [x, y, z] in radians |
| top | number | – | Top plane (OrthographicCamera) |
| zoom | number | – | Zoom factor |
No output schema declared.
No examples provided.
set_dev_port ~45
Change the dev server port the proxy forwards to
| Name | Type | Req | Description |
|---|---|---|---|
| port | number | yes | The dev server port (e.g. 3000, 5173, 8080) |
No output schema declared.
No examples provided.
set_fog ~145
Modify scene fog: color, near/far (Fog) or density (FogExp2), background color — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | – | Scene background color (#RRGGBB) |
| color | string | – | Fog color (#RRGGBB) |
| density | number | – | Fog density (FogExp2 type) |
| far | number | – | Fog far distance (Fog type) |
| near | number | – | Fog near distance (Fog type) |
No output schema declared.
No examples provided.
set_instanced_mesh ~134
Modify InstancedMesh properties: count, visibility, frustumCulled — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | – | Number of visible instances |
| frustumCulled | boolean | – | Enable/disable frustum culling |
| name | string | – | InstancedMesh name |
| uuid | string | – | InstancedMesh UUID |
| visible | boolean | – | Show/hide entire mesh |
No output schema declared.
No examples provided.
set_layers ~137
Set layers on an object or camera — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | – | Enable or disable the layer |
| layer | number | – | Layer number (0-31) to enable/disable |
| mask | number | – | Set layer mask directly (bitmask) |
| name | string | – | Object name |
| target | string | – | "camera" to target the camera |
| uuid | string | – | Object UUID |
No output schema declared.
No examples provided.
set_light ~149
Modify light properties: color, intensity, position, shadows — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| castShadow | boolean | – | Enable/disable shadows |
| color | string | – | Light color (#RRGGBB) |
| groundColor | string | – | Ground color for HemisphereLight (#RRGGBB) |
| intensity | number | – | Light intensity |
| name | string | – | Light name |
| position | array | – | [x, y, z] |
| uuid | string | – | Light UUID |
No output schema declared.
No examples provided.
set_material_property ~165
Set a material property (color, roughness, wireframe, etc.). IMPORTANT: This is a runtime-only preview (lost on reload). Before calling, ASK the user whether they want a runtime preview or a persistent code change. Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Material name |
| property | string | yes | Property name: color, emissive, roughness, metalness, opacity, transparent, wireframe, visible, side, depthWrite, depthTest, alphaTest, flatShading, fog |
| uuid | string | – | Material UUID |
| value | – | – | New value (hex string for colors, number for scalars, boolean for flags) |
No output schema declared.
No examples provided.
set_morph_target ~118
Set morph target influence on a mesh — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| index | number | – | Morph target index |
| influence | number | yes | Influence value (0-1) |
| name | string | – | Mesh name |
| targetName | string | – | Morph target name (from dictionary) |
| uuid | string | – | Mesh UUID |
No output schema declared.
No examples provided.
set_object_transform ~139
Set position, rotation, scale, or visibility of a scene object — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Object name |
| position | array | – | [x, y, z] |
| rotation | array | – | [x, y, z] in radians |
| scale | array | – | [x, y, z] |
| uuid | string | – | Object UUID |
| visible | boolean | – | Show/hide object |
No output schema declared.
No examples provided.
set_renderer ~195
Modify renderer: toneMapping, exposure, colorSpace, shadows — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| localClippingEnabled | boolean | – | Enable local clipping planes |
| outputColorSpace | string | – | Output color space (srgb, srgb-linear) |
| pixelRatio | number | – | Device pixel ratio |
| shadowMapEnabled | boolean | – | Enable shadow mapping |
| shadowMapType | number | – | Shadow map type (0=Basic, 1=PCF, 2=PCFSoft, 3=VSM) |
| sortObjects | boolean | – | Sort objects before rendering |
| toneMapping | number | – | Tone mapping algorithm (0-7) |
| toneMappingExposure | number | – | Exposure level |
No output schema declared.
No examples provided.
set_shadow ~261
Modify shadow settings — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| bias | number | – | Shadow bias (light only, e.g. -0.0001) |
| blurSamples | number | – | Shadow blur samples (light only) |
| cameraBottom | number | – | Shadow camera bottom (DirectionalLight) |
| cameraFar | number | – | Shadow camera far plane |
| cameraLeft | number | – | Shadow camera left (DirectionalLight) |
| cameraNear | number | – | Shadow camera near plane |
| cameraRight | number | – | Shadow camera right (DirectionalLight) |
| cameraTop | number | – | Shadow camera top (DirectionalLight) |
| castShadow | boolean | – | Enable/disable shadow casting |
| mapSize | array | – | [width, height] shadow map resolution |
| name | string | – | Object/light name |
| normalBias | number | – | Shadow normal bias (light only) |
| radius | number | – | Shadow blur radius (light only) |
| receiveShadow | boolean | – | Enable/disable shadow receiving |
| uuid | string | – | Object/light UUID |
No output schema declared.
No examples provided.
set_texture ~265
Modify texture properties: wrap, filter, anisotropy, repeat, offset, colorSpace — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| anisotropy | number | – | Anisotropic filtering level (1-16) |
| colorSpace | string | – | Color space (srgb, srgb-linear) |
| flipY | boolean | – | Flip texture vertically |
| magFilter | number | – | Mag filter (1003=Nearest, 1006=Linear) |
| minFilter | number | – | Min filter (1003=Nearest, 1006=Linear, 1008=LinearMipmapLinear) |
| name | string | – | Texture name |
| offset | array | – | [x, y] offset |
| repeat | array | – | [x, y] repeat |
| rotation | number | – | Rotation in radians |
| uuid | string | – | Texture UUID |
| wrapS | number | – | Wrap S mode (1000=Repeat, 1001=ClampToEdge, 1002=Mirrored) |
| wrapT | number | – | Wrap T mode |
No output schema declared.
No examples provided.
set_uniform ~126
Set a shader uniform value on a ShaderMaterial — runtime-only preview (lost on reload). ASK the user first: runtime preview or persistent code change? Runtime preview — lost on page reload. You MUST ask the user first: runtime preview only, or also update source code?
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Material name |
| uniform | string | yes | Uniform name (e.g. uHorizonColor, uOpacity) |
| uuid | string | – | Material UUID |
| value | – | – | New value: hex string for Color, {x,y,z} for Vector3, number for float |
No output schema declared.
No examples provided.
shader_list ~18
List all compiled shader programs with their material associations
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
shader_source ~41
Get compiled vertex/fragment shader source and uniforms for a material
| Name | Type | Req | Description |
|---|---|---|---|
| materialName | string | – | Material name |
| materialUuid | string | – | Material UUID |
No output schema declared.
No examples provided.
shadow_details ~34
Inspect shadow maps: global settings, per-light shadow config (bias, mapSize, camera frustum), cast/receive objects
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
skeleton_details ~23
List all skeletons/bones from SkinnedMesh objects in the scene
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
take_screenshot ~39
Capture a screenshot of the current Three.js scene
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | Height in pixels |
| width | number | – | Width in pixels |
No output schema declared.
No examples provided.
texture_details ~34
Get detailed info about a specific texture
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Texture name |
| uuid | string | – | Texture UUID |
No output schema declared.
No examples provided.
texture_list ~21
List all textures: size, format, wrap, filter settings
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the Three.js DevTools MCP server?
Three.js DevTools MCP is listed in the public MCP registry as io.github.DmitriyGolub/threejs-devtools. Inspect and edit Three.js scenes, materials, shaders, lights in real time from any AI agent. This page covers its npm package (threejs-devtools-mcp).
Is the Three.js DevTools MCP server safe to use?
Three.js DevTools MCP scores 82 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 23 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Three.js DevTools MCP server expose?
Three.js DevTools MCP exposes 51 tools: scene_tree, object_details, material_list, material_details, shader_source, and 46 more. Their descriptions and schemas cost roughly 4,283 tokens of context every time the server is loaded.
Is the Three.js DevTools MCP server still maintained?
Three.js DevTools MCP is still listed as active in the MCP registry. We last reached this channel on 23 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Three.js DevTools MCP server under?
Three.js DevTools MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.