Skip to main content
Glama
pmhw

MCP Lottery Demo

by pmhw

roll_dice

Roll dice with customizable sides and quantities for random number generation in games, simulations, or decision-making scenarios.

Instructions

投掷骰子,支持自定义面数和数量

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNo骰子数量,默认为1
sidesNo骰子面数,默认为6

Implementation Reference

  • Handler for roll_dice tool: validates sides and count parameters, generates random dice rolls from 1 to sides for specified count, computes total if multiple, formats and returns text content.
    case 'roll_dice': {
      // 投骰子工具:模拟投掷骰子
      const { sides = 6, count = 1 } = args;
      
      // 参数验证
      if (sides < 2) {
        throw new Error('骰子面数至少为2');
      }
      
      if (count < 1) {
        throw new Error('骰子数量至少为1');
      }
    
      // 执行投骰子逻辑
      const results = [];
      let total = 0;
      
      for (let i = 0; i < count; i++) {
        // 生成 1 到 sides 之间的随机数
        const roll = Math.floor(Math.random() * sides) + 1;
        results.push(roll);
        total += roll;
      }
    
      // 根据骰子数量格式化输出
      const resultText = count === 1 
        ? `🎲 投掷结果:${results[0]}`
        : `🎲 投掷结果:${results.join(', ')}\n📊 总计:${total}`;
    
      return {
        content: [
          {
            type: 'text',
            text: resultText,
          },
        ],
      };
    }
  • Input schema for roll_dice tool defining properties sides (number, default 6) and count (number, default 1).
    {
      name: 'roll_dice',
      description: '投掷骰子,支持自定义面数和数量',
      inputSchema: {
        type: 'object',
        properties: {
          sides: {
            type: 'number',
            description: '骰子面数,默认为6',
            default: 6,
          },
          count: {
            type: 'number',
            description: '骰子数量,默认为1',
            default: 1,
          },
        },
      },
    },
  • Handler for roll_dice tool in HTTP server: identical logic to stdio version, validates parameters, rolls dice, formats result.
    case 'roll_dice': {
      const { sides = 6, count = 1 } = args;
      
      if (sides < 2) {
        throw new Error('骰子面数至少为2');
      }
      
      if (count < 1) {
        throw new Error('骰子数量至少为1');
      }
    
      const results = [];
      let total = 0;
      
      for (let i = 0; i < count; i++) {
        const roll = Math.floor(Math.random() * sides) + 1;
        results.push(roll);
        total += roll;
      }
    
      const resultText = count === 1 
        ? `🎲 投掷结果:${results[0]}`
        : `🎲 投掷结果:${results.join(', ')}\n📊 总计:${total}`;
    
      return {
        content: [
          {
            type: 'text',
            text: resultText,
          },
        ],
      };
    }
  • Input schema for roll_dice tool in HTTP server: properties sides (number, default 6) and count (number, default 1).
    name: 'roll_dice',
    description: '投掷骰子,支持自定义面数和数量',
    inputSchema: {
      type: 'object',
      properties: {
        sides: {
          type: 'number',
          description: '骰子面数,默认为6',
          default: 6,
        },
        count: {
          type: 'number',
          description: '骰子数量,默认为1',
          default: 1,
        },
      },
    },
  • src/server.js:118-122 (registration)
    Registration of tools list handler which includes roll_dice in the tools array.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools,  // 返回工具列表
      };
    });
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pmhw/McpDemo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server