Code with AI
CUE Portal has an MCP server, which is how AI assistants like Claude Code, Codex and the Claude and ChatGPT desktop apps plug in outside tools. Install it and your assistant can create, upload, test and submit your game for you, while your files stay in a normal local folder.
You do not need to understand any of the words below to follow this (if you're anything like me, that's a relief...). Copy the commands as they are, in order, and your AI assistant does the rest. If a step looks unfamiliar, don't panic, just run it. IT'LL ALL BE FINE I'M SURE.
This process should get you from zero to a game anyone can play:
- accept the developer terms
- connect the tool to your assistant
- log in, then
- build and
- submit (all by talking to your assistant).
Let's break that down a bit further...
What you need
- A CUE Portal account. Sign up on the portal if you don't have one. If you play CUE, use the same email and password to sign in here.
- Node.js 20 or newer installed (nodejs.org). (You won't write any Node code, it just runs the MCP server.)
- An AI coding assistant that supports MCP. MCP (the Model Context Protocol) is the standard way assistants connect to outside tools. Claude Code, the Claude desktop app, Codex and the ChatGPT desktop app all support it, and most others do too.
The MCP server is an npm package called @cueportal/make-a-game. You never install it permanently; the npx command fetches and runs it on demand.
Use an app you install on your computer, or a command line tool. The website versions of Claude and ChatGPT, and their phone apps, cannot run this: they only connect to tools that live on the internet, and this one runs on your machine so it can write your game files into your own folder.
1 · Accept the developer terms
This part happens in the browser, once. Sign in on the portal, go to Studio (under your avatar in the top bar), read the developer terms and agree. Your assistant cannot do this for you, on purpose: the terms are an agreement between you and CUE Portal.
2 · Add the MCP to your assistant
Register the MCP server with your assistant. Find yours below and do that one part only. You do this once per computer.
Claude Code
Run this in a terminal:
claude mcp add cue npx @cueportal/make-a-gameCodex on the command line
Run this in a terminal:
codex mcp add cue -- npx @cueportal/make-a-gameThe Claude desktop app
Open Claude, go to Settings → Developer and press Edit Config. That opens a file
called claude_desktop_config.json, making a new one if you don't have it yet. Put this
inside:
{
"mcpServers": {
"cue": {
"command": "npx",
"args": ["-y", "@cueportal/make-a-game"]
}
}
}If the file already lists other servers, add the "cue" block next to them inside the same
"mcpServers" section, with a comma between the two.
Save the file, then quit Claude completely and open it again. That is what starts the server. The CUE tools then show up behind the + button next to the message box, under Connectors.
On Windows, if Claude says the server failed to start, npx usually needs two things: run
npm install -g npm once in a terminal, and add your own user folder to the block, like this:
{
"mcpServers": {
"cue": {
"command": "npx",
"args": ["-y", "@cueportal/make-a-game"],
"env": { "APPDATA": "C:\\Users\\your-name\\AppData\\Roaming\\" }
}
}
}The ChatGPT desktop app
Open ChatGPT, go to Settings → MCP servers and press Add server. Name it cue,
pick STDIO as the type (that means a tool running on your own computer), and give it
this command:
npx -y @cueportal/make-a-gameSave, then press Restart. If it complains that the server took too long to start, that is
the first download being slower than the 10 second default, so give it longer. The same
settings live in a file at ~/.codex/config.toml, which the app shares with the Codex
command line tool and the Codex editor extensions, so you can also write them there by hand:
[mcp_servers.cue]
command = "npx"
args = ["-y", "@cueportal/make-a-game"]
startup_timeout_sec = 30Anything else
Other assistants that speak MCP want the same command in their own config format, for example:
# most TOML-based clients
[mcp_servers.cue]
command = "npx"
args = ["@cueportal/make-a-game"]3 · Log in
The MCP server needs to act as you, so give it a login. This step is a terminal command even if you use a desktop app: you run it once, and the app picks up the login from then on.
npx -y @cueportal/make-a-game loginIt shows a short code and opens the portal in your browser. Sign in if you need to (Google or your email both work), check that the code on the page matches the one in your terminal, and press Approve.
No password ever touches the terminal. The MCP server keeps a sign-in token on your machine and uses that from then on. If it ever expires, any tool call will tell you to run the login command again.
On a machine with no browser (a server, or a script), add --password to sign in with your email and password directly. That only works for accounts that have a password; if you signed up with Google, use the normal flow and approve from any device, even your phone.
4 · Build your game
One thing to know before you start: a game only runs inside the portal. There is no local preview. @cue/sdk only works when the portal is on the other side, so opening index.html from disk, or serving the folder yourself, gives you a page that waits forever. Your assistant cannot run the game either, but it is not blind: every test run records the game's messages and errors, and your assistant can read that log after you play.
Start your assistant anywhere you like and ask for what you want. A good first prompt:
Make me a CUE Portal game: a simple memory-matching game using my card
collection. Read the CUE docs first, create the game, build it in this
folder, then upload it so I can test it.A well-behaved (?!) assistant will read the SDK docs through the MCP, create the game (which also reserves its id and scaffolds the starter files), write index.html, main.js and style.css in your local folder, and push the folder to the Studio. The same rules apply as in the browser: plain JavaScript, no build step, and the only imports allowed are @cue/sdk, @cue/2d (see 2D games), @cue/3d, and your own files by relative path. Uploads that break the import rule are rejected with an explanation your assistant can read and fix.
5 · Test and submit
Ask your assistant for the test link. Open it in your browser while signed in and the game starts on its own, exactly as a player would see it. An unpublished game stays invisible to players, and if you want a friend to try it before you submit, the Studio's Share test link button (on the game's Details tab) copies a link that lets anyone play the test version for 7 days. While you play, the game's messages and errors are recorded; when something looks wrong, just tell your assistant you finished playing and it can read the log itself to work out what happened. Which we think is pretty cool.
When you're happy, tell your assistant to submit the game for review. The CUE Portal team will then play it (probably not immediately, and rarely at weekends... this is the problem with humans...) and either approve it, which will add it straight to the public Games list, or send it back with some notes on things to amend/improve. Your assistant can read the note, fix the game, and submit again.
Honestly, we are making zero promises around this moderation/review bit at the moment as we have no idea how complex it will be or how many games or tools will be submitted. All we can say is that we will do our best.
Assuming that all goes through though - you just shipped a game! Give yourself high fives, organise a launch party, and start worrying about what the critics will say.
If you later want/need to make changes, ask your assistant to edit the files and submit again. To make another, start from step 4 with a new idea. (Steps 1 to 3 are one-offs.)
What the MCP can and can't do
It can: list your games, create one, edit details (name, genre, description, max players), set the thumbnail and feature graphic, read and write files, upload and download assets, push a whole folder, submit for review, withdraw, and unpublish.
It also serves the developer docs and the card catalog to your assistant, so you can just say "read the CUE docs" or "find me some Space cards" in a prompt. And after you test a game, it can read the run's log (messages and errors) to debug what you saw.
If you share a game with other people, remember you are all editing the same copy. Your assistant can see when a file changed since it last looked, so ask it to check before it rewrites something one of your teammates has been working on. Saving over their work is easy to do and there is no undo. Yikes. Be careful.
It can't accept the developer terms (even if it could - you'd still be the one responsible), and it can't get around the platform's rules, like the import allow list.
If something goes wrong
- "Not logged in or your session expired": run
npx -y @cueportal/make-a-game loginagain. - A desktop app doesn't show the CUE tools: quit the app completely and open it again, that is what starts a newly added server. If it still doesn't appear, run
npx -y @cueportal/make-a-gamein a terminal on its own: if that prints an error, fix that first. Claude keeps its own notes in~/Library/Logs/Claude/mcp*.logon a Mac, or%APPDATA%\Claude\logson Windows. - The browser didn't open when you ran login: copy the printed link into any browser, on any device. Approving from your phone works fine.
- "The code expired before it was approved": codes last ten minutes. Run the login command again and approve the new code.
- An error about the developer terms: see step 1. Accepting them happens in the browser, once.
- An upload was rejected: the error names the exact import that isn't allowed. Only
@cue/sdk,@cue/2d,@cue/3d, and relative paths work; there's no npm inside games. - The game loads but hangs on start: make sure you opened it through the portal's Test button. A game talks to the portal to start up, so opening its files any other way leaves it waiting forever.
