Skip to content
ACmcp-arcade-cabinets
The arcade · v0.13.3

You are the model. Two cabinets. One wire.

Every game here is built from tapes: recordings of what an MCP server and an agent said to each other. Ghost on the Menu hands you the calls and hides the ones the agent should not have made. Vibe Typer hands you a vibe coder with ideas, and you type the code that builds them.

Ghost

frost robin chalk garden — a shift has a name; type it to take it again

Vibe

user: can the button be more blockchain agent: You are absolutely right, on it

npm

npx @mcptoolshop/ghost-on-the-menu — or — npx @mcptoolshop/vibe-typer

The cabinets

Same chassis, different games. Pick one on the switch; the page remembers.

Ghost on the Menu — a replay shooter

The rig hands you the calls. Every call is a recorded bout that plays out above your ship as waves: the handshake, the menu, the calls, the answers, and a boss that is the experiment itself. The calls the agent should not have made look like everything else until you hit one. Take a shift of four and it gets a four-word name.

Vibe Typer — a typing game

You are a hard-working, sycophantic coding agent. Your user is a vibe coder: a website for their cat, a rideshare for ducks, a bot that argues with the thermostat. Sixteen stories, each four pieces of real code in order. Type the reply, type the code, and the thing gets built beside you while the user checks in. Ship the last line and it deploys. Vibes multiply the valuation; a miss just costs the streak. Nothing yells.

The tape is the source

A tape is one bout, exported by the mcp-arcade instrument. A cabinet reads header words, wire rows and one fact per experiment, refuses anything that carries a score or a verdict, and never talks to a server. Twenty ship in the repo; record your own and drop it beside them.

A model can sit in a chair

Locally, an Ollama model flies Ghost’s bosses through the cabinet’s own tools and writes their lines through a gate. In Vibe Typer’s endless mode it plays the user and writes the product, the asks and the code you type, behind a mechanical code gate and the same word gate as every authored line. The model proposes; the game decides; nothing on the field names it.

It speaks, and every take is receipted

With the voice worker running, every boss speaks in its own voice, and the user’s lines are next. Each take is heard back and receipted by fx-dub before it plays: the words spoken are the words the gate admitted.

Tuned on a band, never on you

Every number that shapes threat or pace is JSON, validated at load, and held to a band of scripted players that fails the build when a bar moves. Ghost has three bots and a fairness band; Vibe Typer has three bots and a band over three seeds, sixteen levels and four tiers, the check-ins and the seated endless among its bars.

Inside Vibe Typer

A real scoreboard, a context window for a clock, sixteen stories, and code you can learn from.

The scoreboard is the game’s number

Valuation, vibes and streak are on the field at all times. Words per minute and accuracy never are. The retro at the end is opt-in and speaks in words, against your own past in this browser and no one else.

Points are what you built

Every request has a value computed from its code: surprisal, key travel, length, punctuation, long identifiers, closing brackets. Shipping pays that value times your vibes and adds a piece of the same size to the preview. Seed, series A and unicorn are stingers on the way up.

The context bar is the pace

It drains as the conversation runs; each request costs a slice; shipping refills a share. Run it dry in a level and the agent compacts, sums up in one line, and carries on. Endless ends on it. Hardcore, from the selector only, burns it on every mistyped character.

Two hundred and forty-nine snippets

Bash, C#, Java, JavaScript, Python and SQL, banded from a bare echo to a nested class, each with teaching notes and an ask written for the job it does, plus an integration stack built from the real tool names on the tapes. The pairs you miss are seeded into your next level’s real lines.

The streak is something you hear

Five keyboard sample sets. Every clean line raises the keystroke pitch a semitone to an octave; a miss resets it. The bed is soft by default so nothing reads as a countdown; turn the music on and the level’s stack gets its own recorded bed, seven of them in one key, the tempo on your vibes. The deploy rings a chord and the confetti falls.

The look, and the voice

Painted pieces pop into a device drawn for the stack: a terminal, a phone, a notebook, a ledger, a wiring panel. The user and the agent have faces in the chat header, a milestone lands as a card over the preview, and the deploy is a ribbon. With the local voice worker running, the user says his asks, his one-more-things, his check-ins and his reactions out loud, every take receipted before it plays.

Scope creep, check-ins, quick sync, Copilot

“Oh also can it…” grows a request by a line, shown before it is typeable. “Is it live yet” lands while you type and costs nothing but a reply. A meeting of three short chat lines is a breather where the bar does not drain. Hold a streak and the editor offers the rest of the line; Tab takes it at a discount.

Inside Ghost on the Menu

The instrument scored the wire. This game lets you read it with a ship.

Take a shift

The rig draws four calls from the roster, never the same four twice running. Each call is a different room: pressure, area-deny, a rest, then a peak. A card between them names the next server, the policy, the tools, and the fight in words. The lamps refill at every call.

The climb is data

Bursts of honest copies and hotter fire climb wave by wave, and across a shift call by call. Every number is tuned on a band of scripted players.

A shift has a name

Four words at the end, like frost robin chalk garden. Type them on the menu to take the same shift again, or hand them to someone. No digit, no count, no ranking.

Lies reveal on the hit

They share a look, a path and a timing with their honest twins. Nothing about a lie differs before contact. Hit one and it parks as a trophy.

The boss can be a model

An Ollama model sits in the boss through the cabinet’s own tools: one verb a beat, the next few legal verbs off the beat, a line of its own through a gate. A hung answer is the script.

No score, ever

Three lamps, words on the wave card, an end scene that names the tape, the server and the policy. No count, no digit, no verdict.

Play it

In a browser

https://mcp-tool-shop-org.github.io/mcp-arcade-cabinets/play/

Ghost on the Menu, seats lit

npx @mcptoolshop/ghost-on-the-menu

# serves Ghost on 127.0.0.1 and opens it
# an Ollama daemon and a voice worker light the seats

Vibe Typer, the endless user seated

npx @mcptoolshop/vibe-typer

# serves Vibe Typer on 127.0.0.1 and opens it
# an Ollama daemon seats a model as the user in endless
# a voice worker speaks the user’s lines

Vibe Typer as an MCP server

npx @mcptoolshop/vibe-typer --mcp

# four tools: view, product, ask, react
# any MCP client sits as the user in an endless run

Work on it

git clone https://github.com/mcp-tool-shop-org/mcp-arcade-cabinets.git
cd mcp-arcade-cabinets && pnpm install
pnpm -F @mcp-arcade-cabinets/cabinets dev

Ghost as an MCP server

npx @mcptoolshop/ghost-on-the-menu --mcp

# or the image, no Node:
docker run -i --rm --network none ghcr.io/mcp-tool-shop-org/mcp-arcade-cabinets:0.12.0