@reneturcios/diceport
v0.1.0
Published
Dice rolls in NdM notation, coin flips, and bounded random integers, with an optional seed that makes any result reproducible. One bin serves a small CLI and a stdio MCP server.
Readme
diceport
diceport rolls dice, flips coins, and picks random integers. It is built for the moments when a script or an agent needs a fair, explainable bit of chance: a roll reports every face that went into its total, and any call can take a seed that makes the outcome reproducible — same seed, same result, every time.
Install
npx @reneturcios/diceport roll 2d6Or run the container image:
docker run -i ghcr.io/cloudcorprecords/diceportThe container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.
CLI
# Roll dice in NdM notation, with an optional +N / -N modifier
diceport roll 2d6
# 2d6: [3, 5] total 8
diceport roll 3d8+2 --seed 42 # reproducible
# Flip a coin
diceport flip # heads (or tails)
diceport flip --seed 7 --json
# Pick an integer between two bounds, inclusive
diceport random 1 100
diceport random 1 100 --seed 42
diceport --versionNotation is NdM: roll N dice with M sides each. The count may be
left off (d20 rolls one die) and a flat modifier may be appended
(2d6+3, 1d100-5).
Exit codes: 0 on success, 1 when a roll or range cannot be done
(bad notation, an inverted range — the error says why), 2 for usage
errors.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/diceport mcpMCP client configuration:
{
"mcpServers": {
"diceport": {
"command": "npx",
"args": ["-y", "@reneturcios/diceport", "mcp"]
}
}
}Tools
| Tool | Input | What it returns |
| --- | --- | --- |
| roll_dice | notation (string, required, e.g. 2d6+3), seed (integer, optional) | Every individual face rolled, the modifier, and the total. |
| flip_coin | seed (integer, optional) | heads or tails. |
| random_number | min, max (integers, required), seed (integer, optional) | One integer between min and max, inclusive. |
Seeded calls use a mulberry32 generator, so a seed fully determines the outcome and any reported result can be replayed. Unseeded calls draw from the platform random source.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network
npm run dev # run the CLI from source via tsxLicense
MIT — see LICENSE.
