MCP服务器

IDAES MCP Server 是一个基于HTTP的模型控制协议服务器,用于流程建模和优化分析。

  • by waikato-ahuora-smart-energy-systems
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 waikato-ahuora-smart-energy-systems/idaes-mcp

使用说明

IDAES MCP服务器

设置

uv sync
uv run idaes get-extensions

我不确定idaes在紫外线下的扩展效果有多好。确保 ipopt 指挥工作。

如果没有,最简单的方法就是在本地安装idaes:

pip install idaes-pse
idaes get-extensions

用法

此MVP从拥有模型的同一进程启动MCP over HTTP服务器。

uv run main.py

演示入口点构建一个微型模型,并在以下位置启动服务器:

http://127.0.0.1:8000/mcp

在您自己的脚本中,构建 m 首先,然后调用:

from idaes_mcp.server import start_mcp_server

start_mcp_server(m, host="127.0.0.1", port=8000)

可用工具:

型号概述

  • idaes.list_models –顶层块(例如。 fs)以及(如果存在)以下块 fs
  • idaes.model_summary –DOF、变量/约束计数、固定变量计数
  • idaes.list_variables -列出/过滤变量(值、边界、固定)
  • idaes.list_constraints –列表/过滤器约束(边界、活动)
  • idaes.fixed_variable_summary –具有名称、值和块的固定变量(快速查看诊断规范)
  • idaes.flowsheet_report –单位 report() 流程图块的输出

结构和数值诊断

  • idaes.run_diagnostics –结构报告+约束不足/约束过大的集合;使用 include_numerical=True 解决后
  • idaes.report_numerical_issues –完整的数值报告(缩放、残差、雅可比矩阵等;需要解决方案)
  • idaes.top_constraint_residuals –最大的约束违规(快速可行性分流)
  • idaes.dulmage_mendelsohn_partition –结构化欠约束/过约束变量和约束集(按块)
  • idaes.diagnostics_display –运行特定显示(例如。 large_residuals, inconsistent_units, near_parallel_constraints);请参阅工具说明 display_kind 选项

高级/高洞察力

  • idaes.infeasibility_explanation -为什么模型不可行(松弛+最小不可行集);运行额外的解决方案
  • idaes.near_parallel_jacobian –近乎并行的约束行或变量列(简并/冗余)
  • idaes.ill_conditioning_certificate –导致病态的约束/变量(Klotz风格)
  • idaes.svd_underdetermined –基于SVD的欠定变量/约束(小奇异值)
  • idaes.degeneracy_report –不可约退化集(IDS);需要MILP求解器(例如SCIP)

解决

  • idaes.solve_flowsheet –使用Lipot或其他求解器求解整个流程图(当前模型);返回成功、终止条件、消息。解决方案保留在模型中。

更改实时模型中的规格(持续到服务器重新启动)
需要此项,以便模型的DOF大于0,并且可以运行solve_one_point/convergence_analysis。

  • idaes.unfix_variables –取消固定给定的变量路径(释放DOF)。例如,用于调整阀门出口温度,以便扫掠进料流量。
  • idaes.fix_variables –将变量设置为值并修复它们(例如交换规格或设置相位分割0.0→ 0.001).
  • idaes.set_constraints_active –按路径激活或停用约束(例如,删除冗余的温度约束;使用 active=False 停用)。
  • idaes.set_variable_bounds –设置变量的下限/上限(setlb/setub)。用于放宽界限或约束决策变量。
  • idaes.apply_changes_and_solve –在一次调用中应用多个更改(取消固定、修复、激活/停用约束、设置边界),然后可以选择求解。返回应用摘要、模型摘要、求解结果和顶部残差。用于在一次往返中尝试一批规格更改。

测试多个值(释放DOF后)

  • idaes.solve_one_point –将给定的变量设置为值,求解一次, 恢复 国家;用于测试一个操作点。仅在临时修复后DOF≥0时有效(因此,如果DOF为0,请先取消某些规格)。
  • idaes.convergence_analysis –输入范围内的参数扫描(均匀采样);在每个样本上运行模型,返回每个点的迭代次数/时间/数值问题(顺序)。扫描输入需要DOF≥0。

模型诊断工作流程(用于真正的洞察)

  1. 结构性(无需解决方案)
    run_diagnostics() → 固定DOF,然后使用 dulmage_mendelsohn_partition() 以准确查看哪些变量/约束是欠约束还是过约束。跟进 diagnostics_display("inconsistent_units"), diagnostics_display("potential_evaluation_errors")正如报告中所建议的那样。

  2. 初始化/求解后
    run_diagnostics(include_numerical=True) 或 report_numerical_issues().使用 top_constraint_residuals 用于快速可行性检查和 diagnostics_display("large_residuals") 了解详情。

  3. 如果求解器说不可行
    infeasibility_explanation() 以获得松弛和最小不可行集(冲突约束/界限)。

  4. 缩放/退化
    near_parallel_jacobian(direction="row") 或 direction="column", ill_conditioning_certificate()那么 svd_underdetermined() 并且可选 degeneracy_report() (需要SCIP或另一个MILP求解器)。

例子

示例文件显示了工作和损坏的idaes流程图。还提供了一个描述文件。

''' { “mcpServers”:{ “idaes-mcp”: “url”:“http://127.0.0.1:8005/mcp" }, “exa”:{ “url”:“https://mcp.exa.ai/mcp", “headers”:{} } } } '''