• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
dcm31

dcm31

mcp-mythic

Mythic GME MCP - Fate Chart roller and Chaos Factor tracker
Public
Like
mcp-mythic
Home
Code
4
README.md
H
main.ts
test-interrupt.ts
test.ts
Branches
1
Pull requests
Remixes
History
Environment variables
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.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
Viewing readonly version of main branch: v19
View latest version
README.md

Mythic GME MCP Server

A Mythic Game Master Emulator 2nd Edition implementation as an MCP server. Perfect for solo RPGs or GM-less sessions.

Tools

ToolDescription
check_sceneStart a scene - Normal, Altered, or Interrupted?
roll_fateAsk a yes/no question with given odds
get_chaosGet current Chaos Factor (1-9)
set_chaosSet Chaos Factor to specific value
adjust_chaosIncrement or decrement Chaos Factor
charactersManage NPCs list (add/remove/list/roll)
threadsManage plot threads (add/remove/list/roll)

How It Works

Scene Check

When starting a new scene, roll d10 vs Chaos Factor:

ResultWhenMeaning
NormalRoll > ChaosScene proceeds as expected
AlteredRoll ≤ Chaos, evenSame scene with a twist
InterruptedRoll ≤ Chaos, oddCompletely different scene

The Fate Chart

Ask the oracle a yes/no question with odds from impossible to has_to_be.

Results: Yes, No, Exceptional Yes, Exceptional No, or Random Event (on doubles).

Chaos Factor

Represents how out of control the story is (1-9). After each scene:

  • Scene went as expected → decrease chaos
  • Scene spiraled out of control → increase chaos

Characters & Threads Lists

Manage NPCs and plot threads using the Mythic 2e chunking system:

Structure:

  • 25 slots organized into 5 groups of 5
  • Items can appear up to 3 times (for weighting)

Actions:

  • add - Add item to next empty slot (same item up to 3x)
  • remove - Remove all occurrences of an item
  • list - View the current list
  • roll - Random selection using weighted chunking

The Chunking Mechanic:

  1. Roll to select a group (die size based on item count)
  2. Roll d10 to select slot within group (1-2=S1, 3-4=S2, etc.)
  3. If slot is empty → CHOOSE any item that fits, or reroll

Adding important items multiple times increases their probability of being rolled!

Usage

With OpenAI Responses API

const response = await openai.responses.create({ model: "gpt-4o", input: "Add 'The Dark Lord' to the characters list, then start a new scene", tools: [{ type: "mcp", server_label: "mythic", server_url: "YOUR_ENDPOINT_URL", require_approval: "never", }], });

Direct Testing

# Add a character curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"characters","arguments":{"action":"add","name":"Gandalf"}}}' # Roll on characters curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"characters","arguments":{"action":"roll"}}}' # List threads curl -X POST YOUR_ENDPOINT_URL \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"threads","arguments":{"action":"list"}}}'

Example Session

You: Add Frodo, Sam, and Gandalf to the characters list. 
     Add "Destroy the Ring" as a thread (twice since it's important).

AI: [adds characters and threads]
    ✅ Added "Frodo" to slot 1
    ✅ Added "Sam" to slot 2
    ✅ Added "Gandalf" to slot 3
    ✅ Added "Destroy the Ring" to slot 1
    ✅ Added "Destroy the Ring" to slot 2

You: Start a new scene - we're entering Moria.

AI: [checks scene] 🔄 Scene Altered - Roll: 4 vs Chaos 5
    The scene happens, but something's different...

You: Roll a random character to see who causes trouble.

AI: [rolls characters] 🎲 Gandalf
    Group roll: 2 → Group 1
    Slot roll: 5 → Slot 3

You: Is there a Balrog here? (very_unlikely)

AI: [rolls fate] 🎲 Exceptional Yes - Roll: 3 vs threshold 20
    Not just a Balrog... something worse!

See Also

  • mcp-dice - Minimal MCP server example
  • mcp-tester - Test any MCP server
  • Mythic GME 2e - Original game
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.