Skip to main content
Glama
Komeiji-Shiki

trpg-dice-mcp

TRPG 掷骰 MCP Server v2.0

密码学安全随机的 TRPG 掷骰服务器,支持完整骰子表达式引擎、多系统规则预设、暗骰保密。

快速开始

配置 MCP 客户端

在你的 MCP 客户端配置中添加:

{
  "mcpServers": {
    "trpg-dice": {
      "command": "npx",
      "args": ["-y", "trpg-dice-mcp"]
    }
  }
}

Windows 客户端

部分 Windows 环境需要:

{
  "mcpServers": {
    "trpg-dice": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "trpg-dice-mcp"]
    }
  }
}

Related MCP server: MCP Dice Roller

工具一览

工具

用途

示例

roll_dice

掷骰表达式求值

3d6+2, 4d6kh3, d%, (8d6)/2

roll_table

随机表抽取(范围/权重/等概率)

遭遇表、战利品表

roll_check

技能/属性检定

CoC 7e、D&D 5e、PbtA、GURPS

roll_pool

骰池检定

Shadowrun、WoD、Year Zero

roll_fate

FATE 检定

4dF + 修正值

pick_random

随机抽取

先攻排序、抽牌

get_roll_history

查询历史

最近掷骰记录

reveal_hidden_roll

揭示暗骰

追溯查看之前暗骰的完整结果

opposed_check

双方对抗检定

技能对抗、先攻对抗

支持的骰子表达式

基本语法

表达式

含义

3d6

掷 3 颗 6 面骰

1d20+5

d20 + 修正 5

4d6kh3

4d6 取最高的 3 个(D&D 属性)

2d20kl1

2d20 取最低的 1 个(劣势)

3d6!

爆炸骰(出 6 追加一骰)

1d6r2

重骰直到结果 > 2

(8d6)/2

8d6 结果除以 2(向下取整)

floor(3d6/2)

同上,显式 floor

特殊骰

记号

含义

d% / d100

百分骰(1–100)

dF

Fudge 骰(-1/0/+1)

d66

查表骰(11–66,36 个离散值)

修饰符

修饰符

含义

khN

保留最高的 N 个

klN

保留最低的 N 个

dhN

丢弃最高的 N 个

dlN

丢弃最低的 N 个

!

爆炸(出最大值追加一骰)

!!

复合爆炸(累计为单骰值)

!>N

阈值爆炸(出 ≥N 追加)

rN

递归重骰直到结果 > N

规则预设

预设

系统

骰子

判定

coc7

克苏鲁的呼唤 7 版

1d100

≤ 技能

dnd5e

D&D 5 版

1d20+mod

≥ DC

pbta

Powered by the Apocalypse

2d6+mod

固定阈值

gurps

GURPS

3d6

≤ 技能

runequest

RuneQuest

1d100

≤ 技能

fate

FATE

4dF+mod

vs 难度

模型可通过 rules://presets/{name} 资源查阅详细判定规则。

安全性

  • 随机源:使用 node:crypto.randomInt(),密码学安全,无模偏差

  • 暗骰hidden: true 时,文本和结构化响应均只返回保密回执;完整结果写入本地 JSONL 文件。文件未加密。

  • 揭示控制:暗骰揭示默认启用,GM 可通过 reveal_hidden_roll 工具回溯查看暗骰结果

响应与批量抽取

所有工具同时返回完整 JSON 文本和 structuredContent,其中 summary 是可读摘要。查询历史和揭示暗骰的明细也包含在文本响应中。

roll_tableresults 包含每次抽取;顶层 selectedroll 等字段保留第一次结果。unique=true 表示同一选项最多选一次,权重模式按剩余权重抽取。等概率模式只需提供 label,无需构造骰子表达式。

shared_subroll=true 可让同一次调用中重复选中的条目共享其子掷骰结果,默认 false。子表的等概率/权重模式使用自身选项;范围子表沿用父表表达式。范围表必须显式传 dice,并完整覆盖值域,除非设置 allow_gap=true

取整与检定

  • 除法默认向下取整;rounding 只改变除法的取整方式,普通小数加减保留小数。

  • 显式函数覆盖内部除法的自动取整,如 ceil(5/2)=3;函数内部先按原值计算,再对整个参数取整。

  • PbtA 无需 target。CoC 奖励/惩罚骰共用个位,比较完整百分骰候选值,00 按 100 处理。

  • 优劣势要求表达式中恰好有一组未修饰的 1d20;奖励骰要求恰好有一组未修饰的 1d100/d%。

  • 自定义 degrees 按顺序首个命中生效,覆盖预设;条件支持 roll/total/target/margin、比较、四则运算、括号和取整函数,不支持三元表达式。无效条件明确报错。

  • GURPS 等预设沿用规则资源中声明的简化实现。tens_crit 保留每颗 d10 骰出 10 额外加一成功的简化行为,不包含 V5 的完整暴击规则。

本地数据与并发

默认目录为 ~/.trpg-dice-mcp,可通过 MCP 进程的 TRPG_DICE_DATA_DIR 环境变量指定其他目录。不同目录可以隔离不同跑团的历史。

  • roll-history.json:持久化计数器和最近 1000 条历史;单次查询最多 50 条。历史查询不会产生新的掷骰记录。

  • hidden-rolls.jsonl:暗骰完整结果和揭示事件,兼容旧版 JSONL 记录。暗骰日志不随普通历史裁剪。

  • 多个新版进程共享目录时,文件锁保护读写与编号分配;进程异常退出后可回收过期锁。

  • 新写入的普通历史不会保存暗骰结果;旧文件不自动清理。reveal_hidden_roll 是显式揭示工具,客户端仍需自行管理谁可以调用它。

表达式最多 200 字符、每组最多 500 颗骰;每次工具调用含批量、重骰及爆炸在内最多 5000 颗。单颗爆炸达到 100 次迭代会返回截断提示。随机表最多 200 项、批量最多 100 次、嵌套深度最多 3 层。

测试包含原有解析器/属性测试,以及规则回归、工具 schema、暗骰脱敏、历史分页和两个真实 stdio 进程共享存储。所有存储测试均使用独立临时目录。

打包会自动构建 dist/。修改源码后需重新连接 MCP;使用同一数据目录的旧版进程也应一并重启。完整变更见 CHANGELOG.md

开发

npm ci
npm run typecheck
npm test
npm pack --dry-run

项目结构

src/
├── index.ts          # stdio 入口
├── server.ts         # MCP 工具注册
├── rng/              # 随机数核心(SecureRng / SeededRng)
├── dice/             # 表达式引擎(tokenizer/parser/eval/range/table)
├── rules/            # 规则预设 + degrees DSL
├── resources/        # MCP Resources(规则速查)
├── state/            # 历史记录 + 暗骰存储
├── tools/            # 9 个 MCP 工具
└── utils/            # 格式化 / i18n

许可

MIT

Available Tools

9 tools
get_roll_historyA
Read-only

查询掷骰历史。暗骰条目只显示"结果保密"。

示例:

  • 最近 10 条:limit=10

  • 按标签过滤:tag="理智检定"

  • 分页:limit=10, offset=10

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo按标签过滤
toolNo按工具名过滤
limitNo返回条数上限(≤50)
localeNozh
offsetNo
before_roll_idNo只查此 ID 之前

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a read-only, non-destructive operation. The description adds valuable context that hidden rolls only show '结果保密' (result confidential), disclosing a key behavioral trait not evident from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief, front-loaded with the primary purpose, and then uses concise examples to demonstrate usage. Every sentence serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core functionality, hidden-roll behavior, and usage patterns. It omits output format, but no output schema is provided, and the examples sufficiently guide the agent for common query needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description compensates by illustrating offset usage (limit=10, offset=10), clarifying pagination. The tag example reinforces filtering. It does not cover locale, but the enum in schema handles that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '查询掷骰历史' (query dice roll history), a specific verb+resource combination. It distinguishes from sibling roll tools, and the note about hidden rolls adds important scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete usage examples (limit, tag, pagination) and implies that hidden rolls are not fully visible, guiding agents to not expect reveal functionality here. However, it does not explicitly name alternative tools like reveal_hidden_roll for full results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opposed_checkA

双方对抗检定。比较两名角色的 margin/total/成功等级判定胜负。

示例:

  • CoC 对抗:preset="coc7", actor1={"modifier":0}, actor2={"modifier":0}, target=60

  • D&D 先攻对抗:dice="1d20", actor1={"modifier":3}, actor2={"modifier":1}, mode="roll_over"

ParametersJSON Schema
NameRequiredDescriptionDefault
diceNo
modeNo
tagsNo
timesNo
actor1No角色1 参数
actor2No角色2 参数
hiddenNo
localeNozh
presetNo
reasonNo
targetNo
degreesNo
resolutionNocompare_margin

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the core comparison behavior (margin/total/success) and example parameters, but it does not mention side effects like random generation, roll history, or hidden-roll behaviors. With annotations all false, the description carries the burden but only partially covers it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main purpose, followed by two useful examples. The structure is clear and each sentence earns its place, though the examples take some space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (13 params, 4 enums) and no output schema, the description is incomplete. It does not cover many parameters, does not explain return values, and lacks discussion of edge cases (e.g., ties). The examples help but are insufficient for a full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 15% (only actor1/actor2 have basic descriptions). The description's examples add meaning for preset, target, dice, mode, and actor modifiers, but many parameters (resolution, degrees, times, hidden, locale, reason) remain unexplained. It compensates partially but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs an opposed check ('双方对抗检定') and compares two characters' margin/total/success to determine a winner. This specific verb+resource distinguishes it from siblings like roll_check or roll_dice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples imply usage contexts (CoC, D&D initiative) but do not explicitly state when to use this tool over alternatives or provide exclusions. There is no mention of 'use this when' or 'don't use for single checks'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pick_randomA

从列表中随机抽取。Fisher-Yates 洗牌 + 密码学随机。

示例:

  • 先攻排序:items=["Alice","Bob","Carol","Dave"](不放回抽取全部)

  • 抽 3 张牌:items=["♠A","♠K","♠Q","♠J","♠10"], count=3

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
countNo抽取数量
itemsYes候选项
hiddenNo
localeNozh
reasonNo
uniqueNo不放回

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the algorithm (Fisher-Yates shuffle) and cryptographic randomness, which adds behavioral context beyond the sparse annotations that only set all hints to false. It does not mention potential side effects or state changes, but since this is a pure selection tool, that omission is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is remarkably concise: one sentence describing the core behavior plus two illustrative examples. Every word earns its place, and the examples are compact and immediately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core functionality is well-covered with examples, and the algorithm note is useful. However, with 7 parameters, no output schema, and several optional parameters (hidden, tags, locale, reason) undocumented, the description is not fully complete for advanced or edge-case use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 43%, and the description only illustrates items, count, and unique via examples. The parameters tags, hidden, locale, and reason are left unexplained, so the description fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '从列表中随机抽取' (randomly draw from a list), and the examples with initiative order and card draws make the resource and action unambiguous. This distinguishes it well from sibling tools like roll_dice or roll_table, which are for other random generation tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples imply clear usage scenarios (shuffling initiative order, drawing cards) and the description notes the no-replacement behavior via the example. However, it does not explicitly mention when not to use the tool or compare it to alternatives like roll_table.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reveal_hidden_rollA

解锁查看暗骰结果,返回完整掷骰明细。

示例:

  • reveal_hidden_roll roll_id="h7"

  • reveal_hidden_roll roll_id="#h12" reason="战斗结束后揭示"

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNozh
reasonNo揭示原因
roll_idYes暗骰 ID,如 h7 或 #h7

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations do not indicate read-only (readOnlyHint=false), and the description says 'unlock', implying a state change. Yet it does not disclose whether the reveal is permanent, whether it affects all players, or any authorization requirements. The description carries a low burden but still lacks behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences plus two examples. It leads with the primary purpose and includes only necessary details, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description states the return value ('完整掷骰明细') but does not detail output structure or edge cases. Given no output schema, more detail could be expected, but for a simple reveal tool, it is minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the schema already describes roll_id and reason. The description adds useful examples of roll_id formats (h7, #h12) and reason usage, but does not explain locale. The baseline of 3 is appropriate since the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: unlocking and viewing hidden dice roll results and returning complete roll details. It uses a specific verb-resource pair ('解锁查看' / '暗骰结果') and is easily distinguished from sibling rolling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for hidden rolls and provides examples, making the context clear. However, it does not explicitly state when not to use it (e.g., for normal rolls), but sibling tools like roll_dice provide sufficient contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_checkB

技能/属性检定。支持多种规则预设和自定义成功等级。

示例:

  • CoC 7e 技能检定:preset="coc7", target=60

  • D&D 5e 攻击:preset="dnd5e", dice="1d20+5", target=15

  • PbtA 检定:preset="pbta", dice="2d6+1"

  • 优势攻击:dice="1d20+5", target=15, advantage="adv"

ParametersJSON Schema
NameRequiredDescriptionDefault
diceNo骰子表达式
modeNo
tagsNo
timesNo
hiddenNo
localeNozh
presetNo
reasonNo
targetNo目标值/DC/技能值
degreesNo自定义成功等级
advantageNo
bonus_diceNoCoC 奖励骰/惩罚骰

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no safety signal (all false). The description does not disclose how success/failure is computed, whether results include criticals, what hidden or bonus_dice do, or if there are side effects. It only shows input examples, leaving the actual behavior opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, starting with the core purpose and then providing four concrete examples that add value without redundancy. It is well-structured and easy to scan, though it could have added parameter details without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 12 parameters and no output schema, the description covers only a subset of use cases. It omits return value format, handling of hidden rolls, locale behavior, reason tagging, and advanced features like custom degrees, leaving significant gaps for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema coverage, the description compensates partially by illustrating preset, target, dice, and advantage in examples. However, many parameters (mode, times, hidden, locale, reason, bonus_dice, degrees) lack explanatory context, and the description does not clarify how they interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool performs 'skill/attribute checks' and supports multiple rule presets and custom success levels. The examples (CoC 7e, D&D 5e, PbtA, advantage) leave no ambiguity about its purpose, distinguishing it from generic dice rollers like roll_dice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples imply usage for tabletop RPG checks, but the description does not explicitly state when to prefer this over siblings like roll_dice, roll_pool, or opposed_check. There is no mention of exclusions or alternative conditions, so guidance remains implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_diceA

掷骰并计算完整算术表达式。支持四则运算、括号、取整函数及全部修饰符。

示例:

  • 普通掷骰:expression="3d6+2"

  • 优弃:expression="4d6kh3"(4d6 取最高的 3 个)

  • 爆炸骰:expression="3d6!"(骰出 6 追加一骰)

  • 带除法:expression="(8d6)/2"

  • 百分骰:expression="d%"

  • Fudge骰:expression="4dF"

  • d66查表骰:expression="d66"

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo标签
timesNo重复掷骰次数
hiddenNo暗骰:true 时结果不进入 LLM 上下文
localeNozh
reasonNo掷骰原因,如「攻击哥布林」
roundingNo除法取整方式,默认 floor
expressionYes骰子表达式,如 3d6+2、4d6kh3、d%、(8d6)/2

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no behavioral hints (all false), so the description carries the burden. It does not disclose that rolls are random, that results may be recorded (given get_roll_history sibling), or that hidden rolls are excluded from context—though the 'hidden' parameter schema touches on the latter. The description focuses on expression syntax rather than operational behavior, which is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single introductory sentence followed by a well-formatted list of examples. It is front-loaded with the purpose, and every line adds value—no filler. The structure makes it easy to scan and understand the tool's capabilities quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 7 parameters, the description provides a solid overview and expression examples, but it does not explain parameters like 'times', 'hidden', 'locale', or 'reason'—though the schema descriptions cover them. It also does not mention recording behavior or how this relates to sibling tools. Given the schema's coverage, this is reasonably complete for a dice roller.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (86%), and the description adds significant value for the core 'expression' parameter by providing concrete usage examples (e.g., '4d6kh3', '(8d6)/2', 'd66') that clarify syntax beyond the schema's brief description. It also mentions rounding functions, aligning with the 'rounding' parameter. Other parameters are left to the schema, which is acceptable given their self-descriptive schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool rolls dice and evaluates arithmetic expressions, with a specific resource (dice expression) and scope (supports four operations, parentheses, rounding, and all modifiers). The examples differentiate it from siblings by showcasing general-purpose expression handling (e.g., 4d6kh3, d%, 4dF), implying broader capability than specialized tools like roll_pool or roll_fate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use—any time a dice expression with arithmetic/modifiers is needed—but it does not explicitly state when NOT to use it or mention alternatives like roll_check or roll_table. Usage is implied through examples rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_fateB

FATE 系统专用:4dF + 修正值,带梯形评价。

示例:

  • roll_fate modifier=3 difficulty=2

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
hiddenNo
localeNozh
reasonNo
modifierNo
difficultyNo难度值

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With all annotations set to false, the description carries the full burden of behavioral disclosure. It mentions 4dF, modifier, and ladder evaluation, but does not disclose side effects, whether the roll is random, if it affects game state, or what the return format is. This is minimal transparency for an action that could have non-deterministic behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: one line plus a usage example. It is front-loaded and every word adds value. However, it is slightly under-specified, leaving key aspects unexplained, so it loses one point for efficiency over completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no output schema, and no annotations, the description is incomplete. It does not explain what the tool returns (beyond 'ladder evaluation'), how hidden/tags/locale/reason affect behavior, or what outputs the caller can expect. This is inadequate for an agent to use it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17% (only difficulty has a description). The description's example and text clarify 'modifier' and 'difficulty' roles, but parameters like tags, hidden, locale, and reason remain undocumented in both schema and description. This is insufficient compensation for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is FATE-system-specific: 'FATE 系统专用:4dF + 修正值,带梯形评价' (FATE system exclusive: 4dF + modifier, with ladder evaluation). This specifies the verb (roll), the resource (FATE dice), and distinguishes it from siblings like roll_dice or roll_check that are likely more generic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives some context by declaring it as FATE-system exclusive, implying use for FATE rolls. However, it does not explicitly compare with alternatives like roll_check or roll_pool, nor state when not to use it. The example 'roll_fate modifier=3 difficulty=2' demonstrates usage but lacks exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_poolA

骰池检定(Shadowrun / WoD / Year Zero 等)。统计满足条件的成功骰数。

示例:

  • Shadowrun:count=10, sides=6, success_condition=">=target", target=5, ones_glitch=true

  • WoD:count=6, sides=10, target=8, ones_cancel=true, tens_crit=true

  • Year Zero:count=8, sides=6, target=6

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
countYes骰池数量
sidesNo骰子面数
timesNo
hiddenNo
localeNozh
reasonNo
targetYes成功阈值
tens_critNo
explode_onNo爆炸阈值
ones_cancelNo
ones_glitchNo
explode_limitNo
double_success_onNo双倍成功值
success_conditionNo>=target

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false (e.g., readOnlyHint false), suggesting the tool may have side effects such as recording history or hidden rolls. The description does not mention these behaviors, nor does it explain output format or whether multiple rolls are supported (times parameter). However, it does add context about glitch/critical mechanics (ones_glitch, tens_crit) which enriches the behavioral understanding beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and structured: a one-line purpose followed by three clear example configurations. Every sentence adds value, and the examples are well-formatted for quick reference. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the complexity of the tool (15 parameters, no output schema), the description does not explain the return value format, the meaning of hidden, times, explode_on, explode_limit, double_success_on, or locale. It also omits any mention of edge-case behaviors, leaving significant gaps for an agent to understand full functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (33%). The description compensates with concrete examples for Shadowrun, WoD, and Year Zero, showing how to set key parameters like count, sides, target, success_condition, ones_glitch, ones_cancel, and tens_crit. While not all 15 parameters are explained, the examples clarify the most important ones and illustrate the intended usage patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '骰池检定(Shadowrun / WoD / Year Zero 等)' and '统计满足条件的成功骰数', which translates to 'dice pool check' and 'count successful dice meeting conditions'. It specifies the resource (dice pool check) and differentiates from siblings like roll_dice or roll_check by focusing on pool-based systems and success counting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool, listing specific game systems (Shadowrun, WoD, Year Zero) and example parameter configurations for each. It implicitly guides the agent to use this tool for dice pool mechanics, though it does not explicitly state exclusions or mention alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roll_tableA

从随机表中抽取结果。支持三种模式互斥:显式范围、权重、等概率。支持嵌套触发。

示例:

  • 范围模式:options=[{"label":"哥布林","min":1,"max":8},{"label":"兽人","min":9,"max":14}], dice="1d20"

  • 权重模式:options=[{"label":"普通","weight":70},{"label":"稀有","weight":25},{"label":"传说","weight":5}]

  • 等概率:options=[{"label":"红","min":1,"max":1},{"label":"蓝","min":2,"max":2}], dice="1d2"(或不传 dice)

  • 嵌套触发:options=[{"label":"遭遇","min":1,"max":5,"trigger_roll":"1d4+1"}]

ParametersJSON Schema
NameRequiredDescriptionDefault
diceNo骰子表达式(范围模式必填)
tagsNo
timesNo
hiddenNo
localeNozh
reasonNo
uniqueNo不放回抽取
optionsYes选项列表
allow_gapNo允许未命中返回 null

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false and provide no safety profile. The description discloses no side effects, such as whether rolls are recorded in history or how hidden rolls behave, despite the presence of a 'hidden' parameter. This leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by concise examples that illustrate each mode. The examples are valuable and not wasteful, though they make the description longer than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters and no output schema, the description leaves many parameters undocumented and does not describe the return format or how nested triggers affect output. It covers core behavior, but the tool's complexity demands more complete guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the schema by explaining the options structure (label, min/max, weight, trigger_roll) and dice usage across three modes. This compensates for the low schema coverage, though secondary parameters like tags, times, locale, and reason remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool draws results from a random table and details three mutually exclusive modes (range, weight, equal probability) plus nested triggers. This specific verb+resource structure distinguishes it from sibling roll tools like roll_dice or roll_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for random table rolling through examples and the term 'random table', but it never explicitly contrasts with alternatives or provides when-not-to-use guidance. No exclusions are stated, so the guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv2.0.0
    • First observedget_roll_history
    • First observedopposed_check
    • First observedpick_random
    • First observedreveal_hidden_roll
    • First observedroll_check
    • First observedroll_dice
    • First observedroll_fate
    • First observedroll_pool
    • First observedroll_table

TDQS

A4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct aspect of TRPG rolling: basic dice expressions, tables, skill checks, dice pools, FATE dice, arbitrary selection, history, hidden roll reveal, and opposed checks. No two tools have overlapping purposes, and the descriptions clarify niche uses like d66 or nested triggers.

Naming Consistency5/5

All tool names follow a clear verb_first_noun pattern in snake_case (roll_dice, roll_table, pick_random, get_roll_history, reveal_hidden_roll). The roll_* prefix is used for dice-related tools, with only opposed_check deviating slightly but still readable and consistent in style.

Tool Count5/5

9 tools is well-scoped for a TRPG dice server, covering the core surface without bloat. Each tool serves a distinct gameplay need, from basic rolls to history management, making the count appropriate.

Completeness5/5

The tool set covers the full life cycle of dice rolls: rolling (multiple types), evaluating checks/pools, handling tables, tracking history, revealing hidden rolls, and even opposed checks. Missing operations like clearing history or editing rolls are not essential for the domain, so the surface feels complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that provides tools for rolling dice using standard notation, flipping coins, and selecting random items from lists. It supports advanced tabletop gaming features such as character stat generation and keep-highest/lowest mechanics.
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive TRPG dice rolling functionality including standard notation, advantage/disadvantage mechanics, and success-counting dice pools. It enables users to perform complex dice logic and track roll history through an MCP-compliant interface.
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables dice rolling for RPG games using standard dice notation, supporting complex expressions like keep/drop, reroll, exploding dice, and batch rolls.
    4
    3
    MIT