Random Number

Proporciona a los LLMs capacidades esenciales de generación aleatoria, construido completamente sobre la biblioteca estándar de Python.

Documentación

Servidor MCP de Números Aleatorios

Utilidades esenciales de generación de números aleatorios de la biblioteca estándar de Python, incluyendo operaciones pseudoraleatorias y criptográficamente seguras para enteros, flotantes, selecciones ponderadas, mezcla de listas y generación de tokens seguros.

¿Buscas la versión de habilidad de agente? random-number-skills implementa la misma estrategia de generación de números aleatorios como una habilidad de agente en lugar de un servidor MCP.

Video de Demostración

https://github.com/user-attachments/assets/303a441a-2b10-47e3-b2a5-c8b51840e362

Random Number MCP server

Herramientas

HerramientaPropósitoFunción de Python
random_intGenerar enteros aleatoriosrandom.randint()
random_floatGenerar flotantes aleatoriosrandom.uniform()
random_choicesElegir elementos de una lista (pesos opcionales)random.choices()
random_shuffleDevolver una nueva lista con elementos mezcladosrandom.sample()
random_sampleElegir k elementos únicos de una poblaciónrandom.sample()
secure_token_hexGenerar tokens hexadecimales criptográficamente segurossecrets.token_hex()
secure_random_intGenerar enteros criptográficamente segurossecrets.randbelow()

Configuración

Claude Desktop

Añade esto a tu archivo de configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "random-number": {
      "command": "uvx",
      "args": ["random-number-mcp"]
    }
  }
}

Referencia de Herramientas

random_int

Genera un entero aleatorio entre low y high (inclusive).

Parámetros:

  • low (int): Límite inferior (inclusive)
  • high (int): Límite superior (inclusive)

Ejemplo:

{
  "name": "random_int",
  "arguments": {
    "low": 1,
    "high": 100
  }
}

random_float

Genera un flotante aleatorio entre low y high.

Parámetros:

  • low (float, opcional): Límite inferior (predeterminado: 0.0)
  • high (float, opcional): Límite superior (predeterminado: 1.0)

Ejemplo:

{
  "name": "random_float",
  "arguments": {
    "low": 0.5,
    "high": 2.5
  }
}

random_choices

Elige k elementos de una población con reemplazo, opcionalmente ponderados.

Parámetros:

  • population (lista): Lista de elementos para elegir
  • k (int, opcional): Número de elementos a elegir (predeterminado: 1)
  • weights (lista, opcional): Pesos para cada elemento (predeterminado: pesos iguales)

Ejemplo:

{
  "name": "random_choices",
  "arguments": {
    "population": ["red", "blue", "green", "yellow"],
    "k": 2,
    "weights": [0.4, 0.3, 0.2, 0.1]
  }
}

random_shuffle

Devuelve una nueva lista con elementos en orden aleatorio.

Parámetros:

  • items (lista): Lista de elementos a mezclar

Ejemplo:

{
  "name": "random_shuffle",
  "arguments": {
    "items": [1, 2, 3, 4, 5]
  }
}

random_sample

Elige k elementos únicos de una población sin reemplazo.

Parámetros:

  • population (lista): Lista de elementos para elegir
  • k (int): Número de elementos a elegir

Ejemplo:

{
  "name": "random_sample",
  "arguments": {
    "population": ["a", "b", "c", "d", "e"],
    "k": 2
  }
}

secure_token_hex

Genera un token hexadecimal aleatorio criptográficamente seguro.

Parámetros:

  • nbytes (int, opcional): Número de bytes aleatorios (predeterminado: 32)

Ejemplo:

{
  "name": "secure_token_hex",
  "arguments": {
    "nbytes": 16
  }
}

secure_random_int

Genera un entero aleatorio criptográficamente seguro por debajo de upper_bound.

Parámetros:

  • upper_bound (int): Límite superior (exclusivo)

Ejemplo:

{
  "name": "secure_random_int",
  "arguments": {
    "upper_bound": 1000
  }
}

Consideraciones de Seguridad

Este paquete proporciona tanto funciones pseudoraleatorias estándar (adecuadas para simulaciones, juegos, etc.) como funciones criptográficamente seguras (adecuadas para tokens, claves, etc.):

  • Funciones estándar (random_int, random_float, random_choices, random_shuffle): Usan el módulo random de Python - rápidas pero no criptográficamente seguras
  • Funciones seguras (secure_token_hex, secure_random_int): Usan el módulo secrets de Python - más lentas pero criptográficamente seguras

Desarrollo

Requisitos previos

  • Python 3.10+
  • Gestor de paquetes uv

Configuración

# Clone the repository
git clone https://github.com/example/random-number-mcp
cd random-number-mcp

# Install dependencies
uv sync --dev

# Run tests
uv run pytest

# Run linting
uv run ruff check --fix
uv run ruff format

# Type checking
uv run mypy src/

Configuración del Cliente MCP

{
  "mcpServers": {
    "random-number-dev": {
      "command": "uv",
      "args": [
        "--directory",
        "<path_to_your_repo>/random-number-mcp",
        "run",
        "random-number-mcp"
      ]
    }
  }
}

Nota: Reemplaza <path_to_your_repo>/random-number-mcp con la ruta absoluta a tu repositorio clonado.

Compilación

# Build package
uv build

# Test installation
uv run --with dist/*.whl random-number-mcp

Lista de Verificación de Publicación

  1. Actualizar Versión:

    • Incrementa el número de version en pyproject.toml, src/random_number_mcp/__init__.py y server.json.
  2. Actualizar Registro de Cambios:

    • Añade una nueva entrada en CHANGELOG.md para la publicación.

      • Redacta notas con el agente de codificación usando el contexto de git diff.
      Update the @CHANGELOG.md for the latest release.
      List all significant changes, bug fixes, and new features.
      Here's the git diff:
      [GIT_DIFF]
      
    • Haz commit junto con cualquier otro cambio pendiente.

  3. Crear Publicación en GitHub:

    • Redacta una nueva publicación en la interfaz de GitHub.
      • Etiqueta la publicación usando la interfaz.
    • El flujo de trabajo de GitHub compilará y publicará automáticamente el paquete en PyPI.

Pruebas con MCP Inspector

Para explorar y/o desarrollar este servidor, usa la utilidad npm de MCP Inspector:

# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector

# Run local development server with the inspector
npx @modelcontextprotocol/inspector uv run random-number-mcp

# Run PyPI production server with the inspector
npx @modelcontextprotocol/inspector uvx random-number-mcp

Registro MCP

mcp-name: io.github.zazencodes/random-number-mcp

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.