Skip to main content
Glama

load_sprite

Load a texture into a Sprite2D node within a Godot scene to display images in your game project.

Instructions

Load a sprite into a Sprite2D node

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectPathYesPath to the Godot project directory
scenePathYesPath to the scene file (relative to project)
nodePathYesPath to the Sprite2D node (e.g., "root/Player/Sprite2D")
texturePathYesPath to the texture file (relative to project)

Implementation Reference

  • Handler function that validates input parameters, checks file existences, prepares parameters, executes the 'load_sprite' Godot operation, and handles responses or errors.
    private async handleLoadSprite(args: any) {
      // Normalize parameters to camelCase
      args = this.normalizeParameters(args);
      
      if (!args.projectPath || !args.scenePath || !args.nodePath || !args.texturePath) {
        return this.createErrorResponse(
          'Missing required parameters',
          ['Provide projectPath, scenePath, nodePath, and texturePath']
        );
      }
    
      if (
        !this.validatePath(args.projectPath) ||
        !this.validatePath(args.scenePath) ||
        !this.validatePath(args.nodePath) ||
        !this.validatePath(args.texturePath)
      ) {
        return this.createErrorResponse(
          'Invalid path',
          ['Provide valid paths without ".." or other potentially unsafe characters']
        );
      }
    
      try {
        // Check if the project directory exists and contains a project.godot file
        const projectFile = join(args.projectPath, 'project.godot');
        if (!existsSync(projectFile)) {
          return this.createErrorResponse(
            `Not a valid Godot project: ${args.projectPath}`,
            [
              'Ensure the path points to a directory containing a project.godot file',
              'Use list_projects to find valid Godot projects',
            ]
          );
        }
    
        // Check if the scene file exists
        const scenePath = join(args.projectPath, args.scenePath);
        if (!existsSync(scenePath)) {
          return this.createErrorResponse(
            `Scene file does not exist: ${args.scenePath}`,
            [
              'Ensure the scene path is correct',
              'Use create_scene to create a new scene first',
            ]
          );
        }
    
        // Check if the texture file exists
        const texturePath = join(args.projectPath, args.texturePath);
        if (!existsSync(texturePath)) {
          return this.createErrorResponse(
            `Texture file does not exist: ${args.texturePath}`,
            [
              'Ensure the texture path is correct',
              'Upload or create the texture file first',
            ]
          );
        }
    
        // Prepare parameters for the operation (already in camelCase)
        const params = {
          scenePath: args.scenePath,
          nodePath: args.nodePath,
          texturePath: args.texturePath,
        };
    
        // Execute the operation
        const { stdout, stderr } = await this.executeOperation('load_sprite', params, args.projectPath);
    
        if (stderr && stderr.includes('Failed to')) {
          return this.createErrorResponse(
            `Failed to load sprite: ${stderr}`,
            [
              'Check if the node path is correct',
              'Ensure the node is a Sprite2D, Sprite3D, or TextureRect',
              'Verify the texture file is a valid image format',
            ]
          );
        }
    
        return {
          content: [
            {
              type: 'text',
              text: `Sprite loaded successfully with texture: ${args.texturePath}\n\nOutput: ${stdout}`,
            },
          ],
        };
      } catch (error: any) {
        return this.createErrorResponse(
          `Failed to load sprite: ${error?.message || 'Unknown error'}`,
          [
            'Ensure Godot is installed correctly',
            'Check if the GODOT_PATH environment variable is set correctly',
            'Verify the project path is accessible',
          ]
        );
      }
    }
  • Input schema defining the parameters for the load_sprite tool: projectPath, scenePath, nodePath, texturePath.
      type: 'object',
      properties: {
        projectPath: {
          type: 'string',
          description: 'Path to the Godot project directory',
        },
        scenePath: {
          type: 'string',
          description: 'Path to the scene file (relative to project)',
        },
        nodePath: {
          type: 'string',
          description: 'Path to the Sprite2D node (e.g., "root/Player/Sprite2D")',
        },
        texturePath: {
          type: 'string',
          description: 'Path to the texture file (relative to project)',
        },
      },
      required: ['projectPath', 'scenePath', 'nodePath', 'texturePath'],
    },
  • src/index.ts:819-843 (registration)
    Registration of the load_sprite tool in the ListToolsRequestSchema response, including name, description, and input schema.
      name: 'load_sprite',
      description: 'Load a sprite into a Sprite2D node',
      inputSchema: {
        type: 'object',
        properties: {
          projectPath: {
            type: 'string',
            description: 'Path to the Godot project directory',
          },
          scenePath: {
            type: 'string',
            description: 'Path to the scene file (relative to project)',
          },
          nodePath: {
            type: 'string',
            description: 'Path to the Sprite2D node (e.g., "root/Player/Sprite2D")',
          },
          texturePath: {
            type: 'string',
            description: 'Path to the texture file (relative to project)',
          },
        },
        required: ['projectPath', 'scenePath', 'nodePath', 'texturePath'],
      },
    },
  • src/index.ts:952-953 (registration)
    Dispatch registration in the CallToolRequestSchema handler switch statement, routing load_sprite calls to the handleLoadSprite method.
    case 'load_sprite':
      return await this.handleLoadSprite(request.params.arguments);

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/Coding-Solo/godot-mcp'

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