MCP.Market

MythxEngine MCP server

by protoLabsAI·io.github.protoLabsAI/mythxengine·v0.3.0·2 stars

Tabletop RPG engine over MCP: dice, combat, stress, clocks, world generation, four bundled worlds

A86/100grade A
What users say
No reviews yet
Be the first
Safety scan
A86/100

full report

Adoption
Growing

2 stars223 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • add_combat_condition

    Add a condition to a combatant. Supports advantage/disadvantage and resistance/vulnerability effects.

  • add_deadline

    Add a deadline/countdown to track. Specify either expiresIn (minutes from now) or expiresAt (specific time).

  • add_note

    Add a timestamped note to the session

  • add_npc

    Register 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_time

    Advances time by N minutes

  • advance_turn

    Move to the next player in turn order

  • apply_condition

    Add a condition to a character (narrative/exploration). For combat, use `add_combat_condition` instead so combat effects (advantage/disadvantage, modifiers) are picked up.

  • apply_damage

    Apply damage directly to a combatant (bypassing attack roll)

  • assemble_world_pack

    Combine all generated content into a complete WorldContentPack and save it.

  • assign_character

    Link a player to a character

  • attack

    Perform 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_generate

    After 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_triggers

    Check if any time-based clock stages have triggered based on current game time.

  • create_characterwrite action

    Create a new character in the session

  • create_playerwrite action

    Add a player (human or AI) to the session

  • create_sessionwrite action

    Create a new game session, optionally associated with a world pack.

  • damage_character

    Deal 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 action

    Delete a character from the session

  • delete_playerwrite action

    Remove a player from the session

  • delete_sessionwrite action

    Delete a session and all its data

  • end_combat

    End the current combat

  • end_turns

    End turn-based coordination and return to free-form play

  • generate_archetypes

    Generate playable character archetypes based on the world seed. Returns a prompt for LLM execution.

  • generate_arcs

    Generate story arcs that group situations around central tensions. Returns a prompt for LLM execution.

  • generate_conditions

    Generate status effects and conditions based on the world seed. Returns a prompt for LLM execution.

  • generate_encounters

    Generate encounters based on the world seed. Returns a prompt for LLM execution.

  • generate_factions

    Generate factions with relationships, resources, and territory based on the world seed. Returns a prompt for LLM execution.

  • generate_items

    Generate items based on the world seed. Returns a prompt for LLM execution.

  • generate_locations

    Generate locations based on the world seed. Returns a prompt for LLM execution.

  • generate_monsters

    Generate monsters based on the world seed. Returns a prompt for LLM execution.

  • generate_narrative

    Generate narrative guidance (opening scenes, plot hooks, conflicts) based on the world seed. Returns a prompt for LLM execution.

  • generate_npcs

    Generate NPCs based on the world seed. Returns a prompt for LLM execution.

  • generate_situations

    Generate 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_images

    Generate images for world pack entities (all entity types by default). Run after assemble_world_pack to pre-bake character select images.

  • generate_world_seedwrite action

    Create the foundation for a new world from a campaign seed prompt. Returns a prompt for LLM execution.

  • get_active_clocks

    List all active situation clocks with their current status.

  • get_ai_player_context

    Get full context for an AI player to make a decision

  • get_arc

    Get full details for a specific story arc from a world pack. Includes structure, situations, and resolution patterns.

  • get_archetype

    Get full details for a specific archetype from a world pack.

  • get_available_leads

    List leads that are currently available for discovery. Filter by location, NPC, or prominence.

  • get_character

    Get a character's full details

  • get_combat_state

    Get the current combat state

  • get_condition

    Get full details for a specific condition from a world pack.

  • get_current_turn

    Get the current turn state and active player

  • get_discovered_leads

    List all leads that players have discovered.

  • get_encounter

    Get full details for a specific encounter from a world pack.

  • get_faction

    Get full details for a specific faction from a world pack.

  • get_generation_status

    Check world generation progress. Shows completed, in-progress, and pending phases with entity counts.

  • get_item

    Get full details for a specific item from a world pack.

  • get_location

    Get full details for a specific location from a world pack.

  • get_monster

    Get full details for a specific monster from a world pack.

  • get_npc

    Get full details for a specific NPC from a world pack.

  • get_npc_disposition

    Quick check: How does this NPC feel about the party?

  • get_player

    Get a player's full details

  • get_relationship

    Get an NPC's current attitude and interaction history with the party.

  • get_situation

    Get full details for a specific situation from a world pack. Includes leads, clock, complications, and outcomes.

  • get_stress

    Get a character's current stress level, trauma status, and whether they can safely push.

  • get_time

    Returns current game time for session

  • heal_character

    Restore HP to a character. Capped at max HP. Use for any HP recovery (rest, spell, potion narration, GM fiat).

  • initialize_relationship

    Start tracking a relationship with an NPC.

  • list_characters

    List all characters in a session

  • list_players

    List all players in a session

  • list_relationships

    List all tracked NPC relationships.

  • list_sessions

    List all game sessions. Optionally filter by world pack ID.

  • list_world_packs

    List all saved world packs with their metadata and content counts.

  • load_session

    Load an existing game session by ID. Returns session state summary.

  • load_skill

    Load 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_summary

    Load 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_turn

    Advance to the next turn in combat

  • pause_clock

    Pause an active clock. Time-based triggers will not fire while paused.

  • push_roll

    Spend 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_stress

    Recover stress during rest. Short rest recovers 2 stress, long rest recovers all stress.

  • remove_conditionwrite action

    Remove 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 action

    Remove a deadline by ID

  • request_player_input

    Mark a human player as awaiting input for their turn

  • resist_consequence

    Spend 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_clock

    Resume a paused clock.

  • resume_generation

    Resume an interrupted world generation session. Analyzes session state to report progress and optionally reset incomplete steps.

  • reveal_clock

    Make 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_lead

    Mark a lead as discovered by the players.

  • roll_custom_test

    Perform 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_dice

    Roll dice using standard notation (e.g., '2d6+3', 'd20', '4d6'). Optionally use session RNG for determinism.

  • roll_initiative

    Roll initiative for all combatants and set turn order

  • roll_test

    Perform 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_result

    Save LLM-generated content back to the session. Call this after executing a generation prompt. Accepts JSON or XML formatted results.

  • search_leads

    Search for leads by keyword across all lead information.

  • search_notes

    Search session notes by keyword or tags

  • set_play_mode

    Set the play mode for a session. 'interactive' prompts the player for decisions, 'auto' plays all characters autonomously. Persists across context compaction.

  • set_time

    Sets game time (for initialization/GM override)

  • start_combat

    Initialize 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_clock

    Start a situation clock. The clock tracks what happens if PCs don't intervene.

  • start_turns

    Begin turn-based coordination for multi-player gameplay

  • submit_ai_player_actionwrite action

    Record an AI player's decided action

  • submit_player_actionwrite action

    Record a human player's chosen action

  • suggest_lead_opportunity

    Suggest ways to naturally surface leads pointing to a target situation. Supports the Three Clue Rule.

  • tick_clock

    Manually advance a clock to its next stage. Use for event-based triggers or GM override.

  • update_companion_statewrite action

    Update 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 action

    Update narrative pacing state after each beat. Track tension level, phase transitions, and spotlight rotation to maintain balanced storytelling.

  • update_playerwrite action

    Update a player's status, name, controlType, or AI persona

  • update_relationshipwrite action

    Record 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

no findings
  • 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
Overall 86/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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-plugins

One 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-server

Requires 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_spot

Five 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.