Skip to main content
Glama

godot_create_project

Create a new Godot project with custom display name, directory structure, and optional executable path for game development setup.

Instructions

Create a new Godot project, create common folders, and set the project display name.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_nameYesDisplay name for the Godot project.
parent_directoryYesDirectory where the new project folder should be created.
folder_nameNoOptional folder name override. Defaults to a snake_case form of project_name.
godot_executableNoOptional explicit path to the Godot executable or .app bundle.

Implementation Reference

  • The `GodotController.create_project` method implements the logic for creating a new Godot project directory, common folders, and initializing the project via a bootstrap script.
    def create_project(
        self,
        project_name: str,
        parent_directory: str,
        folder_name: str | None = None,
        godot_executable: str | None = None,
    ) -> dict[str, Any]:
        project_name = project_name.strip()
        if not project_name:
            raise GodotError("`project_name` is required.")
    
        parent_dir = Path(parent_directory).expanduser().resolve()
        parent_dir.mkdir(parents=True, exist_ok=True)
    
        final_folder_name = snake_case_name(folder_name or project_name, default="godot_project")
        project_dir = parent_dir / final_folder_name
        if project_dir.exists():
            contents = list(project_dir.iterdir())
            if contents and not (project_dir / "project.godot").exists():
                raise GodotError(
                    f"{project_dir} already exists and is not an empty Godot project directory."
                )
        project_dir.mkdir(parents=True, exist_ok=True)
    
        for child in ("scenes", "scripts", "assets"):
            (project_dir / child).mkdir(exist_ok=True)
    
        project_file = project_dir / "project.godot"
        if not project_file.exists():
            project_file.touch()
    
        executable, version = resolve_godot_executable(godot_executable)
        _run_godot_script(
            executable=executable,
            project_dir=project_dir,
            script_name="bootstrap_project.gd",
            user_args=["--project-name", project_name],
        )
    
        return {
            "project_name": project_name,
            "project_path": str(project_dir),
            "project_file": str(project_file),
            "godot_executable": str(executable),
            "godot_version": version,
        }
  • The `godot_create_project` tool is registered in `GodotMcpServer._build_tools` in `src/godot_mcp/server.py`, where it is mapped to `self.controller.create_project`.
    ToolDefinition(
        name="godot_create_project",
        description="Create a new Godot project, create common folders, and set the project display name.",
        input_schema={
            "type": "object",
            "properties": {
                "project_name": {
                    "type": "string",
                    "description": "Display name for the Godot project.",
                },
                "parent_directory": {
                    "type": "string",
                    "description": "Directory where the new project folder should be created.",
                },
                "folder_name": {
                    "type": "string",
                    "description": "Optional folder name override. Defaults to a snake_case form of project_name.",
                },
                "godot_executable": {
                    "type": "string",
                    "description": "Optional explicit path to the Godot executable or .app bundle.",
                },
            },
            "required": ["project_name", "parent_directory"],
            "additionalProperties": False,
        },
        handler=lambda args: self.controller.create_project(
            project_name=args["project_name"],
            parent_directory=args["parent_directory"],
            folder_name=args.get("folder_name"),
            godot_executable=args.get("godot_executable"),
        ),
    ),

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

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