Skip to main content
Glama

get_camera_distance

Measure the current camera distance from the origin in 3D scenes. Use this tool to query the dolly position before making relative adjustments to maintain spatial accuracy.

Instructions

Get the current camera distance from origin (dolly position). Query this before relative distance changes to ensure accuracy. For absolute changes, you may use recently queried state from context if no manual interactions occurred.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • server.js:1710-1757 (registration)
    Registration of the 'get_camera_distance' tool with the MCP server, including title, description, input schema, and handler function
    mcpServer.registerTool( 'get_camera_distance', { title: 'Get Camera Distance', description: 'Get the current camera distance from origin (dolly position). ' + 'Query this before relative distance changes to ensure accuracy. ' + 'For absolute changes, you may use recently queried state from context if no manual interactions occurred.', inputSchema: {} }, async () => { const sessionId = getCurrentSessionId(); if (!sessionId) { return { content: [ { type: 'text', text: 'Error: No active session found.' } ], isError: true }; } try { const { state, metadata } = await getState(sessionId); const distance = state.camera?.distance ?? 0; return { content: [ { type: 'text', text: formatStateResponse(distance.toString(), 'Camera distance', sessionId, metadata) } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error retrieving camera distance: ${error.message}` } ], isError: true }; } } );
  • Handler function for get_camera_distance tool - retrieves current camera distance from browser state via WebSocket communication and returns formatted response with metadata
    async () => { const sessionId = getCurrentSessionId(); if (!sessionId) { return { content: [ { type: 'text', text: 'Error: No active session found.' } ], isError: true }; } try { const { state, metadata } = await getState(sessionId); const distance = state.camera?.distance ?? 0; return { content: [ { type: 'text', text: formatStateResponse(distance.toString(), 'Camera distance', sessionId, metadata) } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error retrieving camera distance: ${error.message}` } ], isError: true }; } }
  • Helper function getState() - queries state from browser via WebSocket with timeout handling, returns state with metadata (source, timestamp, cache status)
    async function getState(sessionId) { let state; let source; let wasCached = false; // Always query browser for current state try { state = await queryStateFromBrowser(sessionId); source = 'fresh'; } catch (error) { // If query fails, fall back to cache if available (browser may be disconnected) const cached = sessionStateCache.get(sessionId); if (cached) { console.warn(`Browser query failed for session ${sessionId}, returning cached state: ${error.message}`); state = cached.state; source = 'cache'; wasCached = true; } else { // No cache available, throw error throw new Error(`Unable to retrieve state: ${error.message}. Browser may be disconnected.`); } } // Return state with metadata return { state, metadata: { source, wasCached, timestamp: new Date().toISOString() } }; }
  • Helper function formatStateResponse() - formats state query responses with property name, session ID, and metadata including staleness warnings
    function formatStateResponse(value, propertyName, sessionId, metadata) { const timestamp = metadata.timestamp; const source = metadata.source; const stalenessWarning = metadata.wasCached ? ' (using cached state - browser may be disconnected)' : ''; return `${propertyName}: ${value} (queried at ${timestamp}, source: ${source}${stalenessWarning})`; }
  • Helper function getCurrentSessionId() - retrieves the current session ID from either STDIO mode or HTTP mode context
    function getCurrentSessionId() { if (isStdioMode) { return STDIO_SESSION_ID; } else { return sessionContext.getStore(); } }

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/aidenlab/hello3dmcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server