Abaqus GUI脚本执行服务器

一个用于与已运行的Abaqus/CAE图形用户界面(GUI)交互的MCP服务器,支持通过Python脚本执行和消息日志检索。

  • by jianzhichun
  • Python
  • 本地部署
  • 108 星标
  • 更新于
在 GitHub 查看 jianzhichun/abaqus-mcp-server

使用说明

英语| 中文

用于GUI脚本编写的ABAQUS MCP服务器

MCP(模型上下文协议)服务器,旨在与 已在运行 Abaqus/CAE图形用户界面(GUI)。它允许在Abaqus环境中执行Python脚本,并通过MCP工具从Abaqus消息日志/区域检索消息。

此服务器使用GUI自动化技术(pywinauto)以控制Abaqus/CAE应用程序。

特性

  • GUI中的脚本执行:通过自动执行活动Abaqus/CAE会话中的“文件->运行脚本…”菜单来执行Python脚本。
  • 消息日志检索:试图从Abaqus/CAE消息/日志显示区域抓取文本内容。
  • MCP接口:将功能作为标准MCP工具公开,并提示与LLM代理和其他MCP兼容客户端轻松集成。
  • 在现有GUI上运行:不启动或停止Abaqus/CAE;它要求Abaqus/CAE会话已经打开并正在运行。

系统要求

  • 操作系统:Windows(由于 pywinauto 以及Abaqus GUI交互)。
  • python:Python 3.7+。
  • Abaqus/CAE:必须安装兼容版本的Abaqus/CAE,并且 已在GUI打开的情况下运行 使用此服务器时。

Python依赖关系

使用pip安装所需的Python包:

pip install -r requirements.txt

(参见 requirements.txt 对于依赖关系列表,主要是 mcp[cli], pywinauto, pygetwindow, psutil, pywin32.)

配置

  1. 确保Abaqus/CAE正在运行:在启动此MCP服务器之前,请确保Abaqus/CAE应用程序已在桌面上打开,GUI已加载并响应。
  2. 无障碍:当服务器尝试与Abaqus/CAE接口交互时,确保没有其他模式对话框阻塞该接口。

用法

启动MCP服务器

导航到服务器的目录并运行:

python mcp_server.py

服务器将启动并准备接受MCP请求。

提供的MCP工具

  1. execute_script_in_abaqus_gui

    • 描述:在活动Abaqus/CAE GUI会话中执行给定的Python代码字符串。它自动执行“文件->运行脚本”。..菜单进程。
    • 论证:
      • python_code (str):要执行的Python脚本内容(Abaqus脚本接口命令)。
    • 退货: str -指示脚本结果的消息 提交 尝试(例如,“脚本已提交执行…”)。
    • 重要:此工具 不 返回Abaqus中脚本执行的直接输出或错误消息。要查看脚本的实际结果,您必须使用 get_abaqus_gui_message_log 在允许脚本运行时间后,使用该工具。
  2. get_abaqus_gui_message_log

    • 描述:尝试从Abaqus/CAE消息/日志区域(通常位于主GUI窗口的底部)检索文本内容。
    • 参数:没有。
    • 退货: str -从消息区域提取的文本,或者在检索失败时显示错误/状态消息。
    • 备注:此工具的可靠性取决于准确识别消息区域UI元素。当前的实现使用启发式方法。为了在特定的Abaqus环境中稳健运行,您可能需要使用检查工具获得的特定UI元素标识符(例如,Automation Id、Name、ClassName)更新服务器代码(请参阅开发/故障排除)。

提供MCP提示

  1. abaqus_scripting_strategy
    • 描述:此提示提供了有关如何最好地使用服务器工具的全面指导(execute_script_in_abaqus_gui 和 get_abaqus_gui_message_log)一起有效。它解释了脚本执行和结果验证的工作流程、工具假设和故障排除提示。强烈建议LLM代理在尝试使用这些工具之前查看此提示。

重要注意事项和限制

  • 需要运行Abaqus GUI:此服务器 仅 与已经打开的Abaqus/CAE会话交互,该会话的GUI处于活动状态并响应。它无法启动或管理Abaqus应用程序本身。
  • GUI自动化灵敏度:GUI自动化可能对Abaqus版本、屏幕分辨率、窗口主题和微小的UI布局更改很敏感。当 pywinauto 如果提供了良好的抽象级别,仍然会出现问题。
  • 焦点和窗口状态:Abaqus窗口最好是活动的、非最小化的窗口,以实现最可靠的交互,尽管服务器试图管理焦点。
  • 模态对话框:Abaqus中意外的模式对话框(例如保存提醒、警告)可能会阻止自动化工具。
  • 错误报告:区分MCP工具的错误(例如“未找到Abaqus窗口”)和报告的错误 在...之内 Abaqus消息日志(源自您在Abaqus中运行的脚本)。

开发/故障排除

  • 检查UI元素:如果 get_abaqus_gui_message_log 工具无法准确检索消息,或者 execute_script_in_abaqus_gui 如果“运行脚本”对话框出现问题,您可能需要使用UI检查工具(例如。, pywinauto.inspect 模块 InspectDialog 或 py_inspect.py 脚本,用于UIA后端的FlaUInspect),以识别Abaqus版本中目标UI元素的正确属性(Automation Id、Name、ClassName、ControlType)。然后,这些属性可用于改进中的搜索逻辑 mcp_server.py.
  • 超时:服务器包括一些 time.sleep() 调用和使用 pywinautos Timings.slow() 以更好地处理Abaqus潜在的缓慢UI响应时间。在某些环境中,这些可能需要调整。

项目结构

abaqus-mcp-gui-server/
├── mcp_server.py         # The main MCP server script
├── requirements.txt      # Python dependencies
└── README.md             # This documentation file

许可证

该项目旨在用于学习、研究和特定的自动化任务。使用Abaqus软件时,请始终遵守达索系统提供的许可条款。