
D&D Combat
STDIOAdvanced D&D 5e MCP server suite with 3D combat and character management
Advanced D&D 5e MCP server suite with 3D combat and character management
The most advanced MCP server suite for AI-powered D&D experiences! Features 3D spatial combat, ASCII battlefield visualization, and complete character management.
📍 **BATTLEFIELD MAP** (X→, Y↓):
0│· · · · · · · · · · · · · · ·
1│· · · · · · · · · · · · · · ·
2│· · · · · · · · █ · · · · · ·
3│· · · · · · · · █ · · · · · ·
4│· · · · · ≡ ≡ · █ · · · · · ·
5│· · · · · ≡ L · █ · · · · · ·
6│· · · K · · · · · · · · · · ·
7│· · · · · · · · · · · · · · ·
8│· · · · · · · · · · · · S · ·
9│· · · · · · · · · · · · · · ·
└0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
**LEGEND**: █=wall, ■=pillar, ≡=stairs, Letters=creatures
🎯 **Lyra Swiftarrow** is standing on stairs at coordinates (6,5,5).
⚔️ **ENEMIES IN SIGHT**:
Kael Ironshield (25ft close) - clear shot,
Stone Gargoyle (38ft medium) - clear shot
🏃 **MOVEMENT OPTIONS**: pillar (32ft away), wall (12ft away)
2d20kh1
(advantage) and 2d20kl1
(disadvantage)Roo Code Installation Required:
code --install-extension RooVeterinaryInc.roo-cline
# Game State Server cd game-state-server npm install && npm run build # Combat Engine Server cd ../combat-engine-server npm install && npm run build
Create .env
files in each server directory:
game-state-server/.env:
DATABASE_PATH=./data/my_rpg.db
PORT=3001
combat-engine-server/.env:
PORT=3002
# Terminal 1 cd game-state-server && npm start # Terminal 2 cd combat-engine-server && npm start
Add to your mcp_settings.json
(typically at %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json
):
{ "mcpServers": { "rpg-game-state": { "name": "rpg-game-state-server", "command": "node", "args": ["dist/index.js"], "cwd": "PATH_TO_YOUR_PROJECT/rpg-mcp-servers/game-state-server", "enabled": true, "alwaysAllow": [ "create_character", "get_character", "get_character_by_name", "list_characters", "update_character", "add_item", "get_inventory", "remove_item", "update_item", "save_world_state", "get_world_state", "update_world_state", "create_npc", "create_npc_group", "get_npc", "list_npcs", "update_npc", "remove_npc", "create_encounter", "add_to_encounter", "get_encounter_state", "get_active_encounter", "start_turn", "end_turn", "next_turn", "consume_action", "end_encounter", "apply_damage", "save_story_progress", "add_quest", "get_active_quests", "update_quest_state", "assign_quest_to_character" ] }, "rpg-combat-engine": { "name": "rpg-combat-engine-server", "command": "node", "args": ["dist/index.js"], "cwd": "PATH_TO_YOUR_PROJECT/rpg-mcp-servers/combat-engine-server", "enabled": true, "alwaysAllow": [ "roll_dice", "roll_check", "attack_roll", "initiative_roll", "damage_roll", "saving_throw", "use_reaction", "use_legendary_action", "trigger_lair_action", "execute_multiattack", "initialize_battlefield", "place_creature", "move_creature", "check_line_of_sight", "get_area_effect_targets", "get_tactical_summary", "check_flanking", "check_height_advantage", "describe_battlefield", "describe_detailed_tactical_situation", "generate_battlefield_map", "get_combat_log", "clear_combat_log" ] } } }
📝 Note: Replace PATH_TO_YOUR_PROJECT
with your actual path (e.g., C:/projects/rpg-mcp-servers
).
// Creates a new D&D character with full stats create_character({ name: "Lyra Swiftarrow", class: "Ranger", stats: { strength: 14, dexterity: 18, constitution: 16, intelligence: 12, wisdom: 15, charisma: 10 } })
// Initialize battlefield with terrain initialize_battlefield({ width: 15, height: 12, terrain: [ { type: "wall", position: {x: 8, y: 2, z: 0}, dimensions: {width: 1, height: 4, depth: 5} }, { type: "stairs", position: {x: 5, y: 4, z: 0}, dimensions: {width: 2, height: 2, depth: 5} } ] }) // Place creatures in 3D space place_creature({ creature_id: "ranger_lyra", name: "Lyra Swiftarrow", x: 6, y: 5, z: 5, size: "medium", speed: 30, reach: 5 }) // Get tactical situation describe_detailed_tactical_situation({ creature_id: "ranger_lyra" })
// Creates ASCII battlefield visualization generate_battlefield_map()
// Roll with advantage roll_dice({ notation: "2d20kh1+5", reason: "Attack with advantage" }) // Check line of sight with cover check_line_of_sight({ from_creature: "ranger_lyra", to_creature: "goblin_1" }) // Validate movement with opportunity attacks move_creature({ creature_id: "fighter_kael", target_x: 10, target_y: 8, speed: 25 })
1d20+5
, 3d6
, 1d8+3
2d20kh1+5
, 2d20kl1+5
Perfect for integration with the AI Dungeon Experiment:
Ready to create the ultimate AI-powered D&D experience? Clone this repository and follow the setup instructions above. Within minutes, you'll have a complete RPG system with visual combat maps and advanced tactical intelligence!
🎲 Happy adventuring with AI-powered D&D! 🐉