骰子滚动服务器

一个全面的模型上下文协议(MCP)服务器,将桌面游戏的骰子机制直接带到Claude桌面,支持通过自然语言命令滚动骰子、抛硬币和处理D&D 5e机制。

  • by laks08
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 laks08/dice-roller-mcp-server

使用说明

🎲 骰子掷骰器 MCP 服务器

一个全面的模型上下文协议(MCP)服务器,将桌面游戏的骰子机制直接引入Claude桌面应用。使用自然语言指令来掷骰子、抛硬币,并处理Dungeons & Dragons 5e(第五版龙与地下城)的机制。

✨ 特点

🎯 核心骰子掷骰

  • 标准记号使用熟悉的格式进行滚动,比如 3d6, 1d20+5, 2d8-1
  • 定制骰子掷一个2到1000面的任意骰子
  • **百分位数掷骰(或百分位数判定)**带有情境风味描述的d100(百分比骰子)

🪙 硬币抛掷

  • 单次或多次(最多100次)抛硬币
  • 多次翻转的自动统计

🐉 D&D 5e(龙与地下城第五版)机制

  • 属性值生成4d6去掉最低值的方法
  • 优势/劣势掷两次,取较高的/较低的分数
  • 完成修正值计算

🎨 丰富输出

  • 增强表情符号的结果(🎲,🪙,⭐,💀)
  • 对重要数字使用粗体格式
  • 单个卷材的详细分解
  • 针对百分位数掷骰的上下文风味描述

🚀 快速入门

先决条件

  • Docker Desktop(桌面版)
  • 克劳德桌面版
  • Docker MCP 工具包

安装

  1. 克隆并构建服务器:

    git clone <your-repo>
    cd dice-roller-mcp-server
    docker build -t dice-roller-mcp .
    
  2. 设置MCP配置:

    创建或更新 ~/.docker/mcp/registry.yaml:

    registry:
      dice-roller:
        ref: "dice-roller-mcp:latest"
    

    创建或更新 ~/.docker/mcp/catalogs/custom.yaml:

    version: 2
    name: custom
    displayName: Custom MCP Servers
    registry:
      dice-roller:
        description: "Roll dice, flip coins, and handle D&D mechanics"
        title: "Dice Roller"
        type: server
        image: dice-roller-mcp:latest
        tools:
          - name: roll_dice_notation
          - name: flip_coin
          - name: roll_dnd_stats
          - name: roll_percentile
          - name: roll_advantage
          - name: roll_disadvantage
          - name: roll_custom_die
        metadata:
          category: productivity
          tags: [gaming, dice, dnd, rpg]
    
  3. 配置Claude桌面版:

    更新 ~/Library/Application Support/Claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "mcp-toolkit-gateway": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-v",
            "/var/run/docker.sock:/var/run/docker.sock",
            "-v",
            "/Users/[YOUR_USERNAME]/.docker/mcp:/mcp",
            "docker/mcp-gateway",
            "--catalog=/mcp/catalogs/custom.yaml",
            "--registry=/mcp/registry.yaml",
            "--transport=stdio"
          ]
        }
      }
    }
    

    替换 [YOUR_USERNAME] 使用你实际的用户名。

  4. 重启Claude桌面版

🎮 使用示例

配置完成后,您可以使用自然语言与Claude交流:

基本骰子滚动

  • “掷3个6面骰子计算伤害”
  • “掷一个20面骰子来决定行动顺序”
  • “掷两个8面骰子加3点来治疗”

《龙与地下城》角色创建

  • “为我的新角色生成能力值”
  • “使用4d6并去掉最低点来计算属性值”

战斗机制

  • “为我的攻击掷一个有利条件的d20”
  • “以不利条件进行潜行检定”
  • “为狂野魔法掷一个百分比骰子”

实用卷纸(或多功能卷纸)

  • “抛硬币决定”
  • “掷一个100面的骰子”
  • “抛5枚硬币,然后告诉我结果”

🛠️ 可用工具

工具 描述 示例用法
roll_dice_notation 标准骰子记法 3d6, 1d20+5, 2d8-1
roll_custom_die 定制边的骰子 d13, d47, d1000
flip_coin 硬币抛掷 1 硬币或 10 硬币
roll_percentile d100 带有风味 自动风味文本
roll_dnd_stats D&D 能力值生成方式 4次6面骰子掷出后去掉最低值 × 6
roll_advantage D&D 优势机制 投掷两次,取较高值
roll_disadvantage D&D(龙与地下城)劣势 投掷两次,取较低结果

🔧 开发

本地测试

# Test the server directly (requires mcp package)
python3 dice_roller_server.py

# Test with Docker
docker run --rm -i dice-roller-mcp

# Verify MCP tools
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | docker run --rm -i dice-roller-mcp

添加新功能

  1. 添加新的工具功能到 dice_roller_server.py
  2. 用……装饰 @mcp.tool()
  3. 更新目录,加入新工具名称
  4. 重建Docker镜像
  5. 重启Claude桌面版

🔒 安全功能

  • 无网络访问权限仅限纯数学运算
  • 输入验证防止恶意或过度输入
  • 资源限制最多100个骰子,每个骰子1000个面
  • 非Root执行在容器中以无特权用户身份运行
  • 无文件系统访问权限无状态操作

🎯 骰子符号参考

格式 描述 示例
dX 单个芯片(或单颗芯片) d6 掷一个六面骰子
NdX 多个骰子 3d6 掷3个六面骰子
NdX+Y 带有修饰符的骰子 1d20+5 = d20加5
NdX-Y 带惩罚的骰子 2d8-1 = 2次8面骰子的点数之和减1

限制:

  • 每次掷骰最多100个
  • 每个骰子最多1000个面
  • 修饰符:-999 至 +999

🎨 输出示例

标准卷

🎲 3d6+2: [4, 2, 6] + 2 = **14**

优势滚动(或“有利滚动”,具体含义可能根据上下文有所不同)

🎲 **Advantage** 1d20+3: [8, 15] → 15 + 3 = **18**

D&D 统计数据(或“D&D 属性值”)

🎲 **D&D Ability Scores** (4d6 drop lowest):

**Strength**: 15 (+2) - Rolled: [6, 5, 4]
**Dexterity**: 12 (+1) - Rolled: [4, 4, 4]
...
📊 **Total Modifier**: +8

带有风味的百分位数

🎲 **Percentile Roll**: 95% ⭐ Excellent!

🐛 故障排除

工具未显示

  1. 验证Docker镜像是否成功构建: docker images | grep dice-roller
  2. 检查MCP配置文件中的语法错误
  3. 确保Claude Desktop的配置指向正确的用户名路径
  4. 完全重启Claude桌面版

连接问题

  1. 验证Docker MCP网关是否正在运行: docker mcp server list
  2. 检查 Docker 套接字权限
  3. 验证配置文件中的YAML语法

无效的骰子记法

  • 使用标准格式: 3d6, 1d20+5
  • 检查骰子表示法中的拼写错误
  • 确保数字在限定范围内

致谢

这个项目受到以下优秀教程的启发,并在该教程的基础上构建而成: **NetworkChuck(注:这是一个专有名词,直接翻译为“网络查克”可能无法准确传达其原意,通常保留原名,但在此提供直译以供参考)**他的视频为使用Docker集成创建MCP服务器提供了基础和指导。

特别感谢NetworkChuck,他让复杂的概念变得易于理解,并激励开发者们去打造酷炫的项目!

📄 许可证

MIT 许可证 - 请随意修改和分发!

🤝 贡献

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建一个特性分支
  3. 为新功能添加测试
  4. 提交一个拉取请求

祝你玩得开心! 🎲(骰子)

在NetworkChuck教程的指导下构建