Skip to main content

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 like GMS_MCP_GMS_PATH to 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:

  1. Clone and install in editable mode:

    git checkout dev
    pip install -e .
    
  2. 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
    
  3. 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.

X (Twitter) posting on main

This repo can post to X automatically when main is updated.

  • Personality / voice: .github/x-personality.md
  • Tweet staging file: .github/next_tweet.txt

How it works

  • When a commit lands on main, GitHub Actions reads .github/next_tweet.txt.
  • If it contains the placeholder text (or is empty), it skips posting.
  • If it contains a real tweet, it posts to X and then clears the file back to the placeholder.

Maintainer flow (dev → pre-release → main)

Because this repo promotes changes devpre-releasemain, prepare the tweet during the pre-releasemain PR:

  • Update .github/next_tweet.txt with the tweet (following .github/x-personality.md)
  • Merge to main

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-init will warn and (when interactive) prompt you to pick one.
  • In non-interactive environments, it defaults GM_PROJECT_ROOT to ${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 .yy files 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 graph
  • gms://system/updates: Returns a human-readable message if a newer version of gms-mcp is available on PyPI or GitHub.

Update Notifier

The server automatically checks for updates on startup and during common operations:

  • Tool: gm_check_updates returns structured update info.
  • Auto-check: gm_project_info includes an updates field.
  • Resource: gms://system/updates provides 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

gms_mcp-0.1.21.tar.gz (245.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gms_mcp-0.1.21-py3-none-any.whl (153.7 kB view details)

Uploaded Python 3

File details

Details for the file gms_mcp-0.1.21.tar.gz.

File metadata

  • Download URL: gms_mcp-0.1.21.tar.gz
  • Upload date:
  • Size: 245.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gms_mcp-0.1.21.tar.gz
Algorithm Hash digest
SHA256 ea066bab90320bea8537bd5e68b0f1d40ee85758b908b3cbced8dde9dfa29ba6
MD5 e82d398fa502f6dce80adebd8586450b
BLAKE2b-256 a5f6ea7026ce0acd3cd00f60c630c5d856e99fc61259ef77d5c4e87fef876c57

See more details on using hashes here.

Provenance

The following attestation bundles were made for gms_mcp-0.1.21.tar.gz:

Publisher: publish.yml on Ampersand-Game-Studios/gms-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gms_mcp-0.1.21-py3-none-any.whl.

File metadata

  • Download URL: gms_mcp-0.1.21-py3-none-any.whl
  • Upload date:
  • Size: 153.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gms_mcp-0.1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 3ddf64ce121399303453f52b3a7db67eb5cc5c4d160bb3d819f643a000d835ec
MD5 d89379e9b55d2fa06d0cd65b97c2ae12
BLAKE2b-256 0dd5d88846759c37ac9157d58a88c40b3a9e0675ae2f37726606f0cb50e2177e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gms_mcp-0.1.21-py3-none-any.whl:

Publisher: publish.yml on Ampersand-Game-Studios/gms-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page