Skip to main content
Glama

Godot Sentinel MCP

by Snack-JPG
create-test-project.shโ€ข4.6 kB
#!/bin/bash echo "๐ŸŽฎ Creating Test Godot Project" echo "==============================" PROJECT_DIR="../test-game" if [ -d "$PROJECT_DIR" ]; then echo "โš ๏ธ Test project already exists at $PROJECT_DIR" read -p "Remove and recreate? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then rm -rf "$PROJECT_DIR" else echo "Skipping project creation" exit 0 fi fi echo "1. Creating project structure..." mkdir -p "$PROJECT_DIR"/{scripts/combat,scenes,data/movesets,test} echo "2. Creating project.godot..." cat > "$PROJECT_DIR/project.godot" << 'EOF' ; Engine configuration file. [application] config/name="Sentinel Test Game" config/features=PackedStringArray("4.3") [rendering] renderer/rendering_method="mobile" EOF echo "3. Creating test script with intentional error..." cat > "$PROJECT_DIR/scripts/combat/fighter.gd" << 'EOF' extends Node class_name Fighter var health: int = 100 var damage: int = 0 func _ready(): setup_fighter() # This line has an error - function doesn't exist damage = get_damage_value() # ERROR: This function doesn't exist! print("Fighter ready with health: ", health) func setup_fighter(): health = 100 print("Fighter setup complete") func calculate_damage() -> int: return 25 func take_damage(amount: int): health -= amount if health <= 0: print("Fighter defeated!") EOF echo "4. Creating a working test script..." cat > "$PROJECT_DIR/scripts/combat/working_fighter.gd" << 'EOF' extends Node class_name WorkingFighter var health: int = 100 var damage: int = 0 func _ready(): setup_fighter() damage = calculate_damage() # This function exists print("WorkingFighter ready with health: ", health) func setup_fighter(): health = 100 print("WorkingFighter setup complete") func calculate_damage() -> int: return 25 EOF echo "5. Creating simple test scene..." cat > "$PROJECT_DIR/scenes/test_scene.tscn" << 'EOF' [gd_scene load_steps=2 format=3] [ext_resource type="Script" path="res://scripts/combat/fighter.gd" id="1"] [node name="TestScene" type="Node"] [node name="Fighter" type="Node" parent="."] script = ExtResource("1") EOF echo "6. Creating test moveset data..." cat > "$PROJECT_DIR/data/movesets/basic_attacks.json" << 'EOF' { "name": "Basic Attacks", "moves": [ { "name": "punch", "damage": 10, "startup": 5, "active": 3, "recovery": 7 }, { "name": "kick", "damage": 15, "startup": 8, "active": 2, "recovery": 10 } ] } EOF echo "7. Setting up gdUnit4 (mock structure for testing)..." mkdir -p "$PROJECT_DIR/addons/gdUnit4/bin" cat > "$PROJECT_DIR/addons/gdUnit4/bin/gdUnit4.gd" << 'EOF' # Mock gdUnit4 runner for testing purposes extends SceneTree func _init(): print("=== Mock gdUnit4 Test Runner ===") print("Running tests...") # Simulate running tests and finding the error in fighter.gd print("Loading test scene: res://scenes/test_scene.tscn") print("ERROR: Invalid call. Nonexistent function 'get_damage_value' in base 'Node'.") print("At: res://scripts/combat/fighter.gd:9 @ _ready()") print("") print("Test Results:") print(" 1 test failed") print(" 0 tests passed") print("=== Test Run Complete ===") # Exit with failure code quit(1) EOF echo "8. Creating basic unit test..." cat > "$PROJECT_DIR/test/fighter_test.gd" << 'EOF' # Basic test file (gdUnit4 format) extends GdUnitTestSuite func test_fighter_creation(): var fighter = preload("res://scripts/combat/working_fighter.gd").new() assert_not_null(fighter) assert_eq(fighter.health, 100) func test_damage_calculation(): var fighter = preload("res://scripts/combat/working_fighter.gd").new() var damage = fighter.calculate_damage() assert_eq(damage, 25) EOF echo "" echo "โœ… Test Godot project created at: $PROJECT_DIR" echo "" echo "Project structure:" echo " ๐Ÿ“ $PROJECT_DIR/" echo " โ”œโ”€โ”€ ๐Ÿ“„ project.godot" echo " โ”œโ”€โ”€ ๐Ÿ“ scripts/combat/" echo " โ”‚ โ”œโ”€โ”€ ๐Ÿ› fighter.gd (has error)" echo " โ”‚ โ””โ”€โ”€ โœ… working_fighter.gd (works)" echo " โ”œโ”€โ”€ ๐Ÿ“ scenes/" echo " โ”‚ โ””โ”€โ”€ ๐Ÿ“„ test_scene.tscn" echo " โ”œโ”€โ”€ ๐Ÿ“ data/movesets/" echo " โ”‚ โ””โ”€โ”€ ๐Ÿ“„ basic_attacks.json" echo " โ””โ”€โ”€ ๐Ÿ“ addons/gdUnit4/" echo "" echo "Next steps:" echo "1. Update .env file: GODOT_PROJECT_ROOT=$PROJECT_DIR" echo "2. Run: sentinel test (should find the error)" echo "3. Run: sentinel ctx res://scripts/combat/fighter.gd 9"

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/Snack-JPG/Godot-Sentinel-MCP'

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