threejs-devtools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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