Skip to main content
Glama

run_project

Launch and execute Godot game projects to capture runtime output and debug information for development testing.

Instructions

Run the Godot project and capture output

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectPathYesPath to the Godot project directory
sceneNoOptional: Specific scene to run

Implementation Reference

  • The handler function for the 'run_project' tool. Validates input, spawns a Godot process in debug mode (-d flag), captures stdout and stderr into activeProcess for later retrieval via get_debug_output, handles process events.
    private async handleRunProject(args: any) { // Normalize parameters to camelCase args = this.normalizeParameters(args); if (!args.projectPath) { return this.createErrorResponse( 'Project path is required', ['Provide a valid path to a Godot project directory'] ); } if (!this.validatePath(args.projectPath)) { return this.createErrorResponse( 'Invalid project path', ['Provide a valid path 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', ] ); } // Kill any existing process if (this.activeProcess) { this.logDebug('Killing existing Godot process before starting a new one'); this.activeProcess.process.kill(); } const cmdArgs = ['-d', '--path', args.projectPath]; if (args.scene && this.validatePath(args.scene)) { this.logDebug(`Adding scene parameter: ${args.scene}`); cmdArgs.push(args.scene); } this.logDebug(`Running Godot project: ${args.projectPath}`); const process = spawn(this.godotPath!, cmdArgs, { stdio: 'pipe' }); const output: string[] = []; const errors: string[] = []; process.stdout?.on('data', (data: Buffer) => { const lines = data.toString().split('\n'); output.push(...lines); lines.forEach((line: string) => { if (line.trim()) this.logDebug(`[Godot stdout] ${line}`); }); }); process.stderr?.on('data', (data: Buffer) => { const lines = data.toString().split('\n'); errors.push(...lines); lines.forEach((line: string) => { if (line.trim()) this.logDebug(`[Godot stderr] ${line}`); }); }); process.on('exit', (code: number | null) => { this.logDebug(`Godot process exited with code ${code}`); if (this.activeProcess && this.activeProcess.process === process) { this.activeProcess = null; } }); process.on('error', (err: Error) => { console.error('Failed to start Godot process:', err); if (this.activeProcess && this.activeProcess.process === process) { this.activeProcess = null; } }); this.activeProcess = { process, output, errors }; return { content: [ { type: 'text', text: `Godot project started in debug mode. Use get_debug_output to see output.`, }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; return this.createErrorResponse( `Failed to run Godot project: ${errorMessage}`, [ 'Ensure Godot is installed correctly', 'Check if the GODOT_PATH environment variable is set correctly', 'Verify the project path is accessible', ] ); } }
  • Input schema definition for the run_project tool, specifying projectPath as required and scene as optional.
    name: 'run_project', description: 'Run the Godot project and capture output', inputSchema: { type: 'object', properties: { projectPath: { type: 'string', description: 'Path to the Godot project directory', }, scene: { type: 'string', description: 'Optional: Specific scene to run', }, }, required: ['projectPath'], }, },
  • src/index.ts:936-937 (registration)
    Registration of the run_project handler in the CallToolRequestSchema switch statement.
    case 'run_project': return await this.handleRunProject(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