wyt-mcp
Game master MCP server for a time-loop dungeon RPG, managing game state, dice rolls, and narrative for a wizard-trapped town.
README
wyt-mcp
Watch Your Toes, remade as an MCP server. A wizard has trapped a town in a daily time loop. You are the only one who carries anything across the resets — levels, gold, gear, knowledge — while the townsfolk's sanity decays, the economy rots, and the dungeon beneath the town reshuffles itself every dawn. Claude is the game master; the server owns every die roll, map, and price.
DESIGN.md is the authoritative spec (§1–§19). Read it before touching the code.
Status: v1 core complete — playtest phase
Everything in the §12 build order exists and is smoke-tested: the full engine, the renderer, the MCP tool surface (23 tools + the GM prompt), and the headless balance harness. What remains before calling v1 done is playtesting in Claude Desktop, then the post-core content (§17 unplayed-class NPCs, §19 the barrier & shards).
| Module | What it does |
|---|---|
db.py |
SQLite schema, save lifecycle, helpers. One save slot. |
data/*.json |
NPCs, enemies, gear, consumables, statuses, events, room pool. |
engine/player.py |
Classes, slot-enforced equip, XP/leveling (banked stat points), consumables, resolve, conduct. |
engine/town.py |
Generated town graph + fog-of-war, sanity decay, gates, memories/rumors, the crime machine (§16), the §15 forged wizard packet. |
engine/economy.py |
Loop- and sanity-scaled prices, DB-backed stock, shop-tag sell penalties, the den fence. |
engine/dungeon.py |
Per-loop graph generation (spine + branches), movement, traps/treasure, floor clears. |
engine/effects.py |
Buffs/debuffs/stuns — combat-scoped and day-long. |
engine/combat.py |
Hybrid auto/round combat: initiative, crits, follow-ups, flee, NPC kills, town-enemy hooks. |
engine/days.py |
new_game, the 8-step overnight reset, the Garrick valve, overnight events, the first midnight. |
engine/endings.py |
Breaking point (despot/husk), the reveal, dawn/successor, epilogues. |
engine/tuning.py |
Every pacing knob in one file (§18). |
render.py |
All ASCII output: status bar, fog-of-war town & dungeon maps, shop tables, combat panel. |
server.py |
FastMCP tool surface + the GM-persona prompt. |
simulate.py |
Headless balance harness. |
Requirements
- uv — that's it.
uv syncprovisions Python 3.12 and the two runtime deps (mcp[cli],platformdirs).
Playing it (Claude Desktop)
Add to claude_desktop_config.json (local checkout; PyPI publish comes later):
{
"mcpServers": {
"wyt": {
"command": "uv",
"args": ["run", "--directory", "C:/path/to/wyt-mcp", "wyt-mcp"]
}
}
}
Then use the start_game prompt and let the GM take it from there. The save
lives in your platform user-data dir (e.g. %LOCALAPPDATA%\wyt-mcp\save.db).
Headless balance runs
uv sync
uv run python -m wyt_mcp.simulate --loops 18
uv run python -m wyt_mcp.simulate --loops 20 --class mage --runs 5
Prints per-loop town average/min sanity, the price of an iron sword, player
resolve, and the Garrick valve state. Tune in engine/tuning.py, re-run,
repeat. Point WYT_MCP_DB at a throwaway path to experiment by hand without
touching your save:
$env:WYT_MCP_DB = "$env:TEMP\wyt-test.db"
Roadmap
- Playtest in Claude Desktop — the last §12 step.
- §17 — The Roads Not Taken: the three classes you didn't pick exist in the world (the rival in the dungeon, the hunting party, the scholar at the charm stall, the assassin who learns your tricks).
- §19 — The Barrier & the Shards: visible non-resetting outside world, perma-death shards, the suspicion gradient, and the Stillness / Refusal / Erased endings.
- Post-v1 (§13): quests & altruism as the despair counterweight, per-class S-endings, the socket dashboard, more endings.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.