GameMaker CLI + MCP server toolset
Project description
GameMaker MCP Tools
This repo provides:
gms: a Python CLI for GameMaker project operations (asset creation, maintenance, runner, etc).gms-mcp: an MCP server that exposes the same operations as MCP tools (Cursor is the primary example client).- Introspection: complete project inspection with support for all asset types (including extensions and datafiles).
- MCP Resources: addressable project index and asset graph for high-performance agent context loading.
gms-mcp-init: generates shareable MCP config files for a workspace. Now auto-detects environment variables likeGMS_MCP_GMS_PATHto include in the generated config.
Install (recommended: pipx)
pipx install gms-mcp
Local Development Setup
If you are working on the gms-mcp codebase itself, follow these steps to set up a local development environment:
-
Clone and install in editable mode:
git checkout dev pip install -e .
-
Initialize local and global MCP servers for testing: We recommend setting up two separate MCP server configurations in Cursor to test your changes:
- Global (
gms-global): For general use across all your GameMaker projects. - Local (
gms-local): Specifically for testing your current changes to the server.
Run these commands from the project root:
# Global setup (names it 'gms-global' in Cursor) gms-mcp-init --cursor-global --server-name gms-global --mode python-module --python python --non-interactive # Local setup (names it 'gms-local' in Cursor) gms-mcp-init --cursor --server-name gms-local --mode python-module --python python --non-interactive
- Global (
-
Verify in Cursor: Go to Cursor Settings > Features > MCP to see your new servers. You may need to click "Reload" or restart Cursor to see changes.
Publishing (maintainers)
Publishing is automated via GitHub Actions (PyPI Trusted Publishing) on every push to main and on tags v*.
See RELEASING.md for the one-time PyPI setup and the first manual upload helper scripts.
Use with a GameMaker project (multi-project friendly)
Run this inside each GameMaker project workspace (or repo) to generate config:
gms-mcp-init --cursor
This writes .cursor/mcp.json and attempts to auto-detect the .yyp location to set GM_PROJECT_ROOT.
For a one-time setup that works across many projects, write Cursor's global config instead:
gms-mcp-init --cursor-global
Generate example configs for other MCP-capable clients:
gms-mcp-init --vscode --windsurf --antigravity
Or generate everything at once:
gms-mcp-init --all
Monorepos / multiple .yyp
If multiple .yyp projects are detected in a workspace:
gms-mcp-initwill warn and (when interactive) prompt you to pick one.- In non-interactive environments, it defaults
GM_PROJECT_ROOTto${workspaceFolder}(safe).
Force a specific project root:
gms-mcp-init --cursor --gm-project-root path\\to\\project
Preview output without writing files:
gms-mcp-init --cursor --dry-run
Introspection Tools
The MCP server provides comprehensive project introspection capabilities:
Asset Listing (gm_list_assets)
List all assets in your project, optionally filtered by type:
- Supported types: script, object, sprite, room, sound, font, shader, path, timeline, tileset, animcurve, sequence, note, folder, extension, includedfile (datafiles)
Asset Reading (gm_read_asset)
Read the complete .yy JSON metadata for any asset by name or path.
Reference Search (gm_search_references)
Search for patterns across project files with:
- Scopes:
all,gml,yy,scripts,objects,extensions,datafiles - Modes: literal string or regex
- Options: case sensitivity, max results
Asset Graph (gm_get_asset_graph)
Build a dependency graph of assets with two modes:
- Shallow (fast): Parses
.yyfiles for structural references (parent objects, sprites, etc.) - Deep (complete): Also scans all GML code for runtime references like
instance_create,sprite_index,audio_play_sound, etc.
MCP Resources
Pre-built, cacheable project data for agents:
gms://project/index: Complete project structure (assets, folders, room order, audio/texture groups, IDE version)gms://project/asset-graph: Asset dependency graphgms://system/updates: Returns a human-readable message if a newer version ofgms-mcpis available on PyPI or GitHub.
Update Notifier
The server automatically checks for updates on startup and during common operations:
- Tool:
gm_check_updatesreturns structured update info. - Auto-check:
gm_project_infoincludes anupdatesfield. - Resource:
gms://system/updatesprovides a quick text status.
CLI usage
Run from a project directory (or pass --project-root):
gms --version
gms --project-root . asset create script my_function --parent-path "folders/Scripts.yy"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gms_mcp-0.1.16.tar.gz.
File metadata
- Download URL: gms_mcp-0.1.16.tar.gz
- Upload date:
- Size: 241.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11b362d7e6bff35dddbc06bfaf9f1a23bb0aea6e9c26622a997c6ec2a2c72696
|
|
| MD5 |
86b0d780a8a3850a9adf0e75c2964dce
|
|
| BLAKE2b-256 |
3c973150e0877455e3a9ea43d2182c494fc77feda9a878721bc47c5639d0c7dd
|
Provenance
The following attestation bundles were made for gms_mcp-0.1.16.tar.gz:
Publisher:
publish.yml on Ampersand-Game-Studios/gms-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gms_mcp-0.1.16.tar.gz -
Subject digest:
11b362d7e6bff35dddbc06bfaf9f1a23bb0aea6e9c26622a997c6ec2a2c72696 - Sigstore transparency entry: 791489085
- Sigstore integration time:
-
Permalink:
Ampersand-Game-Studios/gms-mcp@429145daf21dd2eb0356a9bfe7d53005c3b8301e -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Ampersand-Game-Studios
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@429145daf21dd2eb0356a9bfe7d53005c3b8301e -
Trigger Event:
push
-
Statement type:
File details
Details for the file gms_mcp-0.1.16-py3-none-any.whl.
File metadata
- Download URL: gms_mcp-0.1.16-py3-none-any.whl
- Upload date:
- Size: 153.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48eee4a759d71f63a0a19d11dcf1669bf441ffda2fa40fae3a290e5c7115a323
|
|
| MD5 |
7e3645de0ef32cb618744c7f45a714fe
|
|
| BLAKE2b-256 |
1e2c12166ef702d3d2db2ade46e627913793e0d7b7cec5cf97e1db231c5aed31
|
Provenance
The following attestation bundles were made for gms_mcp-0.1.16-py3-none-any.whl:
Publisher:
publish.yml on Ampersand-Game-Studios/gms-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gms_mcp-0.1.16-py3-none-any.whl -
Subject digest:
48eee4a759d71f63a0a19d11dcf1669bf441ffda2fa40fae3a290e5c7115a323 - Sigstore transparency entry: 791489087
- Sigstore integration time:
-
Permalink:
Ampersand-Game-Studios/gms-mcp@429145daf21dd2eb0356a9bfe7d53005c3b8301e -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Ampersand-Game-Studios
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@429145daf21dd2eb0356a9bfe7d53005c3b8301e -
Trigger Event:
push
-
Statement type: