Skip to main content
Glama

stage_get_scene

Retrieve complete 3D scene data including objects, shots, animations, and configuration from the chuk-mcp-stage server for scene analysis or rendering workflows.

Instructions

Get complete scene data.

Returns the full scene definition including all objects, shots,
animations, and configuration.

Args:
    scene_id: Scene identifier

Returns:
    GetSceneResponse with complete Scene object

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scene_idYes

Implementation Reference

  • The stage_get_scene tool handler - gets complete scene data including objects, shots, animations, and configuration. Decorated with @requires_auth() and @tool for MCP registration.
    @requires_auth()
    @tool  # type: ignore[arg-type]
    async def stage_get_scene(scene_id: str) -> GetSceneResponse:
        """Get complete scene data.
    
        Returns the full scene definition including all objects, shots,
        animations, and configuration.
    
        Args:
            scene_id: Scene identifier
    
        Returns:
            GetSceneResponse with complete Scene object
        """
        manager = get_scene_manager()
        scene = await manager.get_scene(scene_id)
        return GetSceneResponse(scene=scene)
  • GetSceneResponse schema - defines the output structure for stage_get_scene tool, containing a complete Scene object.
    class GetSceneResponse(BaseModel):
        """Response containing complete scene."""
    
        scene: Scene
  • SceneManager.get_scene method - retrieves a scene by ID from cache or loads from storage. Used by the stage_get_scene handler.
    async def get_scene(self, scene_id: str) -> Scene:
        """Get scene by ID.
    
        Args:
            scene_id: Scene identifier
    
        Returns:
            Scene object
    
        Raises:
            ValueError: If scene not found
        """
        # Check cache first
        if scene_id in self._scenes:
            return self._scenes[scene_id]
    
        # Check if we have namespace mapping
        if scene_id not in self._scene_to_namespace:
            raise ValueError(f"Scene not found: {scene_id}")
    
        # Load from storage
        namespace_id = self._scene_to_namespace[scene_id]
        scene = await self._load_scene(namespace_id)
        self._scenes[scene_id] = scene
        return scene
  • get_scene_manager helper function - gets or creates the global SceneManager singleton used by the stage_get_scene handler.
    def get_scene_manager() -> SceneManager:
        """Get or create the global scene manager."""
        global _scene_manager
        if _scene_manager is None:
            _scene_manager = SceneManager()
        return _scene_manager
  • Scene schema - defines the complete 3D scene structure including objects, environment, lighting, shots, and baked animations returned by stage_get_scene.
    class Scene(BaseModel):
        """Complete 3D scene definition."""
    
        id: str = Field(description="Unique scene identifier")
        name: Optional[str] = None
        metadata: SceneMetadata = Field(default_factory=SceneMetadata)
    
        # Scene content
        objects: dict[str, SceneObject] = Field(default_factory=dict)
        environment: Environment = Field(default_factory=Environment)
        lighting: Lighting = Field(default_factory=Lighting)
    
        # Cinematography
        shots: dict[str, Shot] = Field(default_factory=dict)
    
        # Physics integration
        baked_animations: dict[str, BakedAnimation] = Field(default_factory=dict)

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/chrishayuk/chuk-mcp-stage'

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