Publish with AI (MCP)
The Gamealia MCP server lets your AI coding assistant take a game from a folder (or from nothing) to published: it analyzes the project, integrates the SDK, builds it, tests it in a real browser, writes the listing and the cover, uploads the build and submits it for review after you confirm. You only approve the sign-in in your browser and say yes before the submit.
Install
You need Node.js 22 or newer. For the local autotest, preview and cover tools you also need playwright-core and a headless Chromium (see Local browser).
Option A: the installer (recommended)
gamealia agents install registers the server and installs the skills or rules in every coding agent it detects, backing up every file it changes:
gamealia agents install # the agents found on this machine, user-wide
gamealia agents install --all # every supported agent
gamealia agents install --cursor --vscode --project # only these, in this folder
gamealia agents install --dry-run # show what would change
gamealia agents uninstall # remove what install added
gamealia agents list # supported and detected agents
It downloads the server to ~/.config/gamealia/gamealia-mcp.mjs (with its assets/ folder) and checks every file against the sha256 pinned in the CLI. See the CLI for every flag. From inside an agent that already has the MCP, the tool gamealia_install_agent_kit does the same (a dry run unless write: true).
Option B: by hand
Download the server and the assets it serves for the local autotest and preview:
mkdir -p ~/.config/gamealia/assets/sdk && cd ~/.config/gamealia
for f in gamealia-mcp.mjs assets/harness.html assets/preview.html assets/sdk/v1.js assets/sdk/crazygames.js assets/sdk/poki.js; do
curl -fsSL "https://gamealia.app/downloads/$f" -o "$f" || break
done
Then register it (node ~/.config/gamealia/gamealia-mcp.mjs, stdio) in your agent:
| Agent | How |
|---|---|
| Claude Code | claude mcp add gamealia -- node ~/.config/gamealia/gamealia-mcp.mjs |
| Codex CLI | codex mcp add gamealia -- node ~/.config/gamealia/gamealia-mcp.mjs |
| Cursor | ~/.cursor/mcp.json: {"mcpServers": {"gamealia": {"command": "node", "args": ["/home/you/.config/gamealia/gamealia-mcp.mjs"]}}} |
| VS Code (Copilot) | .vscode/mcp.json: {"servers": {"gamealia": {"type": "stdio", "command": "node", "args": ["..."]}}} |
| Claude Desktop | claude_desktop_config.json, mcpServers.gamealia as for Cursor |
| Gemini CLI | ~/.gemini/settings.json, mcpServers.gamealia |
| Windsurf, Cline, Zed, opencode | Their MCP settings file; gamealia agents install knows each one |
Use the absolute path to the file: most agents do not expand ~ in JSON.
The agent kit
Besides registering the server, each agent gets instructions that teach it the workflow and the policy: the skills gamealia-publish, gamealia-sdk and gamealia-translate-listing (Claude Code, Claude Desktop, Codex, opencode), or a rules or instructions file (Cursor .cursor/rules/gamealia.mdc, VS Code .github/copilot-instructions.md, Windsurf, Cline, Zed, Gemini GEMINI.md, and an AGENTS.md block for agents that read it). The kits are also downloadable per agent as /downloads/agents/gamealia-<agent>.zip, for example gamealia-claude-code.zip or gamealia-cursor.zip, each with a README of the manual steps.
The skills tell the assistant to talk to you in your language. The tool results are localized too: set GAMEALIA_LOCALE (for example es) or the server uses your OS locale, with English as the fallback.
Then ask
Restart the agent and ask: "publish my game to Gamealia". The prompt publish-game scripts the whole flow; migrate-from-crazygames, migrate-from-poki and fix-autotest-failures cover the other common jobs.
The tools
| Step | Tool | What it does |
|---|---|---|
| Sign in | gamealia_login, gamealia_whoami, gamealia_logout | Device-code sign-in: you open the URL and approve the code; then gamealia_login {wait: true}. The key is stored in ~/.config/gamealia/credentials.json (mode 600) |
| Account | gamealia_accounts {action, account} | list: your developer accounts, your role in each, the active one and pending invites. switch with an account id or name: uses its stored key, or starts a sign-in bound to that account (then gamealia_login {wait: true}) |
| Inspect | gamealia_analyze_project {dir} | Engine, build command, output folder, entry html, existing CrazyGames/Poki SDKs, localStorage keys, policy findings with file and line, and the permissions to declare |
| Scaffold | gamealia_create_project {dir, template, title} | A new game already integrated: vanilla, phaser, pixi or multiplayer |
| Integrate | gamealia_integrate_sdk {dir, write} | A deterministic patch: a dry-run diff first, then write: true. Returns TODOs (file and line) for gameplay and ad calls |
| Lint | gamealia_check_integration {dir} | Static checks: SDK loaded, init and loadingStop present, forbidden hosts, purchase UI, own login, sizes |
| Build | gamealia_build {dir} | Runs the project's build command |
| Test | gamealia_run_autotest {dir} | The full autotest, desktop and mobile, with screenshots returned as images |
| Play | gamealia_playtest, gamealia_playtest_act, gamealia_playtest_stop | The assistant plays the game itself from screenshots (click, key, drag, wait) and gets a verdict |
| Preview | gamealia_preview {dir} | A URL with the game inside a local copy of the portal page (mock ads), for you to try |
| Listing | gamealia_create_game, gamealia_update_listing | Slug, texts in es and en (and every other locale via texts), tags, orientation, multiplayer, ads on or off, backendHosts, isolation, permissions, cover and thumbnail files |
| Cover | gamealia_generate_cover {screenshot, title} | A 1200x630 cover and a 512x512 thumbnail from an autotest screenshot |
| Ship | gamealia_upload_version {dir, game} | Zips, uploads, waits for the server autotest and returns its report |
| Submit | gamealia_submit_for_review {game, notes} | Only after you confirm |
| Track | gamealia_get_status {game} | State, the server report and the reviewer's reasons with fixes; texts: true adds the listing texts per locale |
| More | gamealia_list_games, gamealia_list_versions, gamealia_get_stats, gamealia_get_earnings | Your games, versions, plays and earnings |
| Docs | gamealia_docs_search {query} | Searches these docs; every page is also the MCP resource gamealia://docs/<lang>-<page>, for example gamealia://docs/en-sdk-reference |
Every result ends with next suggestions, so the assistant knows what to do after each step.
API keys are bound to one developer account and your role in it (see Accounts and teams). When you belong to several accounts, the results name the active one and the assistant confirms with you which account a game belongs to before creating or publishing it. If your role does not allow an action, the error says which roles can do it, and the assistant asks you to involve an owner or admin instead of retrying.
Local browser
The autotest, preview, playtest and cover tools drive a headless Chromium through playwright-core, which is not bundled:
npm install -g [email protected]
npx [email protected] install chromium-headless-shell
Or set GAMEALIA_CHROMIUM to an existing headless Chromium binary.
Environment
| Variable | Use |
|---|---|
GAMEALIA_API_KEY | An API key from the developer portal (overrides the stored sign-in; bound to its account, so switching accounts is disabled) |
GAMEALIA_API_URL | API base URL (default https://gamealia.app/api/v1) |
GAMEALIA_LOCALE | Language of the tool messages and docs (default: the OS locale) |
GAMEALIA_CHROMIUM | Headless Chromium binary |
Safety
The assistant never sees your Google password: you approve the sign-in in your own browser. It must ask you before submitting a version, and the reviewer still checks every version by hand.