MythxEngine MCP server
io.github.protoLabsAI/mythxengine·v0.3.0·2 starsTabletop RPG engine over MCP: dice, combat, stress, clocks, world generation, four bundled worlds
2 stars223 downloads/wk
Reviews
Write oneNobody has reviewed MythxEngine yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
MythxEngine tools (100, 15 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_combat_conditionAdd a condition to a combatant. Supports advantage/disadvantage and resistance/vulnerability effects.
add_deadlineAdd a deadline/countdown to track. Specify either expiresIn (minutes from now) or expiresAt (specific time).
add_noteAdd a timestamped note to the session
add_npcRegister a fabricated NPC on the session. Returns a stable `npcId` to use in `generate_portrait` and `showDialogue`. Use BEFORE introducing any NPC that isn't already in the world pack \u2014 without this the NPC has no identity and their portrait can't be tracked across turns.
advance_timeAdvances time by N minutes
advance_turnMove to the next player in turn order
apply_conditionAdd a condition to a character (narrative/exploration). For combat, use `add_combat_condition` instead so combat effects (advantage/disadvantage, modifiers) are picked up.
apply_damageApply damage directly to a combatant (bypassing attack roll)
assemble_world_packCombine all generated content into a complete WorldContentPack and save it.
assign_characterLink a player to a character
attackPerform an attack against a target. Supports advantage/disadvantage and damage type for resistance/vulnerability. Returns an envelope with `outcome` (five-tier) and a one-line `summary` as the headline; mechanical detail is in `result`, follow-up moves in `suggested_next`.
batch_generateAfter seeding, returns ALL generation prompts at once for parallel LLM execution. Execute each prompt with an LLM, then call save_generation_result for each result. This replaces calling individual generate_* tools one by one.
check_clock_triggersCheck if any time-based clock stages have triggered based on current game time.
create_characterwrite actionCreate a new character in the session
create_playerwrite actionAdd a player (human or AI) to the session
create_sessionwrite actionCreate a new game session, optionally associated with a world pack.
damage_characterDeal damage to a character (narrative/environmental, not from combat resolution). Floors HP at 0 and reports defeat. For combat attacks, use `attack`. For combat-target damage, use `apply_damage`.
delete_characterwrite actionDelete a character from the session
delete_playerwrite actionRemove a player from the session
delete_sessionwrite actionDelete a session and all its data
end_combatEnd the current combat
end_turnsEnd turn-based coordination and return to free-form play
generate_archetypesGenerate playable character archetypes based on the world seed. Returns a prompt for LLM execution.
generate_arcsGenerate story arcs that group situations around central tensions. Returns a prompt for LLM execution.
generate_conditionsGenerate status effects and conditions based on the world seed. Returns a prompt for LLM execution.
generate_encountersGenerate encounters based on the world seed. Returns a prompt for LLM execution.
generate_factionsGenerate factions with relationships, resources, and territory based on the world seed. Returns a prompt for LLM execution.
generate_itemsGenerate items based on the world seed. Returns a prompt for LLM execution.
generate_locationsGenerate locations based on the world seed. Returns a prompt for LLM execution.
generate_monstersGenerate monsters based on the world seed. Returns a prompt for LLM execution.
generate_narrativeGenerate narrative guidance (opening scenes, plot hooks, conflicts) based on the world seed. Returns a prompt for LLM execution.
generate_npcsGenerate NPCs based on the world seed. Returns a prompt for LLM execution.
generate_situationsGenerate situations (nodes) based on the world seed using Alexandrian node-based design. Returns a prompt for LLM execution. Can generate all at once or one at a time using count=1 with focusOn for better parallelism.
generate_world_imagesGenerate images for world pack entities (all entity types by default). Run after assemble_world_pack to pre-bake character select images.
generate_world_seedwrite actionCreate the foundation for a new world from a campaign seed prompt. Returns a prompt for LLM execution.
get_active_clocksList all active situation clocks with their current status.
get_ai_player_contextGet full context for an AI player to make a decision
get_arcGet full details for a specific story arc from a world pack. Includes structure, situations, and resolution patterns.
get_archetypeGet full details for a specific archetype from a world pack.
get_available_leadsList leads that are currently available for discovery. Filter by location, NPC, or prominence.
get_characterGet a character's full details
get_combat_stateGet the current combat state
get_conditionGet full details for a specific condition from a world pack.
get_current_turnGet the current turn state and active player
get_discovered_leadsList all leads that players have discovered.
get_encounterGet full details for a specific encounter from a world pack.
get_factionGet full details for a specific faction from a world pack.
get_generation_statusCheck world generation progress. Shows completed, in-progress, and pending phases with entity counts.
get_itemGet full details for a specific item from a world pack.
get_locationGet full details for a specific location from a world pack.
get_monsterGet full details for a specific monster from a world pack.
get_npcGet full details for a specific NPC from a world pack.
get_npc_dispositionQuick check: How does this NPC feel about the party?
get_playerGet a player's full details
get_relationshipGet an NPC's current attitude and interaction history with the party.
get_situationGet full details for a specific situation from a world pack. Includes leads, clock, complications, and outcomes.
get_stressGet a character's current stress level, trauma status, and whether they can safely push.
get_timeReturns current game time for session
heal_characterRestore HP to a character. Capped at max HP. Use for any HP recovery (rest, spell, potion narration, GM fiat).
initialize_relationshipStart tracking a relationship with an NPC.
list_charactersList all characters in a session
list_playersList all players in a session
list_relationshipsList all tracked NPC relationships.
list_sessionsList all game sessions. Optionally filter by world pack ID.
list_world_packsList all saved world packs with their metadata and content counts.
load_sessionLoad an existing game session by ID. Returns session state summary.
load_skillLoad on-demand skill guidance into your context. Use when the current situation matches a skill's purpose (e.g. about to generate images, entering combat). The skill body is markdown \u2014 read it and apply it on this turn. Skill names come from the "Available skills" section of your system prompt. Available skills: …
load_world_summaryLoad a compact GM reference for a world pack. Returns a token-efficient summary with entity IDs, names, and key stats. Use get_* tools for full entity details.
next_turnAdvance to the next turn in combat
pause_clockPause an active clock. Time-based triggers will not fire while paused.
push_rollSpend 2 stress to add +1d6 bonus to a failed or partial roll. Can trigger trauma if stress exceeds max. Returns an envelope with `outcome` ('pushed' or 'trauma_gained') and a one-line `summary` as the headline; mechanical detail is in `result` (including `previousOutcome` \u2192 `newOutcome`, the re-derived outcome tier for the pushed margin), stress/trauma changes in `state_delta`.
recover_stressRecover stress during rest. Short rest recovers 2 stress, long rest recovers all stress.
remove_conditionwrite actionRemove a condition from a character. Accepts the condition id OR its display name (case-insensitive). No-op if the condition isn't on the character.
remove_deadlinewrite actionRemove a deadline by ID
request_player_inputMark a human player as awaiting input for their turn
resist_consequenceSpend stress to reduce a consequence. Roll ability to potentially reduce cost. Minor=1, Moderate=2, Severe=3 base cost. Pass `damage` when the consequence is HP damage \u2014 the tool then applies the mechanical effect itself (successful resist halves it, failed resist lands in full; set `alreadyApplied` if the damage already hit HP so it refunds the reduction). Returns an envelope with `outcome`
resume_clockResume a paused clock.
resume_generationResume an interrupted world generation session. Analyzes session state to report progress and optionally reset incomplete steps.
reveal_clockMake a hidden situation clock visible to players on their HUD. Call this exactly when your narration reveals the threat or deadline to the players \u2014 not before. Until revealed, clocks are GM-only state and may tick in secret.
reveal_leadMark a lead as discovered by the players.
roll_custom_testPerform a custom test defined in the world pack rules (e.g., panic check, sanity roll). Returns success/failure, any table rolls, and effects to apply.
roll_diceRoll dice using standard notation (e.g., '2d6+3', 'd20', '4d6'). Optionally use session RNG for determinism.
roll_initiativeRoll initiative for all combatants and set turn order
roll_testPerform a skill or ability test for a character. Rolls d20 + ability + skill + modifiers vs difficulty. Supports advantage/disadvantage. Returns an envelope with `outcome` (five-tier) and a one-line `summary` as the headline; mechanical detail is in `result`, follow-up moves in `suggested_next`.
save_generation_resultSave LLM-generated content back to the session. Call this after executing a generation prompt. Accepts JSON or XML formatted results.
search_leadsSearch for leads by keyword across all lead information.
search_notesSearch session notes by keyword or tags
set_play_modeSet the play mode for a session. 'interactive' prompts the player for decisions, 'auto' plays all characters autonomously. Persists across context compaction.
set_timeSets game time (for initialization/GM override)
start_combatInitialize combat with characters and enemies. Returns an envelope with `outcome: 'combat_started'` and a one-line `summary` as the headline; combatant lists in `result`, combat state in `state_delta`. Always follow with `roll_initiative` (also surfaced in `suggested_next.next_action`).
start_situation_clockStart a situation clock. The clock tracks what happens if PCs don't intervene.
start_turnsBegin turn-based coordination for multi-player gameplay
submit_ai_player_actionwrite actionRecord an AI player's decided action
submit_player_actionwrite actionRecord a human player's chosen action
suggest_lead_opportunitySuggest ways to naturally surface leads pointing to a target situation. Supports the Three Clue Rule.
tick_clockManually advance a clock to its next stage. Use for event-based triggers or GM override.
update_companion_statewrite actionUpdate an AI companion's internal state (loyalty, mood, grievances, memories). Call after events that would plausibly affect the companion's attitude toward the party.
update_pacing_statewrite actionUpdate narrative pacing state after each beat. Track tension level, phase transitions, and spotlight rotation to maintain balanced storytelling.
update_playerwrite actionUpdate a player's status, name, controlType, or AI persona
update_relationshipwrite actionRecord an interaction and update NPC relationship. Automatically adjusts attitude based on impact.
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- Code scan6 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 37 days ago12/15
- Maintainer identityregistry namespace matches repository owner7/10
How MythxEngine compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 86/100
- higher than 72% of 48,255 servers
- Tools
- 100
- the typical server has 7
- Tools that change things
- 15%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 75% of 28,688 servers
- Downloads a week
- 223
- more than 77% of 12,191 servers with a package
What its tools let an agent do: 60 read · 21 create · 9 change · 5 delete · 5 run or deploy
Install MythxEngine in Claude Code, Cursor or VS Code
Runs npx -y @mythxengine/mcp-server on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add mythxengine -- npx -y @mythxengine/mcp-server
What the publisher says
From the MythxEngine repository's README, as published. We do not edit it. Read it on GitHub
MythxEngine — tabletop RPG engine over MCP
A complete tabletop RPG engine your AI can run: deterministic dice, five-tier outcomes, FitD-style stress, combat tracking, situation clocks, investigations, NPC relationships, world generation — 134 tools over the Model Context Protocol, with four complete starter worlds bundled in.
Claude (or any MCP client) becomes your Game Master. The engine keeps the rules honest: same seed + same actions = same outcome.
Install
Claude Code — plugin (skills + tools, recommended)
/plugin marketplace add protoLabsAI/mythx-mcp
/plugin install rpg@mythx-pluginsOne install delivers the MCP server plus play skills (/rpg:play, /rpg:combat-mode, /rpg:world-building-mode, …).
Claude Code — tools only
claude mcp add rpg -- npx -y @mythxengine/mcp-serverRequires Node >= 22.13.
Claude Desktop
Download mythxengine-.mcpb from the latest release and drag it into Settings → Extensions. No other setup — Claude Desktop ships its own Node runtime.
Five-minute walkthrough
Everything below is one conversation with Claude after installing. Four worlds are imported on first run — Port Miriam (harbor noir), Aethelgard (mythic frontier), Threshold Deep (weird depths), and the Treehouse Anthology.
1. Pick a world, make a character.
Start a session in Port Miriam. I want to play a dockside fixer who owes the
wrong people money.
The GM calls createsession, loadworldsummary, and createcharacter — your fixer gets HP, stress, gear, and a spot in the world's faction web.
2. Roll with real stakes. Every test is framed with position (how bad is failure?) and effect (how much does success buy?):
I try to slip past the harbor patrol to reach the smuggler's skiff.
roll_test → risky position / standard effect → 11 vs 13: partial
"Yes, but..." — you reach the skiff, and a lantern swings your way.
GM move suggested: put_someone_in_spotFive outcomes — critical success, success, partial, failure, critical failure — and on a bad roll you can pushroll (spend 2 stress for +1d6) or resistconsequence to buy the severity down. Stress is a real currency; overflow means trauma.
3. Fight a combat round.
Two dockhands block the gangway. I draw my hook-knife.
startcombat → rollinitiative → attack — initiative order, armor, conditions, and damage all tracked; every attack returns the same five-tier outcome with suggested GM moves on a miss.
4. Watch a clock tick. The patrol you dodged? The GM started a harbor-alert clock. Fail forward enough times (tick_clock fires automatically on partials/failures when wired) and the dock lights come on — consequences arrive on schedule, not by fiat.
That's the loop: fiction in, mechanics out, consequences on clocks.
What's in the box
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
MythxEngine: common questions
- Is MythxEngine MCP server safe?
- Yes, by our scan: it is graded A (86/100). Read the MythxEngine safety report
- How do I install MythxEngine?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does MythxEngine need an API key?
- No secret keys are declared. It reads 1 setting from the environment.
- Is MythxEngine maintained?
- The last commit was 76 days ago (2026-08-20). The latest release is v0.3.0.
- How does MythxEngine compare with other MCP servers?
- safety score 86/100 (higher than 72% of 48,255 servers); tools 100 (the typical server has 7); tools that change things 15% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.