addCamera
Add a camera to a 3D scene with customizable position, target, field of view, and perspective or orthographic projection type for viewing 3D designs.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| name | No | Camera name | Camera |
| position | No | Camera position | |
| target | No | Camera target | |
| type | No | Camera type | perspective |
| fov | No | Field of view (degrees) |
Implementation Reference
- src/tools/lighting-camera-tools.js:69-92 (handler)The core handler function for the 'addCamera' MCP tool. It processes input parameters and returns a mock success response simulating the creation of a camera in a Spline.design scene.async ({ sceneId, name, position, target, type, fov }) => { try { // This would normally call the Spline API to create a camera // For now, just return a success message return { content: [ { type: 'text', text: `Camera "${name}" created successfully` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating camera: ${error.message}` } ], isError: true }; } }
- Zod validation schema defining the input parameters for the addCamera tool, including sceneId, camera name, position, target, type, and field of view.{ sceneId: z.string().min(1).describe('Scene ID'), name: z.string().optional().default('Camera').describe('Camera name'), position: z.object({ x: z.number().default(0).describe('X position'), y: z.number().default(0).describe('Y position'), z: z.number().default(5).describe('Z position'), }).optional().describe('Camera position'), target: z.object({ x: z.number().default(0).describe('X target'), y: z.number().default(0).describe('Y target'), z: z.number().default(0).describe('Z target'), }).optional().describe('Camera target'), type: z.enum(['perspective', 'orthographic']).optional().default('perspective') .describe('Camera type'), fov: z.number().min(1).max(179).optional().default(45).describe('Field of view (degrees)'), }, async ({ sceneId, name, position, target, type, fov }) => {
- src/tools/lighting-camera-tools.js:50-93 (registration)Direct registration of the 'addCamera' tool using server.tool(), including inline schema and handler within the registerLightingCameraTools function.server.tool( 'addCamera', { sceneId: z.string().min(1).describe('Scene ID'), name: z.string().optional().default('Camera').describe('Camera name'), position: z.object({ x: z.number().default(0).describe('X position'), y: z.number().default(0).describe('Y position'), z: z.number().default(5).describe('Z position'), }).optional().describe('Camera position'), target: z.object({ x: z.number().default(0).describe('X target'), y: z.number().default(0).describe('Y target'), z: z.number().default(0).describe('Z target'), }).optional().describe('Camera target'), type: z.enum(['perspective', 'orthographic']).optional().default('perspective') .describe('Camera type'), fov: z.number().min(1).max(179).optional().default(45).describe('Field of view (degrees)'), }, async ({ sceneId, name, position, target, type, fov }) => { try { // This would normally call the Spline API to create a camera // For now, just return a success message return { content: [ { type: 'text', text: `Camera "${name}" created successfully` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating camera: ${error.message}` } ], isError: true }; } } );
- src/index.js:98-98 (registration)Top-level registration of lighting and camera tools (including addCamera) by calling registerLightingCameraTools on the main MCP server instance.registerLightingCameraTools(server);