Skip to main content
Glama

ABAQUS MCP Server for GUI Scripting

by jianzhichun
README_zh.md5.97 kB
[English](README.md) | 中文 # ABAQUS GUI 脚本执行 MCP 服务器 这是一个 MCP (模型上下文协议) 服务器,设计用于与一个 **已经运行的** Abaqus/CAE 图形用户界面 (GUI) 进行交互。它允许在 Abaqus 环境中执行 Python 脚本,并通过 MCP 工具从 Abaqus 消息日志/区域检索消息。 此服务器使用 GUI 自动化技术 (`pywinauto`) 来控制 Abaqus/CAE 应用程序。 ## 功能特性 - **GUI 内脚本执行**:通过自动化活动 Abaqus/CAE 会话中的 "File -> Run Script..." (文件 -> 运行脚本...) 菜单来执行 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 包: ```bash pip install -r requirements.txt ``` (请参阅 `requirements.txt` 文件获取依赖列表,主要包括 `mcp[cli]`、`pywinauto`、`pygetwindow`、`psutil`、`pywin32`。) ## 配置要求 1. **确保 Abaqus/CAE 正在运行**:在启动此 MCP 服务器之前,请确保 Abaqus/CAE 应用程序已在您的桌面上打开,GUI 已加载且响应正常。 2. **可访问性**:确保在服务器尝试与 Abaqus/CAE 界面交互时,没有其他模态对话框阻塞界面。 ## 使用方法 ### 启动 MCP 服务器 导航到服务器所在目录并运行: ```bash python mcp_server.py ``` 服务器将启动并准备好接受 MCP 请求。 ### MCP 工具说明 1. **`execute_script_in_abaqus_gui`** * **描述**:在活动的 Abaqus/CAE GUI 会话中执行给定的 Python 代码字符串。它会自动执行 'File -> Run Script...' (文件 -> 运行脚本...) 菜单流程。 * **参数**: * `python_code (str)`:要执行的 Python 脚本内容 (Abaqus 脚本接口命令)。 * **返回值**:`str` - 一个消息,指示脚本 *提交* 尝试的结果 (例如,"Script submitted for execution...")。 * **重要提示**:此工具 **不会** 返回脚本在 Abaqus内部执行的直接输出或错误消息。要查看脚本的实际结果,您必须在脚本运行一段时间后使用 `get_abaqus_gui_message_log` 工具。 2. **`get_abaqus_gui_message_log`** * **描述**:尝试从 Abaqus/CAE 消息/日志区域 (通常位于主 GUI 窗口的底部) 检索文本内容。 * **参数**:无。 * **返回值**:`str` - 从消息区域提取的文本;如果检索失败,则返回错误/状态消息。 * **注意**:此工具的可靠性取决于能否准确识别消息区域的 UI 元素。当前实现使用启发式方法。要在特定的 Abaqus 环境中稳健运行,您可能需要使用检查工具 (参见开发/故障排除部分) 获取特定的 UI 元素标识符 (例如 AutomationId, Name, ClassName),并更新服务器代码。 ### MCP 提示说明 1. **`abaqus_scripting_strategy`** * **描述**:此提示提供了关于如何最佳地组合使用服务器工具 (`execute_script_in_abaqus_gui` 和 `get_abaqus_gui_message_log`) 的全面指南。它解释了脚本执行和结果验证的工作流程、工具的假设以及故障排除技巧。强烈建议 LLM 代理在使用工具前查阅此提示。 ## 重要注意事项和限制 - **需要运行中的 Abaqus GUI**:此服务器 *仅* 与一个已经打开并且其 GUI 处于活动和响应状态的 Abaqus/CAE 会话进行交互。它不能自行启动或管理 Abaqus 应用程序。 - **GUI 自动化的敏感性**:GUI 自动化可能对 Abaqus 版本、屏幕分辨率、窗口主题以及微小的 UI 布局更改敏感。虽然 `pywinauto` 提供了一定程度的抽象,但仍可能出现问题。 - **焦点和窗口状态**:理想情况下,Abaqus 窗口应该是活动的、非最小化的窗口,以便进行最可靠的交互,尽管服务器会尝试管理焦点。 - **模态对话框**:Abaqus 中意外的模态对话框 (例如保存提醒、警告) 可能会阻塞自动化工具。 - **错误报告区分**:请区分 MCP 工具返回的错误 (例如,"Abaqus window not found") 和 Abaqus 消息日志中报告的错误 (这些错误源于您在 Abaqus 内部运行的脚本)。 ## 开发 / 故障排除 - **检查 UI 元素**:如果 `get_abaqus_gui_message_log` 工具无法准确检索消息,或者 `execute_script_in_abaqus_gui` 在处理 "Run Script" (运行脚本) 对话框时遇到问题,您可能需要使用 UI 检查工具 (例如 `pywinauto.inspect` 模块的 `InspectDialog` 或 `py_inspect.py` 脚本,对于 UIA 后端可使用 FlaUInspect) 来识别您 Abaqus 版本中目标 UI 元素的正确属性 (AutomationId, Name, ClassName, ControlType)。然后,可以使用这些属性来优化 `mcp_server.py` 中的搜索逻辑。 - **超时设置**:服务器包含一些 `time.sleep()` 调用,并使用 `pywinauto` 的 `Timings.slow()` 来更好地处理 Abaqus 可能较慢的 UI 响应时间。在某些环境中,这些设置可能需要调整。 ## 项目结构 ``` abaqus-mcp-gui-server/ ├── mcp_server.py # MCP 服务器主脚本 ├── requirements.txt # Python 依赖项 └── README.md # 本文档文件 └── README_zh.md # 中文版文档文件 (此文件) ``` ## 许可证 本项目旨在用于学习、研究和特定的自动化任务。使用 Abaqus 软件时,请始终遵守 Dassault Systèmes 提供的许可条款。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jianzhichun/abaqus-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server