rpg-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| subscribe_to_eventsC | Subscribe to real-time events on world or combat topics. Events sent as JSON-RPC notifications. |
| unsubscribe_from_eventsC | Unsubscribe from all event topics |
| search_toolsB | Search for available RPG tools by category, capability, or keyword. Use this to discover tools before using them. |
| load_tool_schemaA | Load the full input schema for a specific tool (required before first use). Returns parameter definitions, types, and usage info. |
| generate_worldC | Generate a new procedural RPG world with seed, width, and height parameters. Example: { "seed": "atlas", "width": 50, "height": 50 } |
| get_world_stateC | Retrieves the current state of the generated world. |
| apply_map_patchA | Apply DSL commands to modify the world map. Use find_valid_poi_location first for structure placement. Example: { "worldId": "id", "script": "ADD_STRUCTURE..." } |
| get_world_map_overviewB | Returns a high-level overview of the world including biome distribution and statistics. |
| get_region_mapC | Returns detailed information about a specific region including its tiles and structures. |
| get_world_tilesB | Returns the full tile grid for rendering the world map. Includes biome, elevation, region, and river data for visualization. |
| preview_map_patchA | Previews what a DSL patch script would do without applying it to the world. |
| find_valid_poi_locationB | Find terrain-valid locations for placing a POI/structure. Returns ranked candidates by suitability. |
| suggest_poi_locationsC | Batch suggest locations for multiple POI types at once. Returns DSL script for easy application. |
| create_encounterA | Create a combat encounter with positioned combatants and terrain. š WORKFLOW:
ā ļø CRITICAL VERTICALITY RULES:
ā CORRECT: Goblin on rock at (15,3) ā position: {x:15, y:3, z:0} ā WRONG: Goblin on rock ā position: {x:15, y:3, z:25} (will fall!) šļø TERRAIN GENERATION RULES:
š PATTERN TEMPLATES (USE THESE!): RIVER VALLEY (cliffs on sides, river in middle): obstacles: ["5,0","5,1","5,2",...,"5,19"] (west cliff), ["13,0","13,1","13,2",...,"13,19"] (east cliff) water: ["8,0","9,0","10,0","8,1","9,1","10,1",...] (3-wide river at x=8,9,10) CANYON (two parallel walls): obstacles: ["0,5","1,5","2,5",...,"9,5"] (north wall), ["0,15","1,15","2,15",...,"9,15"] (south wall) Example: { "seed": "battle-1", "terrain": { "obstacles": ["10,5", "11,5", "10,6"], "water": ["5,10", "5,11", "6,11"] }, "participants": [ {"id": "hero-1", "name": "Valeros", "hp": 20, "maxHp": 20, "initiativeBonus": 2, "position": {"x": 15, "y": 15, "z": 0}}, {"id": "goblin-1", "name": "Goblin Archer", "hp": 7, "maxHp": 7, "initiativeBonus": 1, "position": {"x": 10, "y": 5, "z": 0}, "isEnemy": true} ] } |
| get_encounter_stateC | Get the current state of the active combat encounter. |
| execute_combat_actionB | Execute a combat action (attack, heal, move, cast_spell, etc.). Examples: { "action": "attack", "actorId": "hero-1", "targetId": "goblin-1", "attackBonus": 5, "dc": 12, "damage": 6 } { "action": "heal", "actorId": "cleric-1", "targetId": "hero-1", "amount": 8 } { "action": "move", "actorId": "hero-1", "targetPosition": { "x": 5, "y": 3 } } { "action": "disengage", "actorId": "hero-1" } { "action": "cast_spell", "actorId": "wizard-1", "spellName": "Fireball", "targetId": "goblin-1", "slotLevel": 3 } |
| advance_turnC | Advance to the next combatant's turn. |
| end_encounterC | End the current combat encounter. |
| load_encounterC | Load a combat encounter from the database. |
| roll_death_saveA | Roll a d20 death saving throw for a character at 0 HP. 10+ success, nat 20 regains 1 HP, nat 1 counts as 2 failures. |
| execute_lair_actionB | Execute a lair action at initiative 20 when isLairActionPending is true. Apply environmental effects to targets. |
| render_mapB | Render an ASCII map of the current combat state showing participant positions, obstacles, and terrain. Returns a text-based grid visualization with:
Example: { "encounterId": "encounter-battle-1-123456", "width": 15, "height": 15 } |
| calculate_aoeA | Calculate which tiles and participants are affected by an Area of Effect spell or ability. Supports circle (Fireball), cone (Burning Hands), and line (Lightning Bolt) shapes. Example - Fireball (20ft radius circle): { "encounterId": "encounter-1", "shape": "circle", "origin": { "x": 10, "y": 10 }, "radius": 4 } Example - Burning Hands (15ft cone): { "encounterId": "encounter-1", "shape": "cone", "origin": { "x": 5, "y": 5 }, "direction": { "x": 1, "y": 0 }, "length": 3, "angle": 90 } Example - Lightning Bolt (100ft line): { "encounterId": "encounter-1", "shape": "line", "origin": { "x": 0, "y": 5 }, "direction": { "x": 1, "y": 0 }, "length": 20 } |
| update_terrainA | Add, remove, or modify terrain in an active encounter. ALWAYS prefer ranges over tiles arrays for efficiency. TERRAIN TYPES:
INPUT OPTIONS (use ranges for efficiency):
RANGE SHORTCUTS (use these!): LINES:
SHAPES:
ALGEBRA (for curves, diagonals):
EXAMPLES: Maze outer walls (1 call vs 4): { "ranges": ["border:0"], "gridWidth": 100, "gridHeight": 100 } Complex maze section: { "ranges": ["y=10:0:50", "x=25:10:40", "line:50,50,75,25", "box:60,60,15,15"] } Diagonal river: { "terrainType": "water", "ranges": ["y=x:0:99"] } Circular arena: { "ranges": ["ring:50,50,40", "border:0"] } |
| place_propA | Place an improvised prop/object on the battlefield during combat. Props are free-form terrain features with rich description that can be interacted with. Think: ladders, wagons, trees, buildings, towers, cliffs, chandeliers, etc. ā ļø HEIGHT SEMANTICS (CRITICAL):
šļø PROP TYPES:
Cover Types (D&D 5e):
Example - Climbable cliff with slopes adjacent: { "encounterId": "encounter-1", "position": "15,20", "label": "Rocky Cliff", "propType": "structure", "heightFeet": 25, "cover": "half", "climbable": true, "climbDC": 12, "description": "A 25ft rocky outcrop. Adjacent tiles (14,20), (16,20) slope down." } |
| measure_distanceA | Calculate the distance between two points or entities on the battlefield. Returns distance in feet (5ft per square, diagonal = 5ft using D&D simplified rules). Example - Between two coordinates: { "encounterId": "encounter-1", "from": { "type": "position", "value": "10,10" }, "to": { "type": "position", "value": "15,18" } } Example - Between two entities: { "encounterId": "encounter-1", "from": { "type": "entity", "value": "hero-1" }, "to": { "type": "entity", "value": "goblin-3" } } Example - From entity to position: { "encounterId": "encounter-1", "from": { "type": "entity", "value": "wizard-1" }, "to": { "type": "position", "value": "25,30" } } |
| generate_terrain_patchA | Generate a terrain patch using procedural noise or preset patterns. Much easier than placing individual tiles - LLM describes the area and this tool generates it. Biome Presets:
Density: 0.1 (sparse) to 1.0 (dense) Example - Generate a forest clearing: { "encounterId": "encounter-1", "biome": "forest", "origin": { "x": 10, "y": 10 }, "width": 20, "height": 20, "density": 0.4, "seed": "goblin-ambush", "clearCenter": true } Example - Dungeon room: { "encounterId": "encounter-1", "biome": "dungeon", "origin": { "x": 0, "y": 0 }, "width": 15, "height": 12, "density": 0.6, "seed": "throne-room" } |
| generate_terrain_patternA | Generate terrain using a pattern template. ONE CALL generates entire layout. PATTERNS:
MAZE EXAMPLE (100x100 in ONE call): { "encounterId": "enc-1", "pattern": "maze", "origin": { "x": 0, "y": 0 }, "width": 100, "height": 100, "seed": "maze-runner-001" } MAZE WITH ROOMS: { "pattern": "maze_rooms", "width": 100, "height": 100, "roomCount": 8 } |
| create_worldC | Create a new world in the database with name, seed, and dimensions. Example: { "name": "New World", "seed": "abc", "width": 50, "height": 50 } |
| get_worldC | Retrieve a world by ID. |
| list_worldsC | List all worlds. |
| update_world_environmentC | Update environmental properties (time, weather, lighting, etc.) for a world. |
| delete_worldC | Delete a world by ID. |
| create_characterA | Create a new character. Only name is required - everything else has sensible defaults. Character types:
Class and race can be ANY string - use standard D&D classes/races or create custom ones. Stats can be any positive integer (not limited to 3-18). Example (minimal - just name): { "name": "Mysterious Stranger" } Example (full): { "name": "Valeros", "class": "Fighter", "race": "Human", "hp": 20, "maxHp": 20, "ac": 18, "level": 1, "stats": { "str": 16, "dex": 14, "con": 14, "int": 10, "wis": 12, "cha": 10 }, "characterType": "pc" } Example (custom class/race): { "name": "Whiskers", "class": "Chronomancer", "race": "Mousefolk", "stats": { "str": 6, "dex": 18, "con": 10, "int": 16, "wis": 14, "cha": 12 } } |
| get_characterC | Retrieve a character by ID. |
| update_characterB | Update character properties. All fields except id are optional. For conditions, you can pass an array to SET all conditions (replacing existing), or use addConditions/removeConditions for granular control. |
| list_charactersC | List all characters, optionally filtered by type (pc, npc, enemy, neutral). |
| delete_characterC | Delete a character by ID. |
| add_xpC | Add experience points to a character. Checks for level-up thresholds. |
| get_level_progressionC | Get level progression details including XP needed for next level. |
| level_upC | Increment character level and optionally update stats like HP. |
| add_narrative_noteC | Create a typed narrative note (plot thread, canonical moment, NPC voice, foreshadowing, or session log). Used to build long-term narrative memory. |
| search_narrative_notesC | Search and filter narrative notes by type, status, tags, or text content. Returns matching notes for context building. |
| update_narrative_noteC | Update an existing narrative note. Common use: marking a plot_thread as resolved. |
| get_narrative_noteC | Retrieve a single narrative note by ID. |
| delete_narrative_noteA | Delete a narrative note. Use sparingly - prefer archiving via status update. |
| get_narrative_context_notesC | Retrieve aggregated narrative context for LLM prompt injection. Returns active plot threads, recent canonical moments, NPC voices, and pending foreshadowing. |
| create_partyB | Create a new party (adventuring group). Example: { "name": "The Fellowship", "description": "Nine companions on a quest to destroy the One Ring", "worldId": "middle-earth-id", "initialMembers": [ { "characterId": "gandalf-id", "role": "leader" }, { "characterId": "frodo-id", "role": "member" } ] } |
| get_partyC | Get a party with all member details, leader, and active character info. |
| list_partiesB | List all parties, optionally filtered by status or world. |
| update_partyC | Update party properties (name, description, location, formation, status). |
| delete_partyB | Delete a party. Members become unassigned (not deleted). |
| add_party_memberC | Add a character to a party with role (leader, member, companion, hireling, prisoner, mount). |
| remove_party_memberC | Remove a character from a party. |
| update_party_memberC | Update a party member's role, position, or notes. |
| set_party_leaderC | Set the party leader. The character must already be a member. |
| set_active_characterC | Set the active character (player's POV). The character must already be a member. |
| get_party_membersC | Get all members of a party with their character details. |
| get_party_contextC | Get party context for LLM prompts. Verbosity: minimal (~150 tokens), standard (~400), or detailed (~800). |
| get_unassigned_charactersB | Get characters not assigned to any party. Useful for adding members. |
| move_partyC | Move a party to world map coordinates or POI. Updates location name and optional POI reference. |
| get_party_positionC | Get the current position of a party on the world map. |
| get_parties_in_regionB | Get all parties within a certain distance of a coordinate (useful for finding nearby groups). |
| create_item_templateC | Define a new type of item (e.g., "Iron Sword"). |
| give_itemC | Add an item to a character's inventory. |
| remove_itemC | Remove an item from a character's inventory. |
| equip_itemC | Equip an item in a specific slot. |
| unequip_itemC | Unequip an item. |
| get_inventoryC | List all items in a character's inventory. |
| get_itemC | Get details of a specific item by ID. |
| list_itemsC | List all item templates in the database. |
| search_itemsC | Search for items by name, type, or value range. |
| update_itemC | Update an existing item template. |
| delete_itemC | Delete an item template from the database. |
| transfer_itemC | Transfer an item from one character to another. |
| use_itemC | Use a consumable item (removes it from inventory and applies effects). |
| get_inventory_detailedC | Get detailed inventory with full item info, sorted by equipped/type/name. |
| create_questC | Define a new quest in the world. |
| get_questC | Get a single quest by ID with full details. |
| list_questsB | List all quests, optionally filtered by world. |
| assign_questC | Assign a quest to a character. |
| update_objectiveC | Update progress on a quest objective. |
| complete_objectiveC | Mark an objective as fully completed. |
| complete_questC | Mark a quest as completed and grant rewards. |
| get_quest_logC | Get the quest log for a character. |
| dice_rollA | Roll dice using standard notation. Supports: basic rolls (2d6+3), drop lowest (4d6dl1), drop highest (4d6dh1), keep lowest (2d20kl1), keep highest (2d20kh1), advantage/disadvantage, and exploding dice (2d6!). |
| probability_calculateC | Calculate probabilities for dice rolls, including distributions and expected values. |
| algebra_solveC | Solve algebraic equations. |
| algebra_simplifyD | Simplify algebraic expressions. |
| physics_projectileC | Calculate projectile motion trajectory. |
| create_nationC | Create a new nation in the world. |
| get_strategy_stateB | Get the world state from the perspective of a specific nation (applies Fog of War for Grand Strategy). |
| get_nation_stateC | Get private state for a specific nation (LLM only). |
| propose_allianceC | Propose an alliance to another nation. |
| claim_regionC | Assert a territorial claim on a region. |
| resolve_turnC | Process a full turn cycle (economy, conflicts, etc.). |
| init_turn_stateC | Initialize turn management for a world (call once per world) |
| get_turn_statusC | Check current turn state and which nations are ready |
| submit_turn_actionsC | Submit actions for this turn (batched) |
| mark_readyC | Signal that your nation is done planning for this turn |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mnehmos/mnehmos.rpg.mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server