返回市场
阿夸水-MCP服务器

阿夸水-MCP服务器

作者:jianzhichun41 星标更新:2025-05-27

项目介绍

【技术文档摘要】: English | 中文

ABAQUS MCP Server for GUI Scripting

一个设计用于与已运行的Abaqus/CAE图形用户界面(GUI)交互的MCP(Model Context Protocol)服务器。它允许在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]pywinautopygetwindowpsutilpywin32。)

配置

  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元素标识符(如AutomationId,Name,ClassName),这些标识符可以通过检查工具(参见开发/故障排除)获得。

提供的MCP提示

  1. abaqus_scripting_strategy
    • 描述:此提示提供了关于如何最好地使用服务器工具(execute_script_in_abaqus_guiget__abaqus_gui_message_log)的综合指导。它解释了脚本执行和结果验证的工作流程,工具假设以及故障排除技巧。强烈建议LLM代理在尝试使用这些工具之前咨询此提示。

重要考虑事项及限制

  • 需要运行的Abaqus GUI:此服务器仅与已打开且其GUI处于活跃和响应状态的Abaqus/CAE会话交互。它不能启动或管理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模块的InspectDialogpy_inspect.py脚本,FlaUInspect用于UIA后端)来识别您Abaqus版本中目标UI元素的正确属性(AutomationId,Name,ClassName,ControlType)。这些属性可以用来细化mcp_server.py中的搜索逻辑。
  • 超时:服务器包括一些time.sleep()调用,并使用pywinautoTimings.slow()来更好地处理Abaqus潜在缓慢的UI响应时间。在某些环境中可能需要调整这些设置。

项目结构

abaqus-mcp-gui-server/
├── mcp_server.py         # 主MCP服务器脚本
├── requirements.txt      # Python依赖项
└── README.md             # 此文档文件

许可证

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