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)以及(如果存在)以下块fsidaes.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。
模型诊断工作流程(用于真正的洞察)
- 结构性(无需解决方案)\
run_diagnostics() → 固定DOF,然后使用 dulmage_mendelsohn_partition() 以准确查看哪些变量/约束是欠约束还是过约束。跟进 diagnostics_display("inconsistent_units"), diagnostics_display("potential_evaluation_errors")正如报告中所建议的那样。
- 初始化/求解后\
run_diagnostics(include_numerical=True) 或 report_numerical_issues().使用 top_constraint_residuals 用于快速可行性检查和 diagnostics_display("large_residuals") 了解详情。
- 如果求解器说不可行\
infeasibility_explanation() 以获得松弛和最小不可行集(冲突约束/界限)。
- 缩放/退化\
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”:{} } } } '''
