gm-forge-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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