Inspiration

Game nights with friends are fun, but someone has to be the Game Master, and nobody keeps anything from the night. We wanted a voice-style Game Master that runs the table and leaves you a comic.

What it does

RPG Night turns a cooperative game night into an illustrated story to keep. Players type, pick a choice, or use optional browser voice while a conversational Game Master guides them through an English or Spanish adventure. Risky moves trigger a d20 check rolled by the server. A read-only shared screen ("the TV") follows the same public story, and at the end the party exports its night as an illustrated PNG/SVG comic or prints it as a PDF.

How we built it

  • The browser simulates the intended Alexa+ experience. It is not a published Echo skill.
  • A conversational host (Ollama locally; Claude via the Anthropic API in the demo video) discovers and calls eight tools on a real MCP server over Streamable HTTP, using the official MCP TypeScript SDK.
  • The game engine validates actions and owns the choices, inventory, consequences and d20 rolls. The LLM interprets conversation, and the engine enforces the rules.
  • Sessions persist across reloads and restarts. The atmospheric art is original procedural SVG.
  • A classic deterministic mode runs without any LLM.

How to test it

Requires Node.js 22.12+ and npm.

git clone https://github.com/IAnMove/rpg-night.git
cd rpg-night
npm ci
ollama pull qwen3:4b-instruct-2507-q4_K_M
npm run dev   # http://localhost:3000
  1. Open http://localhost:3000, select EN, enter "Ada, Bo" and choose the conversational Game Master.
  2. Ask what adventures are available, then: "We choose The Bell Beneath Elderglen. Start it for Ada and Bo."
  3. Play in natural language or with the buttons. When a check is pending, say "Roll the dice".
  4. Open the shared screen, reach an ending and export the comic.
  5. Reload to check restoration.

No AWS account is needed. Text play is enough.

Built with

TypeScript, Node.js, Express, Zod, Model Context Protocol TypeScript SDK, Ollama (Qwen3 4B / Llama 3.2 3B), Anthropic Claude API, Vite, Playwright, Web Speech API, SVG.

Tool feedback

  • Official MCP TypeScript SDK: real Streamable HTTP client/server, tool discovery and eight runtime tools. Retries and recovery still need application logic.
  • Ollama + local models: good intent interpretation, but small models can pick the wrong tool, so validation and explicit choices are needed.
  • Anthropic Claude API: swapped in behind the same tool-calling interface and picked the right tools; needs an API key and a thin adapter.
  • Alexa+ docs and FAQ: pointed to the documented simulation route; partner-only tooling access is easy to miss.
  • Browser Web Speech APIs: optional recognition and narration; support varies by browser.

Challenges

Keeping a small LLM from breaking the rules: the engine, not the model, owns state and dice.

What's next

A real Alexa+ integration, AI-generated scene images, and more authored adventures.

Built With

Share this project:

Updates

Submission history