generateVariableCode
Generate code to create and set variables in Spline 3D scenes, enabling dynamic control of scene parameters and values for interactive 3D designs.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| variableName | Yes | Variable name | |
| value | No | Variable value |
Implementation Reference
- src/tools/scene-tools.js:247-278 (registration)MCP tool registration for 'generateVariableCode', including input schema (Zod) and handler function that calls runtimeManager to generate code and returns it as text content.server.tool( 'generateVariableCode', { sceneId: z.string().min(1).describe('Scene ID'), variableName: z.string().min(1).describe('Variable name'), value: z.any().describe('Variable value'), }, async ({ sceneId, variableName, value }) => { try { const code = runtimeManager.generateVariableCode(sceneId, variableName, value); return { content: [ { type: 'text', text: code } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error generating code: ${error.message}` } ], isError: true }; } } );
- src/utils/runtime-manager.js:623-664 (handler)The core handler function in RuntimeManager class that generates the JavaScript code snippet for loading a Spline scene and manipulating the specified variable (setting value, getting, listening, and example animation).generateVariableCode(sceneId, variableName, value) { const sceneUrl = `https://prod.spline.design/${sceneId}/scene.splinecode`; return ` import { Application } from '@splinetool/runtime'; // Create a new Application instance const canvas = document.getElementById('canvas3d'); const spline = new Application(canvas); // Load the scene spline.load('${sceneUrl}').then(() => { console.log('Scene loaded successfully'); // Set variable value spline.setVariable('${variableName}', ${JSON.stringify(value)}); // Get variable value const currentValue = spline.getVariable('${variableName}'); console.log('Current value:', currentValue); // Listen for variable changes spline.addEventListener('variableChanged', (e) => { if (e.variableName === '${variableName}') { console.log('Variable changed:', e.variableName, e.value); // React to variable change } }); // Example: Change variable over time let count = 0; const interval = setInterval(() => { count++; spline.setVariable('${variableName}', count); if (count >= 10) { clearInterval(interval); } }, 1000); }); `; }