roll_dice
Generate random dice rolls using standard dice notation to simulate game mechanics, probability testing, or random number generation for various applications.
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:25-29 (handler)Primary handler for the roll_dice MCP tool, including @mcp.tool() registration and schema from signature/docstring. Executes by creating DiceRoller instance and returning formatted results.@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 implements the dice rolling logic: parses notation, generates random rolls, sorts descending, keeps top N 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-46 (helper)Helper method that formats the dice roll results as a string for the tool's output, supporting single and multiple rolls via roll_multiple which calls roll_dice.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)