roll_dice
Generate random dice rolls using standard notation like '2d6+3' to simulate probability-based outcomes for games, decisions, or calculations.
Instructions
Roll the dice with the given notation
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| notation | Yes | ||
| num_rolls | No |
Implementation Reference
- server.py:20-24 (handler)The main handler function for the 'roll_dice' MCP tool. Registered via @mcp.tool(), it instantiates DiceRoller with the input parameters and returns its formatted string output which performs the actual dice rolls.@mcp.tool() def roll_dice(notation: str, num_rolls: int = 1) -> str: """Roll the dice with the given notation""" roller = DiceRoller(notation, num_rolls) return str(roller)
- dice_roller.py:10-23 (helper)Helper method in DiceRoller class that parses the dice notation (e.g., '2d20k1'), generates random rolls, sorts them descending, keeps the highest 'k' rolls, and returns all rolls and kept rolls.def roll_dice(self): match = self.dice_pattern.match(self.notation) if not match: raise ValueError("Invalid dice notation") num_dice = int(match.group(1)) dice_sides = int(match.group(2)) keep = int(match.group(4)) if match.group(4) else num_dice rolls = [random.randint(1, dice_sides) for _ in range(num_dice)] rolls.sort(reverse=True) kept_rolls = rolls[:keep] return rolls, kept_rolls
- dice_roller.py:37-47 (helper)The __str__ method of DiceRoller that executes the rolls (via roll_dice or roll_multiple) and formats the output string with roll details and totals, used by the tool handler.def __str__(self): if self.num_rolls == 1: rolls, kept_rolls = self.roll_dice() return f"ROLLS: {', '.join(map(str, rolls))} -> RETURNS: {sum(kept_rolls)}" else: results = self.roll_multiple() result_strs = [] for i, result in enumerate(results, 1): result_strs.append(f"Roll {i}: ROLLS: {', '.join(map(str, result['rolls']))} -> RETURNS: {result['total']}") return "\n".join(result_strs)
- server.py:20-20 (registration)The @mcp.tool() decorator registers the roll_dice function as an MCP tool.@mcp.tool()