trpg-dice-mcp
This server is a cryptographically secure TRPG dice-rolling MCP server that supports complex dice expressions, rule-system presets, hidden rolls, random tables, checks, dice pools, FATE rolls, history, and opposed checks.
Roll dice expressions like 3d6+2, 4d6kh3, d%, d66, Fudge dice, exploding/reroll modifiers, and arithmetic with rounding.
Draw from random tables using range, weight, or equal-probability modes, with nesting, unique draws, and optional gaps.
Run skill/attribute checks with presets for CoC 7e, D&D 5e, PbtA, GURPS, RuneQuest, and FATE, plus advantage/disadvantage, CoC bonus dice, and custom success degrees.
Roll dice pools for Shadowrun, WoD, and Year Zero with success thresholds, glitches, cancels, critical tens, and explosions.
Make FATE rolls: 4dF + modifier with ladder-style evaluation.
Pick random items from a list, with or without replacement, for initiative, card draws, and more.
Query recent roll history and reveal previously hidden rolls by ID.
Run opposed checks comparing two actors' margins, totals, or success levels.
Support hidden GM rolls, tags/reasons, multiple locales, repeated/batch rolls, and cryptographically secure randomness.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@trpg-dice-mcproll 4d6kh3 for ability scores"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
工具一览
工具 | 用途 | 示例 |
| 掷骰表达式求值 |
|
| 随机表抽取(范围/权重/等概率) | 遭遇表、战利品表 |
| 技能/属性检定 | CoC 7e、D&D 5e、PbtA、GURPS |
| 骰池检定 | Shadowrun、WoD、Year Zero |
| FATE 检定 | 4dF + 修正值 |
| 随机抽取 | 先攻排序、抽牌 |
| 查询历史 | 最近掷骰记录 |
| 揭示暗骰 | 追溯查看之前暗骰的完整结果 |
| 双方对抗检定 | 技能对抗、先攻对抗 |
支持的骰子表达式
基本语法
表达式 | 含义 |
| 掷 3 颗 6 面骰 |
| d20 + 修正 5 |
| 4d6 取最高的 3 个(D&D 属性) |
| 2d20 取最低的 1 个(劣势) |
| 爆炸骰(出 6 追加一骰) |
| 重骰直到结果 > 2 |
| 8d6 结果除以 2(向下取整) |
| 同上,显式 floor |
特殊骰
记号 | 含义 |
| 百分骰(1–100) |
| Fudge 骰(-1/0/+1) |
| 查表骰(11–66,36 个离散值) |
修饰符
修饰符 | 含义 |
| 保留最高的 N 个 |
| 保留最低的 N 个 |
| 丢弃最高的 N 个 |
| 丢弃最低的 N 个 |
| 爆炸(出最大值追加一骰) |
| 复合爆炸(累计为单骰值) |
| 阈值爆炸(出 ≥N 追加) |
| 递归重骰直到结果 > N |
规则预设
预设 | 系统 | 骰子 | 判定 |
| 克苏鲁的呼唤 7 版 | 1d100 | ≤ 技能 |
| D&D 5 版 | 1d20+mod | ≥ DC |
| Powered by the Apocalypse | 2d6+mod | 固定阈值 |
| GURPS | 3d6 | ≤ 技能 |
| RuneQuest | 1d100 | ≤ 技能 |
| FATE | 4dF+mod | vs 难度 |
模型可通过 rules://presets/{name} 资源查阅详细判定规则。
安全性
随机源:使用
node:crypto.randomInt(),密码学安全,无模偏差暗骰:
hidden: true时,文本和结构化响应均只返回保密回执;完整结果写入本地 JSONL 文件。文件未加密。揭示控制:暗骰揭示默认启用,GM 可通过
reveal_hidden_roll工具回溯查看暗骰结果
响应与批量抽取
所有工具同时返回完整 JSON 文本和 structuredContent,其中 summary 是可读摘要。查询历史和揭示暗骰的明细也包含在文本响应中。
roll_table 的 results 包含每次抽取;顶层 selected、roll 等字段保留第一次结果。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 toolsget_roll_historyARead-only
查询掷骰历史。暗骰条目只显示"结果保密"。
示例:
最近 10 条:limit=10
按标签过滤:tag="理智检定"
分页:limit=10, offset=10
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | 按标签过滤 | |
| tool | No | 按工具名过滤 | |
| limit | No | 返回条数上限(≤50) | |
| locale | No | zh | |
| offset | No | ||
| before_roll_id | No | 只查此 ID 之前 |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| dice | No | ||
| mode | No | ||
| tags | No | ||
| times | No | ||
| actor1 | No | 角色1 参数 | |
| actor2 | No | 角色2 参数 | |
| hidden | No | ||
| locale | No | zh | |
| preset | No | ||
| reason | No | ||
| target | No | ||
| degrees | No | ||
| resolution | No | compare_margin |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| count | No | 抽取数量 | |
| items | Yes | 候选项 | |
| hidden | No | ||
| locale | No | zh | |
| reason | No | ||
| unique | No | 不放回 |
TDQS
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.
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| dice | No | 骰子表达式 | |
| mode | No | ||
| tags | No | ||
| times | No | ||
| hidden | No | ||
| locale | No | zh | |
| preset | No | ||
| reason | No | ||
| target | No | 目标值/DC/技能值 | |
| degrees | No | 自定义成功等级 | |
| advantage | No | ||
| bonus_dice | No | CoC 奖励骰/惩罚骰 |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 标签 | |
| times | No | 重复掷骰次数 | |
| hidden | No | 暗骰:true 时结果不进入 LLM 上下文 | |
| locale | No | zh | |
| reason | No | 掷骰原因,如「攻击哥布林」 | |
| rounding | No | 除法取整方式,默认 floor | |
| expression | Yes | 骰子表达式,如 3d6+2、4d6kh3、d%、(8d6)/2 |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| hidden | No | ||
| locale | No | zh | |
| reason | No | ||
| modifier | No | ||
| difficulty | No | 难度值 |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| count | Yes | 骰池数量 | |
| sides | No | 骰子面数 | |
| times | No | ||
| hidden | No | ||
| locale | No | zh | |
| reason | No | ||
| target | Yes | 成功阈值 | |
| tens_crit | No | ||
| explode_on | No | 爆炸阈值 | |
| ones_cancel | No | ||
| ones_glitch | No | ||
| explode_limit | No | ||
| double_success_on | No | 双倍成功值 | |
| success_condition | No | >=target |
TDQS
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.
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.
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.
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.
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.
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"}]
| Name | Required | Description | Default |
|---|---|---|---|
| dice | No | 骰子表达式(范围模式必填) | |
| tags | No | ||
| times | No | ||
| hidden | No | ||
| locale | No | zh | |
| reason | No | ||
| unique | No | 不放回抽取 | |
| options | Yes | 选项列表 | |
| allow_gap | No | 允许未命中返回 null |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v2.0.0- First observed
get_roll_history - First observed
opposed_check - First observed
pick_random - First observed
reveal_hidden_roll - First observed
roll_check - First observed
roll_dice - First observed
roll_fate - First observed
roll_pool - First observed
roll_table
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
Production-grade cryptography toolkit with 31 MCP tools for classical, PQC, and KMS workflows.
Crypto market intelligence, token rug-checks, and wallet verification in one MCP server.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides cryptographically secure random dice rolls for AI assistants, supporting standard and advanced dice notation for tabletop RPGs and games.8-
- AlicenseAqualityCmaintenanceAn 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.6MIT
- AlicenseAqualityDmaintenanceProvides 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.2MIT
- AlicenseAqualityDmaintenanceEnables dice rolling for RPG games using standard dice notation, supporting complex expressions like keep/drop, reroll, exploding dice, and batch rolls.43MIT