Public
Like
mcp-mythic
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v11View latest version
A Mythic Game Master Emulator implementation as an MCP server. Perfect for solo RPGs or GM-less sessions.
| Tool | Description |
|---|---|
check_scene | Start a scene - Normal, Altered, or Interrupted? |
roll_fate | Ask a yes/no question with given odds |
get_chaos | Get current Chaos Factor (1-9) |
set_chaos | Set Chaos Factor to specific value |
adjust_chaos | Increment or decrement Chaos Factor |
When starting a new scene, roll d10 vs Chaos Factor:
| Result | When | Meaning |
|---|---|---|
| Normal | Roll > Chaos | Scene proceeds as expected |
| Altered | Roll ≤ Chaos, even | Same scene with a twist |
| Interrupted | Roll ≤ Chaos, odd | Completely different scene |
Higher Chaos = more likely to have scenes go sideways.
Ask the oracle a yes/no question and set the odds:
| Odds | When to use |
|---|---|
impossible | It would break reality |
no_way | Extremely unlikely |
very_unlikely | Really doesn't fit |
unlikely | Probably not |
50_50 | Could go either way |
somewhat_likely | Leans toward yes |
likely | Probably yes |
very_likely | Almost certainly |
near_sure_thing | Only extreme circumstances prevent it |
sure_thing | Would be shocking if no |
has_to_be | Practically certain |
- Yes / No - Standard answers
- Exceptional Yes - Yes, and even better than expected
- Exceptional No - No, and things get worse
- Random Event - On doubles (11, 22, 33...) something unexpected happens!
The Chaos Factor (1-9) represents how out of control the story is:
- Low (1-3): Stable, predictable. Scenes more likely Normal, "No" more likely.
- Medium (4-6): Balanced. Default starting point is 5.
- High (7-9): Chaotic, unpredictable. Scenes often Altered/Interrupted, "Yes" more likely.
After each scene:
- Scene went as expected → decrease chaos
- Scene spiraled out of control → increase chaos
const response = await openai.responses.create({
model: "gpt-4o",
input: "Start a new scene where I enter the tavern",
tools: [{
type: "mcp",
server_label: "mythic",
server_url: "YOUR_ENDPOINT_URL",
require_approval: "never",
}],
});
# Check if scene proceeds normally curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_scene","arguments":{}}}' # Roll fate curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"roll_fate","arguments":{"odds":"likely"}}}' # Adjust chaos after a wild scene curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"adjust_chaos","arguments":{"direction":"up"}}}'
You: I want to start a scene entering the tavern to meet my contact.
AI: [checks scene] ✅ Scene Normal - Roll: 8 vs Chaos 5
The scene proceeds as planned. You enter the tavern...
You: Is my contact already there? (likely)
AI: [rolls fate] 🎲 Yes - Roll: 23 vs threshold 75
Yes, you spot them in a corner booth.
You: That went smoothly - decrease chaos.
AI: [adjusts chaos] 📉 Chaos Factor decreased: 5 → 4
You: Next scene - I follow the contact to the secret meeting.
AI: [checks scene] 🔄 Scene Altered - Roll: 2 vs Chaos 4
The scene happens, but something's different...
Perhaps guards are patrolling, or the meeting location changed?
- mcp-dice - Minimal MCP server example
- mcp-tester - Test any MCP server
- Mythic GME - Original game