A safe, project-aware MCP server for GameMaker Studio
GameMaker MCP provides 15 well-named, domain-specific analysis tools with consistent verb_noun naming (gm_* prefix). All tools have descriptions (avg ~120 chars) and input schemas with type definitions. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or when to use them. Output schemas are not documented in the visible code, forcing LLMs to infer result structure. Error handling is minimal; no recovery guidance or actionable error messages visible. Tool composition is sound (each does one thing), but schema completeness and parameter documentation fall short of production baseline.
Build a project resource dependency graph with evidence and cyclic dependency groups.
Generate structured Markdown documentation for all objects, scripts, shaders, rooms, sprites, and sounds.
Audit Draw events to verify shader_set, draw_set_alpha, draw_set_color, and gpu_set_blendmode state resets.
Statically analyze one GML file or the project for functions, symbols, complexity, delimiter errors, and risky patterns.
Analyze GML code and generate Feather-compliant JSDoc headers (/// @function, /// @param, /// @returns).
Scan project GML files to detect identical contiguous code blocks (4+ lines) across objects and scripts.
Output schemas not documented. Tools return results but LLMs cannot infer field names, types, or structure. Forces LLMs to guess what data is available for downstream reasoning.
Parameter descriptions missing or minimal. 'limit' params lack range guidance (1-5000 stated in some but not all). 'includeMetadata' and 'caseSensitive' flags lack context on when to use them. LLMs cannot reason about parameter selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Scan Step, Draw, and loops for CPU/memory anti-patterns (instance_find in loops, uncached layer/asset lookups, string concats in Draw).
Preflight GML code for syntax delimiter balance ({}, (), []), deprecated builtins, assignment in conditions, and legacy argument0..15 usage.
Scan project GML code for hardcoded string literals and generate suggested localization dictionary keys.
Build object parent-child inheritance tree, list root objects, and check for cyclic parent dependencies.
Return a 0-100% health score, grade (A+ to F), and prioritized recommendations based on unused assets, performance, draw state resets, and code complexity.
Return resource, source-file, line, byte, code, event, layer, and instance statistics.
Analyze one or all shaders for syntax structure, declarations, stage interfaces, entry points, and portability warnings.
Find declarations, calls, writes, reads, and optional YY/YPP metadata references for a symbol.
Scan the project for sprites, sounds, scripts, fonts, paths, and objects not referenced in code or rooms.
No error handling or recovery guidance visible. Tools that scan large projects (gm_gml_analyze, gm_doc_export) may timeout or fail, but no error messages or retry strategies documented.
No pagination or result limits enforced in tool descriptions. Tools like gm_gml_duplicate_find and gm_doc_export may return unbounded results, risking context window exhaustion.
Tool composition: gm_project_health_score aggregates multiple concerns (unused assets, performance, draw state, complexity). Consider splitting into separate diagnostic tools so agents can compose them independently.