gm-forge-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gm-forge-mcpCreate a new project called 'MyGame' with a player object and a room."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gm-forge-mcp is an MCP server that lets an AI assistant create and edit GameMaker projects: scripts, objects, rooms, sprites, sounds, and the rest of the .yyp catalog. In practice that means you can ask Claude to scaffold a new project, import a folder of sprite frames, or rename an object everywhere it's referenced, and the project still opens in the IDE afterwards.
Early stage (0.1.0) - back up your project before letting anything write to it.
GameMaker's file format punishes sloppy edits quietly. A room missing its creationCodeFile field, or a sound whose declared sample rate doesn't match the real .wav, can look fine right up until the IDE fails to open the project or crashes. Every writer here is modeled on files GameMaker itself produced, and two tools use GameMaker's own tooling directly: lint_project runs the official headless validator (ProjectTool) and compile_project runs the real compiler (Igor), which catches actual GML errors.
Requirements
Node.js 20+
GameMaker (Windows) for
lint_project's ProjectTool check and forcompile_project. Both skip with a clear message when GameMaker isn't installed; everything else works cross-platform.
Related MCP server: GB Studio MCP Server
Install
git clone https://github.com/nicklesimba/gm-forge-mcp.git
cd gm-forge-mcp
npm install
npm run buildConfigure
Add to your MCP client config (e.g. Claude Desktop's claude_desktop_config.json):
{
"mcpServers": {
"gm-forge": {
"command": "node",
"args": ["/absolute/path/to/gm-forge-mcp/dist/index.js"]
}
}
}Tools
Projects -- create_project, list_resources, find_references, delete_resource, rename_resource, lint_project, compile_project
Groups -- add_texture_group, add_audio_group
Scripts -- add_script, edit_script, get_script_info
Objects -- add_object, add_object_event, get_object_info
Rooms -- add_room, edit_room, add_room_instance, reorder_room, move_room_relative, get_room_info, find_tile_region
Sprites -- add_sprite_from_images, edit_sprite, get_sprite_info
Tilesets -- add_tileset, edit_tileset, get_tileset_info
Sounds -- add_sound, edit_sound, get_sound_info
Shaders -- add_shader, edit_shader, get_shader_info
Fonts -- add_font, edit_font, get_font_info
Notes -- add_note, get_note_info
Extensions -- add_extension, get_extension_info
Particle systems -- add_particle_system, get_particle_system_info
Animation curves -- add_anim_curve, get_anim_curve_info
delete_resource and rename_resource search the whole project for references before touching anything.
Testing
npm testThe suite checks every writer's output against reference schemas captured from real GameMaker files, simulates files GameMaker has resaved (trailing commas and all), and runs live ProjectTool/Igor checks when those are installed. CI runs on a Windows runner without GameMaker, so the live checks skip there and the summary reports the skip count. Every resource type has also been loaded in the actual IDE, including a project created from scratch by create_project.
See also
GameMaker is required to use any of this. Thanks to YoYo Games for making game-making more accessible for two decades and counting!
@petah/gamemaker-mcp covers GML function/API reference lookup, which this project doesn't.
License
MIT - see LICENSE.
Available Tools
15 toolsadd_noteA
Create a new Notes resource (plain-text project documentation, never compiled into the game) and register it in the project
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Plain-text content of the note | |
| noteName | Yes | Name of the note to create | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral burden. It mentions 'register it in the project' implying side effects, but does not disclose what happens if the note name already exists, whether permissions are required, or any other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the action. It includes a parenthetical clarifying the nature of the note. Avoids redundancy and unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description covers the purpose but lacks details on return value, error handling, prerequisites, or behavior when inputs are invalid. It is adequate but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal extra meaning beyond what the schema already provides for parameters like content, noteName, and projectDir. It does not elaborate on format, constraints, or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create', specifies the resource 'Notes resource', clarifies it's 'plain-text project documentation, never compiled into the game', and distinguishes it from siblings like add_script. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for adding notes to a project but provides no explicit guidance on when to use it versus alternatives (e.g., add_script), or when not to use it. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_scriptA
Create a new GML script and register it in the YYP
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | GML code for the script | // TODO |
| projectDir | Yes | Absolute path to the GameMaker project directory | |
| scriptName | Yes | Name of the script to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'create and register' but does not disclose side effects, permission requirements, reversibility, or whether overwriting occurs. This is insufficient for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with key info. However, it omits important behavioral details, making it slightly under-specified for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should cover return values and side effects. It does not, leaving the agent with gaps about what happens after creation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no extra meaning beyond the schema's own parameter descriptions. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (a new GML script), with registration context. It distinguishes from sibling tools which are mostly read or other creation operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating scripts, but lacks explicit guidance on when not to use it or mention of alternatives. Nonetheless, the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_texture_groupB
Create a new, additional texture group in the project (beyond the default one auto-provisioned for sprites/fonts)
| Name | Required | Description | Default |
|---|---|---|---|
| groupName | Yes | Name of the new texture group to create | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals the tool creates an additional group beyond the default, but omits side effects, authorization needs, or impact on existing groups. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and efficient. Every word serves the purpose, no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations, output schema, or additional context, the description is minimal. It lacks details about return values, default behavior, prerequisites, or side effects. Incomplete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description does not need to add much. The description does not reference or elaborate on the parameters, providing no added value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Create') and resource ('texture group'), and distinguishes it from the default group. It's a specific verb+resource pair that differentiates from sibling tools like get_note_info or compile_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating additional texture groups beyond the default, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with alternative creation tools like add_script.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: the tool briefly launches the built game and kills it immediately, the project's code runs, and it gracefully skips if the runtime is not installed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and every sentence adds value. It efficiently conveys purpose, behavioral notes, prerequisites, and platform constraints in a single paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and no output schema, the description is complete. It covers purpose, differentiation, behavioral transparency, prerequisites, warnings, and platform. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (projectDir) with 100% schema description coverage. The tool description does not add additional meaning to the parameter beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies that the tool compiles the project using GameMaker's real build tool (Igor) to catch real GML errors like duplicate function names and syntax errors, and explicitly distinguishes it from lint_project which only does structural checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool (for real errors not caught by lint_project) and provides important prerequisites (GameMaker runtime installed) and warnings (only compile trusted projects, Windows only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
Create a new GameMaker YYP project at the specified directory if it does not exist
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name for the YYP | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It states the creation happens conditionally ('if it does not exist'), but does not disclose what happens if the directory already exists (error, overwrite, skip) or any side effects like file modifications. Basic behavior is conveyed but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that conveys the core operation without unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description omits any mention of return values, success indicators, or error handling. For a creation tool, the user needs to know what the tool returns (e.g., project path) and how it behaves on failure. This is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond 'specified directory' and 'Project name'βit does not elaborate on format, validation, or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create'), the resource ('GameMaker YYP project'), and the condition ('if it does not exist'). It distinguishes from sibling tools like compile_project or list_resources, all of which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies a pre-check for directory existence but provides no context about prerequisites or scenarios where other tools are preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_spriteA
Edit an existing sprite's origin, collision kind, and/or bounding box -- not its frame data
| Name | Required | Description | Default |
|---|---|---|---|
| xorigin | No | New origin X coordinate in pixels (also sets the origin preset to Custom) | |
| yorigin | No | New origin Y coordinate in pixels (also sets the origin preset to Custom) | |
| bboxMode | No | New bounding box mode (0=Automatic, 1=Full Image, 2=Manual) | |
| bbox_top | No | New bounding box top edge (used when bboxMode=2) | |
| bbox_left | No | New bounding box left edge (used when bboxMode=2) | |
| bbox_right | No | New bounding box right edge (used when bboxMode=2) | |
| projectDir | Yes | Absolute path to the GameMaker project directory | |
| spriteName | Yes | Name of the existing sprite to edit | |
| bbox_bottom | No | New bounding box bottom edge (used when bboxMode=2) | |
| collisionKind | No | New collision mask kind (0=Precise, 1=Rectangle, 2=Ellipse, 3=Diamond, ...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the action and what is modified, but does not mention side effects, permissions, error handling, or whether changes are saved automatically. This leaves some behavioral gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose and an important exclusion. It is front-loaded, with no wasted words, and every phrase adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, 2 required, no output schema), the description is minimal but covers the essential purpose. It does not explain return values or error states, but agents can infer behavior from similar tools. More details could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 10 parameters with descriptions (100% coverage). The tool description adds value by grouping parameters semantically and noting that xorigin/yorigin set the origin preset to Custom. This extra context goes beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Edit') and resource ('existing sprite'), and explicitly lists which properties can be edited (origin, collision kind, bounding box) while excluding frame data. This clearly distinguishes it from sibling tools like get_sprite_info (read-only) and other edit tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear scope: editing origin, collision kind, and bounding box. It also explicitly states what it does NOT do ('not its frame data'), helping agents decide when to use it. However, it does not mention alternatives or when not to use it beyond the negative scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | World X coordinate to query | |
| y | Yes | World Y coordinate to query | |
| roomName | Yes | Name of the room to inspect | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses the tool decodes compressed tile data and reports regions, but lacks details on permissions, side effects, or output specifics. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, followed by technical context and usage guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description omits details about the output format (e.g., what the region data looks like). It also lacks mention of error handling or edge cases. Reasonably complete for a simple query, but could be better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add significant new meaning beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks if a world point is on a real tile and reports the connected tile region. It distinguishes from instance lists subtly, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool to confirm a spot is inside tile-drawn geometry before placing something, contrasting with instance checks. It provides clear context but does not explicitly exclude other tools or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_note_infoA
Get an existing note's content
| Name | Required | Description | Default |
|---|---|---|---|
| noteName | Yes | Name of the note to inspect | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It implies read-only access but does not confirm safety, permissions, or side effects. Adequate for a simple getter but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loaded with essential information. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description is mostly complete. Could optionally mention return format but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage with descriptions for both parameters. The description adds no additional meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('get'), the resource ('note'), and that it retrieves existing note content. It distinguishes from sibling 'add_note' which creates a note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines provided on when to use this tool versus alternatives like 'add_note' or other info tools. Lacks any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_object_infoA
Get detailed info about an existing object: sprite, parent, physics, and its full event list with human-readable event names
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | Name of the object to inspect | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses what information is returned (sprite, parent, physics, event list), implying a read operation. However, it does not mention any side effects, permissions, or response format. The description adds some behavioral context but is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the purpose and lists key information categories. No redundant words, perfectly concise for the information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only info tool with 2 required parameters and no output schema, the description adequately describes what data is returned. It could mention response format or error conditions, but given the simplicity and lack of annotations, it is complete enough for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description lists the types of info retrieved but does not add additional meaning to the parameters themselves. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves detailed info about an existing object including sprite, parent, physics, and event list. It uses a specific verb ('Get') and resource ('existing object'), and distinguishes from sibling tools like get_sprite_info or get_room_info by focusing on object-specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, limitations, or exclusions. The description only lists what info is retrieved, but does not provide any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_room_infoA
Get detailed info about an existing room: dimensions, persistence, layers, and every placed instance with its position
| Name | Required | Description | Default |
|---|---|---|---|
| roomName | Yes | Name of the room to inspect | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation via 'Get', and lists the returned data. With no annotations, it carries the full burden; 'Get' implies no side effects, but could explicitly state it doesn't modify anything. However, the verb is sufficiently clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and efficiently lists the return categories. Every part is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers what the tool returns. However, it does not mention prerequisites (e.g., room must exist) or error conditions, but for a straightforward read tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have descriptions in the schema. The description adds no additional semantic value beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get detailed info' and specifies the resource type 'existing room'. It enumerates the specific information returned (dimensions, persistence, layers, instances with positions), distinguishing it from sibling tools like get_note_info or get_object_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when detailed room info is needed, but does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusions or context for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sprite_infoA
Get detailed info about an existing sprite: real dimensions, frame count, origin, collision settings
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Absolute path to the GameMaker project directory | |
| spriteName | Yes | Name of the sprite to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool is read-only ('get info') and lists the output fields, providing clear behavioral expectation. Could mention error conditions (e.g., sprite not found) but not necessary for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states purpose and lists key info. No extraneous words, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple complexity and full schema coverage, the description adequately lists output fields. It lacks mention of error handling or return structure, but for a straightforward read tool this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described (projectDir and spriteName). The description adds no additional meaning beyond the schema; it lists output fields but does not elaborate on parameters themselves. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed info about an existing sprite' and lists specific attributes (dimensions, frame count, origin, collision settings). This verb-resource pair is precise and distinguishes from sibling tools like get_object_info or get_room_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when needing sprite info) but provides no explicit guidance on when not to use or alternatives. Sibling tools like edit_sprite or list_resources exist but are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses that the tool performs validation checks on projects without destructive actions, clearly stating what it validates. This gives the agent a good behavioral expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and usage. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema), the description fully covers what the tool does and why to use it. It is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter. The description does not add extra details about the parameter beyond what the schema provides, so it meets the baseline without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb 'Validate' and a specific resource 'whole project', listing exact types of issues checked (dangling references, orphaned resources, etc.). This distinguishes it from sibling tools like compile_project or list_resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to 'run this before trusting a project is safe to open', providing clear when-to-use guidance. It does not explicitly mention when not to use or alternatives, but the context of sibling tools implies appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resourcesA
List resource names by type from the YYP file
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Type of resources to list (optional) | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adequately indicates a read operation ('list'), but does not disclose potential performance implications, ordering, or that only names are returned. It is straightforward but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 9 words that is maximally concise, front-loading the verb and core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description is adequate but could be improved by clarifying that omitting 'kind' lists all resource types, and by hinting at the output format (e.g., array of names).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds 'by type' which aligns with the kind parameter, but does not add significant meaning beyond the property descriptions already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (resource names), and the context (from the YYP file). It also implies filtering by type via the optional 'kind' parameter, distinguishing it from sibling tools that likely return detailed info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Sibling tools like get_*_info suggest that list_resources is for listing names, but no when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_room_relativeA
Move a room immediately before or after another named room in the room order
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | Whether to place it before or after the target room | |
| roomName | Yes | Name of the room to move | |
| projectDir | Yes | Absolute path to the GameMaker project directory | |
| targetRoomName | Yes | Room to position it relative to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states 'move' without disclosing side effects, reversibility, or prerequisites. For a mutation tool, more behavioral detail is needed to inform the agent of potential impacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clear and direct. Every word adds value: verb, resource, and context of movement relative to another room.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters, no output schema, and no annotations, the description covers the basic purpose but lacks details on prerequisites (e.g., projectDir validity), error cases, or permanent effects. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The tool description adds no additional meaning beyond the schema, earning the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'move', resource 'room', and context 'immediately before or after another named room in the room order'. It effectively distinguishes from sibling tool 'reorder_room' which likely handles absolute positioning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not or alternative tools mentioned. The description implies usage for relative positioning, differentiating it from possible absolute reordering, but lacks clear guidance on when to use this vs other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_roomB
Move a room to an absolute position in the game's room order (what room_goto_next/previous follow at runtime)
| Name | Required | Description | Default |
|---|---|---|---|
| newIndex | Yes | New 0-based position in the room order | |
| roomName | Yes | Name of the room to move | |
| projectDir | Yes | Absolute path to the GameMaker project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially discloses behavior by noting the effect on runtime room order. However, it does not mention side effects, permissions, or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the verb and resource. No redundant words, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately explains the tool's purpose and runtime impact, but lacks usage guidelines, error handling context, and prerequisites. Given the lack of output schema and annotations, more detail would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 3 parameters (100% coverage). The description adds no extra meaning beyond the schema, only hinting that 'newIndex' is an absolute position.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (move a room to an absolute position) and provides runtime context (room_goto_next/previous). It implicitly differentiates from the sibling 'move_room_relative' by specifying 'absolute', but does not explicitly contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'move_room_relative'. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
v0.1.0- Removed
add_anim_curve - Removed
add_audio_group - Removed
add_extension - Removed
add_font - Removed
add_object - Removed
add_object_event - Removed
add_particle_system - Removed
add_room - Removed
add_room_instance - Removed
add_shader - Removed
add_sound - Removed
add_sprite_from_images - Removed
add_tileset - Added
compile_project - Removed
edit_font - Removed
edit_room - Removed
edit_script - Removed
edit_shader - Removed
edit_sound - Removed
edit_tileset - Removed
get_extension_info - Removed
get_font_info - Removed
get_particle_system_info - Removed
get_script_info - Removed
get_shader_info - Removed
get_sound_info - Removed
get_tileset_info - Added
lint_project - Added
list_resources
38 tool updates
v0.1.0- First observed
add_anim_curve - First observed
add_audio_group - First observed
add_extension - First observed
add_font - First observed
add_note - First observed
add_object - First observed
add_object_event - First observed
add_particle_system - First observed
add_room - First observed
add_room_instance - First observed
add_script - First observed
add_shader - First observed
add_sound - First observed
add_sprite_from_images - First observed
add_texture_group - First observed
add_tileset - First observed
create_project - First observed
edit_font - First observed
edit_room - First observed
edit_script - First observed
edit_shader - First observed
edit_sound - First observed
edit_sprite - First observed
edit_tileset - First observed
find_tile_region - First observed
get_extension_info - First observed
get_font_info - First observed
get_note_info - First observed
get_object_info - First observed
get_particle_system_info - First observed
get_room_info - First observed
get_script_info - First observed
get_shader_info - First observed
get_sound_info - First observed
get_sprite_info - First observed
get_tileset_info - First observed
move_room_relative - First observed
reorder_room
TDQS
Scored across 15 tools
Each tool targets a distinct resource or action: separate info tools for notes, objects, rooms, sprites; distinct operations for editing, compiling, listing, creating, reordering, and linting. No two tools have overlapping purposes.
Naming uses a verb_noun pattern but with varied verbs (get, edit, compile, add, reorder, move, find, lint). While readable, the lack of a single consistent prefix style (e.g., all get_ or all add_) creates minor confusion.
With 15 tools, the set covers project creation, resource management, information retrieval, and validation. Slightly on the higher side but well-scoped for a GameMaker development assistant.
Covers creation, reading, updating (limited), and validation. Missing delete/removal tools and note/object editing capabilities. Agents can perform core workflows but may encounter dead ends when needing to modify certain resources.
Maintenance
Related MCP Connectors
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Generate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices.
Publish HTML5 browser games from your AI assistant β upload, release, stats. You keep the rights.
Build, version, review, and export websites, web apps, and games from a conversation.
Related MCP Servers
- FlicenseAqualityFmaintenanceEnables AI-assisted GameMaker project development in Cursor IDE, allowing users to create projects, add scripts, objects, and sprites using natural language.510-
- AlicenseNot gradedqualityDmaintenanceEnables creation, validation, and manipulation of Game Boy Studio projects through the Model Context Protocol, allowing AI agents to generate game assets, scenes, and actors.90 npm17MIT
- AlicenseCqualityDmaintenanceEnables AI assistants to interact with and manipulate Godot game engine projects, including creating projects, launching editor, managing scenes and nodes.12379 npm1MIT
- AlicenseBqualityCmaintenanceEnables AI-assisted Godot 4.x game development within a secure sandbox, covering project management, file operations, asset discovery, GDScript generation, and optional runtime execution.401MIT