Optuna MCP Server

Automatiza la optimización y el análisis utilizando Optuna.

Documentación

Servidor MCP de Optuna

Python pypi GitHub license Tests

Un servidor de Model Context Protocol (MCP) que automatiza la optimización y el análisis utilizando Optuna.

image

Casos de uso

El servidor MCP de Optuna se puede utilizar en los siguientes casos de uso, por ejemplo.

  • Optimización automatizada de hiperparámetros por LLMs
  • Análisis interactivo de los resultados de optimización de Optuna a través de una interfaz de chat
  • Optimizar la entrada y salida de otras herramientas MCP

Para más detalles, consulte la sección de Ejemplos.

Instalación

El servidor MCP de Optuna se puede instalar usando uv o Docker. Esta sección explica cómo instalar el servidor MCP de Optuna, usando Claude Desktop como ejemplo de cliente MCP.

Uso con uv

Antes de comenzar el proceso de instalación, instale uv desde Astral.

Luego, agregue la configuración del servidor MCP de Optuna al cliente MCP. Para incluirlo en Claude Desktop, vaya a Claude > Configuración > Desarrollador > Editar configuración > claude_desktop_config.json y agregue lo siguiente:

{
  "mcpServers": {
    "Optuna": {
      "command": "/path/to/uvx",
      "args": [
        "optuna-mcp"
      ]
    }
  }
}

Adicionalmente, puede especificar el almacenamiento de Optuna con el argumento --storage para persistir los resultados.

{
  "mcpServers": {
    "Optuna": {
      "command": "/path/to/uvx",
      "args": [
        "optuna-mcp",
        "--storage",
        "sqlite:///optuna.db"
      ]
    }
  }
}

Después de agregar esto, reinicie la aplicación Claude Desktop. Para más información sobre Claude Desktop, consulte la página de inicio rápido.

Uso con Docker

También puede ejecutar el servidor MCP de Optuna usando Docker. Asegúrese de tener Docker instalado y ejecutándose en su máquina.

{
  "mcpServers": {
    "Optuna": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--net=host",
        "-v",
        "/PATH/TO/LOCAL/DIRECTORY/WHICH/INCLUDES/DB/FILE:/app/workspace",
        "ghcr.io/optuna/optuna-mcp:latest",
        "--storage",
        "sqlite:////app/workspace/optuna.db"
      ]
    }
  }
}

Herramientas proporcionadas por Optuna MCP

Optuna MCP proporciona las siguientes herramientas. Específicamente, ofrece funciones primitivas de Optuna como Study, Trial, Visualization y Dashboard. Dado que los clientes MCP conocen la lista de herramientas y los detalles de cada herramienta, los usuarios no necesitan recordar esos detalles.

Study

  • create_study - Crear un nuevo estudio de Optuna con el study_name y las direcciones dados. Si el estudio ya existe, simplemente se cargará.
    • study_name : nombre del estudio (cadena, obligatorio).
    • directions: Las direcciones de optimización (lista de cadenas literales minimize/maximize, opcional).
  • set_sampler - Establecer el muestreador para el estudio.
    • name : el nombre del muestreador (cadena, obligatorio).
  • get_all_study_names - Obtener todos los nombres de estudios del almacenamiento.
  • set_metric_names - Establecer metric_names. Los metric_names son etiquetas utilizadas para distinguir qué representa cada valor objetivo.
    • metric_names : La lista de nombres de métricas para cada objetivo (lista de cadenas, obligatorio).
  • get_metric_names - Obtener metric_names.
    • No se requieren parámetros.
  • get_directions - Obtener las direcciones del estudio.
    • No se requieren parámetros.
  • get_trials - Obtener todos los ensayos en formato CSV.
    • No se requieren parámetros.
  • best_trial - Obtener el mejor ensayo.
    • No se requieren parámetros.
  • best_trials - Devolver los ensayos ubicados en el frente de Pareto del estudio.
    • No se requieren parámetros.

Trial

  • ask - Sugerir nuevos parámetros usando Optuna.
    • search_space : el espacio de búsqueda para Optuna (diccionario, obligatorio).
  • tell - Informar el resultado de un ensayo.
    • trial_number : el número del ensayo (entero, obligatorio).
    • values : el resultado del ensayo (flotante o lista de flotantes, obligatorio).
  • set_trial_user_attr - Establecer atributos de usuario para un ensayo.
    • trial_number: el número del ensayo (entero, obligatorio).
    • key: la clave del atributo de usuario (cadena, obligatorio).
    • value: el valor del atributo de usuario (cualquier tipo, obligatorio).
  • get_trial_user_attrs - Obtener atributos de usuario en un ensayo.
    • trial_number: el número del ensayo (entero, obligatorio).

Visualización

  • plot_optimization_history - Devolver el gráfico del historial de optimización como imagen.
    • target: índice para especificar qué valor mostrar (entero, opcional).
    • target_name: nombre del objetivo para mostrar en la etiqueta del eje (cadena, opcional).
  • plot_hypervolume_history - Devolver el gráfico del historial de hipervolumen como imagen.
    • reference_point : una lista de puntos de referencia para calcular el hipervolumen (lista de flotantes, obligatorio).
  • plot_pareto_front - Devolver el gráfico del frente de Pareto como imagen para optimización multiobjetivo.
    • target_names: lista de nombres de objetivos utilizados como títulos de los ejes (lista de cadenas, opcional).
    • include_dominated_trials: un indicador para incluir todos los valores objetivos de los ensayos dominados (booleano, opcional).
    • targets: una lista de índices para especificar los valores objetivos a mostrar (lista de enteros, opcional).
  • plot_contour - Devolver el gráfico de contorno como imagen.
    • params : lista de parámetros a visualizar (lista de cadenas, opcional).
    • target : un índice para especificar el valor a mostrar (entero, obligatorio).
    • target_name : nombre del objetivo para mostrar en la barra de colores (cadena, obligatorio).
  • plot_parallel_coordinate - Devolver el gráfico de coordenadas paralelas como imagen.
    • params : lista de parámetros a visualizar (lista de cadenas, opcional).
    • target : un índice para especificar el valor a mostrar (entero, obligatorio).
    • target_name : nombre del objetivo para mostrar en la etiqueta del eje y la leyenda (cadena, obligatorio).
  • plot_slice - Devolver el gráfico de cortes como imagen.
    • params : lista de parámetros a visualizar (lista de cadenas, opcional).
    • target : un índice para especificar el valor a mostrar (entero, obligatorio).
    • target_name : nombre del objetivo para mostrar en la etiqueta del eje (cadena, obligatorio).
  • plot_param_importances - Devolver el gráfico de importancias de parámetros como imagen.
    • params : lista de parámetros a visualizar (lista de cadenas, opcional).
    • target : un índice para especificar el valor a mostrar (entero/nulo, opcional).
    • target_name : nombre del objetivo para mostrar en la leyenda (cadena, obligatorio).
  • plot_edf - Devolver el gráfico EDF como imagen.
    • target : un índice para especificar el valor a mostrar (entero, obligatorio).
    • target_name : nombre del objetivo para mostrar en la etiqueta del eje (cadena, obligatorio).
  • plot_timeline - Devolver el gráfico de línea de tiempo como imagen.
    • No se requieren parámetros.
  • plot_rank - Devolver el gráfico de rango como imagen.
    • params : lista de parámetros a visualizar (lista de cadenas, opcional).
    • target : un índice para especificar el valor a mostrar (entero, obligatorio).
    • target_name : nombre del objetivo para mostrar en la barra de colores (cadena, obligatorio).

Panel web

  • launch_optuna_dashboard - Iniciar el panel de Optuna.
    • port: puerto del servidor (entero, opcional, predeterminado: 58080).

Ejemplos

Optimización de la función 2D-Sphere

Aquí presentamos un ejemplo simple de optimización de la función 2D-Sphere, junto con ejemplos de indicaciones y el resumen de las respuestas del LLM.

Indicación del usuarioSalida en Claude
(Iniciar Claude Desktop)1
Por favor, cree un estudio de Optuna llamado "Optimize-2D-Sphere" para minimización.2
Por favor, sugiera dos parámetros flotantes x, y en [-1, 1].3
Por favor, informe el valor objetivo x**2 + y**2. Para calcular el valor, use el intérprete de JavaScript y no redondee los valores.4
Por favor, sugiera otro conjunto de parámetros y evalúelo.5
Por favor, grafique el historial de optimización hasta ahora.6

Iniciar el panel de Optuna y analizar los resultados de optimización

También puede iniciar el panel de Optuna a través del servidor MCP para analizar los resultados de optimización de forma interactiva.

Indicación del usuarioSalida en Claude
Por favor, inicie el panel de Optuna.7

De forma predeterminada, el panel de Optuna se iniciará en el puerto 58080. Puede acceder a él navegando a http://localhost:58080 en su navegador web como se muestra a continuación: 8

El panel de Optuna proporciona varias visualizaciones para analizar los resultados de optimización, como el historial de optimización, las importancias de parámetros y más.

Optimización de los parámetros de codificación de FFmpeg

ffmpeg-2

Esta demostración muestra cómo usar el servidor MCP de Optuna para encontrar automáticamente parámetros óptimos de codificación de FFmpeg. Optimiza las opciones de codificación x264 para maximizar la calidad de video (medida por la puntuación SSIM) mientras mantiene un tiempo de codificación razonable.

Consulte examples/ffmpeg para más detalles.

Optimización de la receta de galletas

cookie-recipe

En este ejemplo, optimizaremos una receta de galletas, haciendo referencia al artículo titulado "Bayesian Optimization for a Better Dessert".

Consulte examples/cookie-recipe para más detalles.

Optimización de la configuración de Matplotlib

Figuras predeterminadas y optimizadas por Optuna MCP.

Este ejemplo optimiza una configuración de Matplotlib.

Consulte examples/auto-matplotlib para más detalles.

Licencia

Licencia MIT (consulte LICENSE).