gm-forge-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_projectB | Create a new GameMaker YYP project at the specified directory if it does not exist |
| add_texture_groupB | Create a new, additional texture group in the project (beyond the default one auto-provisioned for sprites/fonts) |
| add_audio_group | Create a new, additional audio group in the project (beyond the default one auto-provisioned for sounds) |
| add_scriptA | Create a new GML script and register it in the YYP |
| edit_script | Edit an existing script's GML code, either replacing it entirely or appending to it |
| add_object | Create a GameMaker object .yy file with optional event stubs and register it in the project |
| add_object_event | Add a new event to an existing object, with its own GML code |
| add_sprite_from_images | Import frames from a directory into a new sprite and register it in the project |
| add_room | Create a GameMaker room with default instance and background layers, register it in the project and room order |
| edit_room | Edit an existing room's width, height, and/or persistent flag |
| add_room_instance | Place an instance of an existing object into an existing room at a given position |
| reorder_roomB | Move a room to an absolute position in the game's room order (what room_goto_next/previous follow at runtime) |
| move_room_relativeA | Move a room immediately before or after another named room in the room order |
| add_noteA | Create a new Notes resource (plain-text project documentation, never compiled into the game) and register it in the project |
| get_note_infoA | Get an existing note's content |
| get_object_infoA | Get detailed info about an existing object: sprite, parent, physics, and its full event list with human-readable event names |
| get_room_infoA | Get detailed info about an existing room: dimensions, persistence, layers, and every placed instance with its position |
| find_tile_regionA | Check whether a world point in a room sits on a real tile, decoding GameMaker's compressed tile layer data (invisible to get_room_info's instance list). If occupied, reports the connected region of tiles it belongs to -- use this to confirm a spot is actually inside tile-drawn geometry (a building, a floor) before placing something there, not just clear of instances. |
| get_sprite_infoA | Get detailed info about an existing sprite: real dimensions, frame count, origin, collision settings |
| edit_spriteA | Edit an existing sprite's origin, collision kind, and/or bounding box -- not its frame data |
| get_script_info | Get an existing script's current GML code |
| add_shader | Create a new vertex+fragment shader pair (GLSL ES) and register it in the project |
| get_shader_info | Get an existing shader's vertex and fragment code |
| edit_shader | Edit an existing shader's vertex and/or fragment code |
| add_sound | Import a .wav or .ogg (Vorbis) file as a new sound and register it in the project. Metadata (sample rate, channels, duration) is derived from the real file; .mp3 isn't supported yet |
| get_sound_info | Get an existing sound's file, volume, and playback settings |
| edit_sound | Edit an existing sound's volume and/or preload flag (not its audio metadata, which is always derived from the real file) |
| add_font | Create a new font referencing an installed system font by name and register it in the project |
| get_font_info | Get an existing font's system font name, size, and style |
| edit_font | Edit an existing font's system font name, size, and/or style |
| add_tileset | Create a new tile set from an existing sprite (add the sprite first with add_sprite_from_images) and register it in the project. Column/row/tile counts are computed from the sprite's real dimensions. |
| get_tileset_info | Get an existing tile set's source sprite, tile dimensions, and tile count |
| edit_tileset | Edit an existing tile set's dimensions, spacing, or offset -- column/tile counts are recomputed from the real source sprite |
| add_extension | Create a new, empty extension shell (matches File > New Extension before any functions/constants/files are added in the IDE) and register it in the project |
| get_extension_info | Get an existing extension's version and file count |
| add_particle_system | Create a new particle system with one default emitter and register it in the project |
| get_particle_system_info | Get an existing particle system's emitter count and names |
| add_anim_curve | Create a new animation curve with one straight-line channel from (0,0) to (1,1) and register it in the project |
| get_anim_curve_info | Get an existing animation curve's channel count, names, and point counts |
| find_references | Find every place a resource is referenced across the whole project (rooms placing instances, other objects parenting to it, GML code calling it, etc.) -- use before deleting or renaming anything |
| delete_resource | Delete an existing resource. Refuses if it's still referenced elsewhere in the project unless force=true |
| rename_resource | Rename an existing resource, rewriting every reference to it across the whole project (other resources' name/path references, GML code) so nothing is left dangling |
| lint_projectA | Validate a whole project for dangling references, orphaned resources, missing folder registrations, missing event code files, and sound/sprite metadata that doesn't match the real underlying file -- run this before trusting a project is safe to open |
| compile_projectA | Actually compile the project with GameMaker's real build tool (Igor) to catch real GML errors -- duplicate function names, syntax errors -- that structural checks like lint_project can't see. NOTE: a successful compile briefly LAUNCHES the built game (then kills it immediately), so the project's own code runs; only compile projects you trust. Requires the GameMaker runtime to be installed (skips gracefully with a clear message if not). Windows only. |
| list_resourcesA | List resource names by type from the YYP file |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nicklesimba/gm-forge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server