一个使用 Optuna 自动化优化和分析的 模型上下文协议 (MCP) 服务器。
<img width="840" alt="image" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-6.png" />Optuna MCP 服务器可以在以下使用场景中使用,例如:
详情请参阅 示例部分。
Optuna MCP 服务器可以通过 uv 或 Docker 进行安装。
本节将解释如何安装 Optuna MCP 服务器,以 Claude Desktop 为例作为 MCP 客户端。
在开始安装过程之前,请从 Astral 安装 uv。
然后,将 Optuna MCP 服务器配置添加到 MCP 客户端。
要在 Claude Desktop 中包含它,请转到 Claude > 设置 > 开发者 > 编辑配置 > claude_desktop_config.json 并添加以下内容:
{
"mcpServers": {
"Optuna": {
"command": "/path/to/uvx",
"args": [
"optuna-mcp"
]
}
}
}
此外,您还可以使用 --storage 参数指定 Optuna 存储以持久保存结果。
{
"mcpServers": {
"Optuna": {
"command": "/path/to/uvx",
"args": [
"optuna-mcp",
"--storage",
"sqlite:///optuna.db"
]
}
}
}
添加后,请重启 Claude Desktop 应用程序。 有关 Claude Desktop 的更多信息,请查看 快速入门页面。
您也可以使用 Docker 运行 Optuna MCP 服务器。确保您的机器上已安装并运行 Docker。
{
"mcpServers": {
"Optuna": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--net=host",
"-v",
"/PATH/TO/LOCAL/DIRECTORY/WHICH/INCLUDES/DB/FILE:/app/workspace",
"optuna/optuna-mcp:latest",
"--storage",
"sqlite:////app/workspace/optuna.db"
]
}
}
}
Optuna MCP 提供了以下工具。 具体来说,它提供了 Optuna 的基本函数,如 Study、Trial、可视化和仪表板。 由于 MCP 客户端知道工具列表及其详细信息,用户无需记住这些细节。
study_name : 研究名称(字符串,必需)。directions: 优化的方向(最小化/最大化字面字符串列表,可选)。name : 采样器的名称(字符串,必需)。metric_names : 每个目标的度量名称列表(字符串列表,必需)。search_space : Optuna 的搜索空间(字典,必需)。trial_number : 试验编号(整数,必需)。values : 试验的结果(浮点数或浮点数列表,必需)。trial_number: 试验编号(整数,必需)。key: 用户属性的键(字符串,必需)。value: 用户属性的值(任意类型,必需)。trial_number: 试验编号(整数,必需)。target: 指定要显示的值的索引(整数,可选)。target_name: 轴标签上显示的目标名称(字符串,可选)。reference_point : 用于计算超体积的参考点列表(浮点数列表,必需)。target_names: 用作轴标题的对象名称列表(字符串列表,可选)。include_dominated_trials: 包括所有被支配试验的目标值的标志(布尔值,可选)。targets: 指定要显示的目标值的索引列表(整数列表,可选)。params : 要可视化的参数列表(字符串列表,可选)。target : 指定要显示的值的索引(整数,必需)。target_name : 显示在颜色条上的目标名称(字符串,必需)。params : 要可视化的参数列表(字符串列表,可选)。target : 指定要显示的值的索引(整数,必需)。target_name : 显示在轴标签和图例上的目标名称(字符串,必需)。params : 要可视化的参数列表(字符串列表,可选)。target : 指定要显示的值的索引(整数,必需)。target_name : 显示在轴标签上的目标名称(字符串,必需)。params : 要可视化的参数列表(字符串列表,可选)。target : 指定要显示的值的索引(整数/空,可选)。target_name : 显示在图例上的目标名称(字符串,必需)。target : 指定要显示的值的索引(整数,必需)。target_name : 显示在轴标签上的目标名称(字符串,必需)。params : 要可视化的参数列表(字符串列表,可选)。target : 指定要显示的值的索引(整数,必需)。target_name : 显示在颜色条上的目标名称(字符串,必需)。port: 服务器端口(整数,可选,默认:58080)。这里提供了一个简单的示例,用于优化 2D-Sphere 函数,包括示例提示和 LLM 响应摘要。
| 用户提示 | Claude 输出 |
|---|---|
| (启动 Claude Desktop) | <img alt="1" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-1.png" /> |
| 请创建一个名为“Optimize-2D-Sphere”的 Optuna 研究,进行最小化。 | <img alt="2" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-2.png" /> |
| 请建议两个在 [-1, 1] 范围内的浮点参数 x 和 y。 | <img alt="3" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-3.png" /> |
| 请报告目标值 x**2 + y**2。为了计算该值,请使用 JavaScript 解释器,并且不要四舍五入。 | <img alt="4" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-4.png" /> |
| 请建议另一组参数并评估它。 | <img alt="5" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-5.png" /> |
| 请绘制迄今为止的优化历史。 | <img alt="6" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/sphere2d/images/sphere2d-6.png" /> |
您还可以通过 MCP 服务器启动 Optuna 仪表板,以交互方式分析优化结果。
| 用户提示 | Claude 输出 |
|---|---|
| 请启动 Optuna 仪表板。 | <img alt="7" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/optuna-dashboard/images/optuna-dashboard-1.png" /> |
默认情况下,Optuna 仪表板将在端口 58080 上启动。
您可以通过导航到 http://localhost:58080 在您的网络浏览器中访问它,如下所示:
<img alt="8" src="https://raw.githubusercontent.com/optuna/optuna-mcp/main/examples/optuna-dashboard/images/optuna-dashboard-2.png" />
Optuna 仪表板提供了各种可视化工具来分析优化结果,例如优化历史、参数重要性等。

此演示展示了如何使用 Optuna MCP 服务器自动找到最优的 FFmpeg 编码参数。它优化了 x264 编码选项,以最大化视频质量(通过 SSIM 分数衡量),同时保持合理的编码时间。
详情请参阅 examples/ffmpeg。

在此示例中,我们将优化饼干配方,参考论文《贝叶斯优化实现更好的甜品》。
详情请参阅 examples/cookie-recipe。
此示例优化了 Matplotlib 配置。
详情请参阅 examples/auto-matplotlib。
MIT 许可证(见 LICENSE)。