Optuna MCP Server

Automatize otimização e análise usando Optuna.

Documentação

Servidor MCP Optuna

Python pypi GitHub license Tests

Um servidor Model Context Protocol (MCP) que automatiza otimização e análise usando Optuna.

image

Casos de Uso

O Servidor MCP Optuna pode ser usado nos seguintes casos de uso, por exemplo.

  • Otimização automatizada de hiperparâmetros por LLMs
  • Análise interativa dos resultados de otimização do Optuna via interface de chat
  • Otimizar entrada e saída de outras ferramentas MCP

Para detalhes, veja a seção Exemplos.

Instalação

O servidor MCP Optuna pode ser instalado usando uv ou Docker. Esta seção explica como instalar o servidor MCP Optuna, usando o Claude Desktop como exemplo de cliente MCP.

Uso com uv

Antes de iniciar o processo de instalação, instale uv da Astral.

Em seguida, adicione a configuração do servidor MCP Optuna ao cliente MCP. Para incluí-lo no Claude Desktop, vá em Claude > Configurações > Desenvolvedor > Editar Config > claude_desktop_config.json e adicione o seguinte:

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

Além disso, você pode especificar o armazenamento do Optuna com o argumento --storage para persistir os resultados.

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

Após adicionar isso, reinicie o aplicativo Claude Desktop. Para mais informações sobre o Claude Desktop, consulte a página de início rápido.

Uso com Docker

Você também pode executar o servidor MCP Optuna usando Docker. Certifique-se de ter o Docker instalado e em execução na sua 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"
      ]
    }
  }
}

Ferramentas fornecidas pelo MCP Optuna

O MCP Optuna fornece as seguintes ferramentas. Especificamente, oferece funções primitivas do Optuna, como Study, Trial, Visualization e Dashboard. Como os clientes MCP conhecem a lista de ferramentas e os detalhes de cada ferramenta, os usuários não precisam lembrar desses detalhes.

Study

  • create_study - Cria um novo estudo Optuna com o study_name e direções fornecidos. Se o estudo já existir, ele será simplesmente carregado.
    • study_name : nome do estudo (string, obrigatório).
    • directions: As direções da otimização (lista de strings literais minimize/maximize, opcional).
  • set_sampler - Define o amostrador para o estudo.
    • name : o nome do amostrador (string, obrigatório).
  • get_all_study_names - Obtém todos os nomes de estudos do armazenamento.
  • set_metric_names - Define metric_names. Metric_names são rótulos usados para distinguir o que cada valor objetivo representa.
    • metric_names : A lista de nomes de métricas para cada objetivo (lista de strings, obrigatório).
  • get_metric_names - Obtém metric_names.
    • Nenhum parâmetro necessário.
  • get_directions - Obtém as direções do estudo.
    • Nenhum parâmetro necessário.
  • get_trials - Obtém todos os trials em formato CSV.
    • Nenhum parâmetro necessário.
  • best_trial - Obtém o melhor trial.
    • Nenhum parâmetro necessário.
  • best_trials - Retorna os trials localizados na frente de Pareto no estudo.
    • Nenhum parâmetro necessário.

Trial

  • ask - Sugere novos parâmetros usando Optuna.
    • search_space : o espaço de busca para Optuna (dicionário, obrigatório).
  • tell - Relata o resultado de um trial.
    • trial_number : o número do trial (inteiro, obrigatório).
    • values : o resultado do trial (float ou lista de floats, obrigatório).
  • set_trial_user_attr - Define atributos de usuário para um trial.
    • trial_number: o número do trial (inteiro, obrigatório).
    • key: a chave do atributo de usuário (string, obrigatório).
    • value: o valor do atributo de usuário (qualquer tipo, obrigatório).
  • get_trial_user_attrs - Obtém atributos de usuário em um trial.
    • trial_number: o número do trial (inteiro, obrigatório).

Visualização

  • plot_optimization_history - Retorna o gráfico do histórico de otimização como imagem.
    • target: índice para especificar qual valor exibir (inteiro, opcional).
    • target_name: nome do alvo para exibir no rótulo do eixo (string, opcional).
  • plot_hypervolume_history - Retorna o gráfico do histórico de hipervolume como imagem.
    • reference_point : uma lista de pontos de referência para calcular o hipervolume (lista de floats, obrigatório).
  • plot_pareto_front - Retorna o gráfico da frente de Pareto como imagem para otimização multiobjetivo.
    • target_names: lista de nomes de objetivos usados como títulos dos eixos (lista de strings, opcional).
    • include_dominated_trials: um sinalizador para incluir todos os valores objetivos dos trials dominados (booleano, opcional).
    • targets: uma lista de índices para especificar os valores objetivos a exibir (lista de inteiros, opcional).
  • plot_contour - Retorna o gráfico de contorno como imagem.
    • params : lista de parâmetros para visualizar (lista de strings, opcional).
    • target : um índice para especificar o valor a exibir (inteiro, obrigatório).
    • target_name : nome do alvo para exibir na barra de cores (string, obrigatório).
  • plot_parallel_coordinate - Retorna o gráfico de coordenadas paralelas como imagem.
    • params : lista de parâmetros para visualizar (lista de strings, opcional).
    • target : um índice para especificar o valor a exibir (inteiro, obrigatório).
    • target_name : nome do alvo para exibir no rótulo do eixo e na legenda (string, obrigatório).
  • plot_slice - Retorna o gráfico de fatias como imagem.
    • params : lista de parâmetros para visualizar (lista de strings, opcional).
    • target : um índice para especificar o valor a exibir (inteiro, obrigatório).
    • target_name : nome do alvo para exibir no rótulo do eixo (string, obrigatório).
  • plot_param_importances - Retorna o gráfico de importâncias dos parâmetros como imagem.
    • params : lista de parâmetros para visualizar (lista de strings, opcional).
    • target : um índice para especificar o valor a exibir (inteiro/null, opcional).
    • target_name : nome do alvo para exibir na legenda (string, obrigatório).
  • plot_edf - Retorna o gráfico EDF como imagem.
    • target : um índice para especificar o valor a exibir (inteiro, obrigatório).
    • target_name : nome do alvo para exibir no rótulo do eixo (string, obrigatório).
  • plot_timeline - Retorna o gráfico de linha do tempo como imagem.
    • Nenhum parâmetro necessário.
  • plot_rank - Retorna o gráfico de classificação como imagem.
    • params : lista de parâmetros para visualizar (lista de strings, opcional).
    • target : um índice para especificar o valor a exibir (inteiro, obrigatório).
    • target_name : nome do alvo para exibir na barra de cores (string, obrigatório).

Painel Web

  • launch_optuna_dashboard - Inicia o painel do Optuna.
    • port: porta do servidor (inteiro, opcional, padrão: 58080).

Exemplos

Otimizando a Função 2D-Sphere

Aqui apresentamos um exemplo simples de otimização da função 2D-Sphere, junto com exemplos de prompts e o resumo das respostas do LLM.

Prompt do usuárioSaída no Claude
(Iniciar Claude Desktop)1
Por favor, crie um estudo Optuna chamado "Optimize-2D-Sphere" para minimização.2
Por favor, sugira dois parâmetros float x, y em [-1, 1].3
Por favor, relate o valor objetivo x**2 + y**2. Para calcular o valor, use o interpretador JavaScript e não arredonde os valores.4
Por favor, sugira outro conjunto de parâmetros e avalie-o.5
Por favor, plote o histórico de otimização até agora.6

Iniciando o Painel do Optuna e Analisando Resultados de Otimização

Você também pode iniciar o painel do Optuna via servidor MCP para analisar os resultados de otimização interativamente.

Prompt do usuárioSaída no Claude
Por favor, inicie o painel do Optuna.7

Por padrão, o painel do Optuna será iniciado na porta 58080. Você pode acessá-lo navegando para http://localhost:58080 no seu navegador web, como mostrado abaixo: 8

O painel do Optuna fornece várias visualizações para analisar os resultados de otimização, como histórico de otimização, importâncias de parâmetros e mais.

Otimizando os Parâmetros de Codificação do FFmpeg

ffmpeg-2

Esta demonstração mostra como usar o servidor MCP Optuna para encontrar automaticamente parâmetros ideais de codificação do FFmpeg. Ele otimiza opções de codificação x264 para maximizar a qualidade do vídeo (medida pela pontuação SSIM) enquanto mantém o tempo de codificação razoável.

Consulte examples/ffmpeg para detalhes.

Otimizando a Receita de Biscoitos

cookie-recipe

Neste exemplo, otimizaremos uma receita de biscoitos, referenciando o artigo intitulado "Bayesian Optimization for a Better Dessert".

Consulte examples/cookie-recipe para detalhes.

Otimizando a Configuração do Matplotlib

Figuras padrão e otimizadas pelo MCP Optuna.

Este exemplo otimiza uma configuração do Matplotlib.

Consulte examples/auto-matplotlib para detalhes.

Licença

Licença MIT (veja LICENSE).