threejs-devtools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| scene_treeA | List all objects in the Three.js scene tree. Returns compact text tree by default (saves tokens). Set compact=false for full JSON. |
| object_detailsA | Get detailed info about a specific object by name, uuid, or path |
| material_listA | List all materials in the scene with type, color, transparency |
| material_detailsA | Get full properties of a material: color, maps, uniforms, defines |
| shader_sourceA | Get compiled vertex/fragment shader source and uniforms for a material |
| shader_listA | List all compiled shader programs with their material associations |
| texture_listA | List all textures: size, format, wrap, filter settings |
| texture_detailsB | Get detailed info about a specific texture |
| renderer_infoA | Get renderer stats: draw calls, triangles, memory, capabilities |
| set_material_propertyA | 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? |
| set_uniformA | 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? |
| set_object_transformA | 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? |
| set_lightA | 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? |
| highlight_objectA | 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. |
| run_jsA | 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? SHADER PATCHING RECIPE — when modifying materials via onBeforeCompile:
Debug only — page reload will reset. No code changes needed. |
| performance_snapshotA | Get detailed performance analysis: draw calls, triangles, instanced meshes, object counts by type |
| instanced_mesh_detailsA | Inspect an InstancedMesh: count, max instances, geometry, sample transforms, custom attributes, instance colors |
| set_instanced_meshA | 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? |
| camera_detailsA | Get active camera properties: type, position, FOV, near/far, aspect |
| set_cameraA | 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? |
| fog_detailsA | Get scene fog settings: type (Fog/FogExp2), color, near/far or density |
| set_fogA | 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? |
| renderer_settingsB | Get renderer configuration: toneMapping, exposure, colorSpace, shadowMap, pixelRatio |
| set_rendererA | 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? |
| animation_detailsA | List all AnimationMixers, their actions, clips, weights, and playback state |
| set_animationA | 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? |
| skeleton_detailsA | List all skeletons/bones from SkinnedMesh objects in the scene |
| geometry_detailsA | Inspect geometry: vertices, attributes, indices, bounding box, morph attributes |
| morph_targetsA | List all meshes with morph targets, their target names and current influence values |
| set_morph_targetA | 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? |
| raycastA | Cast a ray from camera through screen coordinates and return hit objects |
| layer_detailsA | Show camera layer mask and objects with non-default layer assignments |
| set_layersA | 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? |
| add_helperA | 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. |
| remove_helperA | Remove a previously added debug helper Debug only — page reload will reset. No code changes needed. |
| set_textureA | 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? |
| shadow_detailsA | Inspect shadow maps: global settings, per-light shadow config (bias, mapSize, camera frustum), cast/receive objects |
| set_shadowA | 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? |
| scene_backgroundB | Inspect scene background, environment map (IBL), color management, backgroundBlurriness/Intensity |
| find_objectsA | Search scene objects by type, material, visibility, name pattern, or custom property. Returns matching objects with details. |
| memory_statsA | Detailed GPU memory analysis: geometry buffers, texture VRAM, instance data, top textures by size |
| dispose_checkA | Find potential memory leaks: orphaned geometries/textures not in scene but tracked by renderer, hidden objects with geometry |
| toggle_wireframeA | Toggle wireframe on all materials or a specific object. Runtime only — for visual debugging. Debug only — page reload will reset. No code changes needed. |
| bounding_boxesA | 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. |
| env_map_detailsA | Inspect environment maps: scene.environment, scene.background, per-material envMap, IBL settings |
| scene_diffA | Compare scene state over time. First call saves a snapshot, second call shows what changed (added/removed/modified objects, transforms, materials, lights). |
| postprocessing_listA | List post-processing passes from EffectComposer: render passes, shader passes, effects (bloom, SSAO, etc.) |
| console_captureA | Capture browser console output (log/warn/error). Returns last N messages. Call to check for runtime errors and warnings. |
| texture_previewA | Preview a specific texture as a PNG image. Use texture_list first to find names/UUIDs. |
| perf_monitorA | Record FPS and frame times for N seconds. Returns avg/min/max FPS, percentiles, spike and jank counts. |
| click_inspectA | Enable click-to-inspect mode. Cursor changes to crosshair — tell the user to click on an object in the 3D scene. Returns clicked object details. |
| scene_exportA | Export scene or specific object as GLB. Requires GLTFExporter in your app (see error message for setup). Saves to screenshots/ folder. |
| gltf_to_r3fA | Convert a GLTF/GLB file to a ready-to-use React Three Fiber component (like gltfjsx) |
| take_screenshotB | Capture a screenshot of the current Three.js scene |
| annotated_screenshotA | Screenshot with labeled object names overlaid at their screen positions. Shows [M]esh, [L]ight, [G]roup, [C]amera tags. Great for AI to understand scene layout visually. |
| toggle_overlayA | Toggle a lightweight scene inspector overlay in the browser. Shows real-time FPS, draw calls, triangles, object count, scene tree, materials, and lights. Click objects in the tree to highlight them with wireframe. Debug only — page reload will reset. Debug only — page reload will reset. No code changes needed. |
| overlay_selectedA | Get comprehensive details about the object currently selected in the overlay. Returns full material properties, geometry info, transforms, textures, uniforms, shadow settings — everything needed to understand and modify the object in code. The user must first select an object in the overlay by clicking on it. |
| bridge_statusA | Check bridge connection and proxy status |
| set_dev_portA | Change the local dev server port the proxy forwards to |
| set_dev_urlA | Connect to a remote Three.js app by URL for inspection and visual debugging. Source code changes are NOT possible in remote mode — only runtime/visual modifications. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DmitriyGolub/threejs-devtools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server