英语| 中文
用于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.)
配置
- 确保Abaqus/CAE正在运行:在启动此MCP服务器之前,请确保Abaqus/CAE应用程序已在桌面上打开,GUI已加载并响应。
- 无障碍:当服务器尝试与Abaqus/CAE接口交互时,确保没有其他模式对话框阻塞该接口。
用法
启动MCP服务器
导航到服务器的目录并运行:
python mcp_server.py服务器将启动并准备接受MCP请求。
提供的MCP工具
execute_script_in_abaqus_gui
- 描述:在活动Abaqus/CAE GUI会话中执行给定的Python代码字符串。它自动执行“文件->运行脚本”。..菜单进程。 - 论证: - python_code (str):要执行的Python脚本内容(Abaqus脚本接口命令)。 - 退货: str -指示脚本结果的消息 *提交* 尝试(例如,“脚本已提交执行…”)。 - 重要:此工具 不 返回Abaqus中脚本执行的直接输出或错误消息。要查看脚本的实际结果,您必须使用 get_abaqus_gui_message_log 在允许脚本运行时间后,使用该工具。
get_abaqus_gui_message_log
- 描述:尝试从Abaqus/CAE消息/日志区域(通常位于主GUI窗口的底部)检索文本内容。 - 参数:没有。 - 退货: str -从消息区域提取的文本,或者在检索失败时显示错误/状态消息。 - 备注:此工具的可靠性取决于准确识别消息区域UI元素。当前的实现使用启发式方法。为了在特定的Abaqus环境中稳健运行,您可能需要使用检查工具获得的特定UI元素标识符(例如,Automation Id、Name、ClassName)更新服务器代码(请参阅开发/故障排除)。
提供MCP提示
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()调用和使用pywinautosTimings.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软件时,请始终遵守达索系统提供的许可条款。
