
GB Studio MCP Server
io.github.eoinjordanPublished by GitHub account eoinjordanv1.0.4Updated Oct 24, 2026
Create and modify GB Studio projects with MCP tools for scenes, actors, assets, and validation.
The publisher's own server: Claude Platform Docs
Overview
Lets an assistant inspect, validate, and generate content in GB Studio and GBA Studio Game Boy game projects, including building a GBA ROM.
- What you can do
- The server exposes tools and REST endpoints for GB Studio projects: finding a .gbsproj file, validating project structure, and listing scenes, actors, triggers, and assets. It can create project content such as scenes, actors, sprites, backgrounds, tilesets, music, sounds, palettes, fonts, scripts, variables, and prefabs, and update settings and metadata. It can also build a .gba ROM from a local GBA Studio checkout.
- When to use it
- Use it when you want an assistant to scaffold or extend a Game Boy or GBA game project, review and validate project logic, or generate starter scenes, actors, and assets for teaching or hobby projects.
- Requirements
- Node.js (README recommends v21.7.1 or compatible) and the npm package gbstudio-claude-mcp, installed globally or run from a build. The stdio MCP server proxies to a local REST API on localhost:3000, so the REST server must be started first; the port can be changed with GBSTUDIO_API_URL or GBSTUDIO_API_PORT. Building a GBA ROM needs a local GBA Studio checkout, given via gbaStudioRoot or GBA_STUDIO_ROOT. An optional CLAUDE_API_KEY can be set in a .env file.
Installation
In SourceWeft
- Open GB Studio MCP Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
GB Studio / GBA Studio Agentic MCP Server for creating GameBoy Games.
Prompt to build out a template for your students, kids, or yourself to extend.
[image]Also works for GBA STUDIO ...my fork of GB Studio that covers the GBA
Quick Start
-
Install:
npm install -g gbstudio-claude-mcp -
Start server:
gbstudio-claude-mcp -
Connect Claude Desktop (see TUTORIAL.md)
-
Prompt Claude: "Review and test my application logic"
That’s it. Claude will reivew, extend or even generate a playable game template you can iterate on with students in GB Studio.
Vibe Coding, LLMs, and Modern Education: Can give students Constructive Tools, Not Just Answers
After 14 years teaching kids programming, electronics, 3D printing, and game development, I’ve learned this: the best educational tools don’t just make things easier. They make learning a rewarding activity. GB Studio is one of those tools. It’s a visual game builder that gives you a Game Boy development, putting real creative power in the hands of students, educators, and hobbyists to build for physical hardware. When we combine GB Studio with education on what is possible to do with large language models (LLMs), we bring a postitive view to students on how they can integrate with rather than rely on them as a crutch.
What is Vibe Coding?
“Vibe coding” isn’t just a buzzword. It’s a paradigm shift. It’s programming stripped of syntactic gatekeeping, where creators focus on flow, logic, and ideas instead of memorizing semicolons. Tools like Scratch, App Inventor, and GB Studio embody this philosophy: they eliminate barriers and recenter programming around what actually matters: creativity and problem-solving.
For kids, vibe coding is a what they are growing up with. It will let them focus on the “why” and “how” of programming without drowning in syntax. This isn’t just helpful. It’s important for students to get to think in systems, design, and logic but are shut out by traditional coding’s steep learning curve.
The Role of LLMs in Education
Large language models like ChatGPT have sparked fierce debate in education, and for good reason. Used carelessly, they become cheating tools that replaces thinking with copy-pasa mindset. But used with purpos, they can become scaffolding that accelerates real learning. The difference isn’t the tool. It’s how we wield it.
This is exactly why I built the Clawdbot MCP server. By integrating LLMs directly with GB Studio, users and teachers can:
- Scaffold projects: Generate starter templates, assets, and event flows from simple prompts.
- Automate testing: Run smoke tests to catch bugs and validate project logic.
- Encourage iteration: Help students refine their projects by providing suggestions and examples.
Games can be built from scratch too but they wont be AAA class so measure your expectations lol
Pong (Game Boy)
Pac-Man (Game Boy Color)
Mario Bros Style Platformer (Game Boy Color)
Space Shooter (Game Boy)
Claude MCP Server for GB Studio
This is a TypeScript server for manipulating GB Studio projects using the Model Context Protocol (MCP). It provides endpoints for project discovery, validation, and creation of game assets.
Installation
Install globally with npm:
Local Environment Setup (.env)
For local development, store API keys and configuration in a .env file at the project root. This keeps secrets out of source control and matches the pattern used in GitHub Actions.
- Create a
.envfile in the project root: - The server will automatically load variables from
.envif you use [dotenv]. .envfiles are gitignored by default.
Never commit your .env file to source control.
Usage
Start the server:
The server runs on http://localhost:3000 by default.
Configure your MCP client (e.g., Claude Desktop) to connect to this server. For full setup and troubleshooting, see the tutorial linked at the end of this document.
End-to-End Usage: Windows & Linux/macOS
See the TUTORIAL.md for a complete, step-by-step guide to building a GB Studio game with this server, including screenshots and troubleshooting tips for both Windows and Linux/macOS.
MCP Protocol Support
This package supports the Model Context Protocol (MCP). You can run the server in MCP stdio mode for use with Claude Desktop and other MCP clients:
The MCP stdio server proxies to the local REST API on http://localhost:3000, so start the REST server first. To use a different port, set GBSTUDIO_API_URL (full URL) or GBSTUDIO_API_PORT (port number):
Or add this to your MCP client configuration:
Clawdbot / Moltbot Compatibility
[Screenshot_20260128-214729 WhatsApp]Clawdbot and Moltbot discover tools via AgentSkills-compatible SKILL.md files. This repo ships one at:
skills/gbstudio-mcp/SKILL.md
Compatibility depends on transport:
- If Clawdbot can run stdio MCP servers as child processes,
node build/mcp.jswill work. - If your Clawdbot setup expects HTTP+SSE MCP servers, you will need a bridge, because this MCP server is stdio-only.
- If you only run the REST API, Clawdbot will not auto-discover tools as MCP.
To enable the skill in Moltbot, add an entry like this:
Project Structure
- src/index.ts — Main server and endpoint logic
- tests/ — Jest test suites for all endpoints
- tests/poachermon/ — Real GB Studio project for integration tests
- gbstudio_api_endpoints.csv — Catalog of all planned endpoints
Local Development
- Clone the repository:
- Install Node.js (recommended: v21.7.1 or compatible)
- Install dependencies:
- Start the development server:
- Run the test suite:
Health
GET /health— Returns{ status: "ok" }for health checks.
Claude API Key
GET /claude-key— Returns{ present: true }ifCLAUDE_API_KEYis set in the environment, else{ present: false }with 404.
Find Project
POST /find_project— Finds the first.gbsprojfile starting from a given directory.- Body:
{ startPath: string } - Returns:
{ projectPath: string }or 404 if not found.
- Body:
Inventory
POST /inventory— Lists scenes, actors, triggers, and assets from a GB Studio project root.- Body:
{ projectRoot: string } - Returns:
{ scenes, actors, triggers, assets }or 404/400 on error.
- Body:
Validate
POST /validate— Validates the structure of a GB Studio project (checks for a valid.gbsprojfile and required fields).- Body:
{ projectRoot: string } - Returns:
{ valid: true, message: string, scenes: number, projectPath: string, target: "gb" | "gba", engine: "gb-studio" | "gba-studio", version: string | null }if valid, or 400/404 with an error message if invalid or missing required fields. - Error Cases:
- 400 if
projectRootis missing or.gbsprojis invalid/missing required fields - 404 if
projectRootdoes not exist or no.gbsprojfile found
- 400 if
- Body:
Build GBA ROM
POST /gba/build— Builds a.gbaROM using a local GBA Studio checkout.- Body:
{ projectRoot: string, gbaStudioRoot?: string, output?: string, buildCli?: boolean, verbose?: boolean, extraArgs?: string[] } - Environment:
GBA_STUDIO_ROOTcan be used instead ofgbaStudioRoot. - Returns:
{ success: true, projectPath, gbaStudioRoot, output, stdout, stderr }on success, or{ success: false, error, stdout, stderr }. - MCP tool:
build_gba_romexposes the same arguments for Claude/agent clients.
- Body:
Create Scene
POST /scene/create— Adds a new scene to the specified GB Studio project.- Body:
{ projectRoot: string, scene: object } - Returns:
{ success: true, scene }on success, or 400/404/500 with an error message.
- Body:
Create Actor
POST /actor/create— Creates a new actor in the specified scene.- Body:
{ projectRoot: string, sceneId: string, actor: object } - Returns:
{ success: true, actor }on success, or 400/404/500 with an error message.
- Body:
Create Background
POST /background/create— Creates a new background in the project.- Body:
{ projectRoot: string, background: object } - Returns:
{ success: true, background }on success, or 400/404/500 with an error message.
- Body:
Create Sprite
POST /sprite/create— Creates a new sprite in the project.- Body:
{ projectRoot: string, sprite: object } - Returns:
{ success: true, sprite }on success, or 400/404/500 with an error message.
- Body:
Create Music
POST /music/create— Creates a new music track in the project.- Body:
{ projectRoot: string, music: object } - Returns:
{ success: true, music }on success, or 400/404/500 with an error message.
- Body:
Create Sound
POST /sound/create— Creates a new sound effect in the project.- Body:
{ projectRoot: string, sound: object } - Returns:
{ success: true, sound }on success, or 400/404/500 with an error message.
- Body:
Create Tileset
POST /tileset/create— Creates a new tileset in the project.- Body:
{ projectRoot: string, tileset: object } - Returns:
{ success: true, tileset }on success, or 400/404/500 with an error message.
- Body:
Create Trigger
POST /trigger/create— Creates a new trigger in the specified scene.- Body:
{ projectRoot: string, sceneId: string, trigger: object } - Returns:
{ success: true, trigger }on success, or 400/404/500 with an error message.
- Body:
Create Variable
POST /variable/create— Creates a new variable in the project.- Body:
{ projectRoot: string, variable: object } - Returns:
{ success: true, variable }on success, or 400/404/500 with an error message.
- Body:
Create Script
POST /script/create— Creates a new script in the project.- Body:
{ projectRoot: string, script: object } - Returns:
{ success: true, script }on success, or 400/404/500 with an error message.
- Body:
Create Palette
POST /palette/create— Creates a new palette in the project.- Body:
{ projectRoot: string, palette: object } - Returns:
{ success: true, palette }on success, or 400/404/500 with an error message.
- Body:
Create Font
POST /font/create— Creates a new font in the project.- Body:
{ projectRoot: string, font: object } - Returns:
{ success: true, font }on success, or 400/404/500 with an error message.
- Body:
Create Emote
POST /emote/create— Creates a new emote in the project.- Body:
{ projectRoot: string, emote: object } - Returns:
{ success: true, emote }on success, or 400/404/500 with an error message.
- Body:
Create Avatar
POST /avatar/create— Creates a new avatar in the project.- Body:
{ projectRoot: string, avatar: object } - Returns:
{ success: true, avatar }on success, or 400/404/500 with an error message.
- Body:
Create Constant
POST /constant/create— Creates a new constant in the project.- Body:
{ projectRoot: string, constant: object } - Returns:
{ success: true, constant }on success, or 400/404/500 with an error message.
- Body:
Create Prefab Actor
POST /prefab/actor/create— Creates a new actor prefab in the project.- Body:
{ projectRoot: string, actorPrefab: object } - Returns:
{ success: true, actorPrefab }on success, or 400/404/500 with an error message.
- Body:
Create Prefab Trigger
POST /prefab/trigger/create— Creates a new trigger prefab in the project.- Body:
{ projectRoot: string, triggerPrefab: object } - Returns:
{ success: true, triggerPrefab }on success, or 400/404/500 with an error message.
- Body:
Update Settings
POST /settings/update— Updates project settings.- Body:
{ projectRoot: string, settings: object } - Returns:
{ success: true, settings }on success, or 400/404/500 with an error message.
- Body:
Update Metadata
POST /metadata/update— Updates project metadata.- Body:
{ projectRoot: string, metadata: object } - Returns:
{ success: true, metadata }on success, or 400/404/500 with an error message.
- Body:
Create Engine Field Value
POST /engine-field-value/create— Creates a new engine field value in the project.- Body:
{ projectRoot: string, engineFieldValue: object } - Returns:
{ success: true, engineFieldValue }on success, or 400/404/500 with an error message.
- Body:
Claude Key
POST /claude/key— Sets the Claude API key in the environment.- Body:
{ key: string } - Returns:
{ success: true }on success, or 400 with an error message.
- Body:
Building a Game End-to-End
To build a GB Studio game using this MCP server with Claude:
- Discover Project: Use
/find_projectto locate an existing.gbsprojfile or start from a directory. - Validate Project: Use
/validateto ensure the project is valid. - Get Inventory: Use
/inventoryto list current scenes, actors, triggers, assets. - Create Scenes: Use
/scene/createto add new scenes. - Create Actors: Use
/actor/createto add actors to scenes. - Create Assets: Use creation endpoints (currently stubs) to add sprites, backgrounds, etc.
- Update Settings/Metadata: Use update endpoints to configure the project.
- Build/Export: Use
/gba/buildor MCPbuild_gba_romto compile a GBA Studio project to.gba.
Note: All endpoints are now fully functional.
GBA Studio Build Example
Example Prompts
See TUTORIAL.md for detailed sample prompts and full end-to-end workflows for different game genres.
Test Coverage
All endpoints are covered by Jest tests in the tests/ directory. Run npm test to validate all functionality. Tests use real sample projects.
Publishing
To publish a new version:
- Update version in package.json
- Build the project:
- Login to npm:
- Publish to npm:
See npm publishing docs for more info.
Contributing
- Fork the repository
- Create a feature branch
- Make changes and add tests
- Submit a pull request to https://github.com/eoinjordan/gb-studio-agent
License
MIT
Source: README.md at commit ee97909
Tools
0Version history
1- v1.0.4LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.
Other Claude integrations
Claude Platform Docs
com.claude.platformOfficial publisher
Remote MCP server that lets an assistant search and read the Claude Platform documentation and API reference.

Insta Edits for Claude
Published by GitHub account faisalkhanzemi
Bridge that lets Claude drive the full 274-tool editor in Instagram Edits for Mac, keeping the tool list in sync as projects open.

Claude Checkpoint Mcp
Published by GitHub account daniel-munoz
Local MCP server that saves Claude Code session state to a checkpoint file in the project and reloads it as a compact resume brief.

Qwen DAP MCP — C/C++ Debugger for Claude Code, Codex & Qwen
Published by GitHub account spk-c
Qwen DAP MCP — C/C++ Debugger for Claude Code, Codex & Qwen's local MCP server; no sign-in required; STDIO; 18 tools.

AVE for Claude Code — Local Video Editing
Published by GitHub account lemberalla
Local AVE timeline editing and exports for Claude Code only. Existing AVE connection required.