Skip to main content
Glama
acp-mcp-agent

acp-mcp-agent

by aalperakiss

acp-mcp-agent

License: Apache 2.0 Python 3.10+ Platform: Windows ANSYS 2026 R1

概要

LLMエージェントが ANSYS Composite Pre [ACP(Pre)] を操作できるようにするMCPサーバーです。 積層構成の読み取り、繊維角度や層数の変更、製造ルールのチェック、解析モデルと複合材定義のエクスポートを行います。

ACPとの通信方法は2つあり、その違いが重要です。

agent ─┬─ acp_*      ──► PyACP ──► acp_grpcserver.exe   headless, batch / optimisation
       └─ acp_gui_*  ──► TCP 47800 ──► ACP-Pre GUI      live, visible on screen

PyACPは独自のヘッドレスACPセッションを起動するため、実行中のACP-Preウィンドウに接続できません。そこで、GUI内蔵Pythonで動作する小さなソケットリスナーという第2の経路があります。これはwxメインスレッド上でモデル編集を実行します。角度を変更すると、見ている間にビューポートが再描画されます。

2つのセッションは独立しています。acp_gui_*はGUIで開いているモデルを編集し、acp_*はヘッドレスの方を編集します。タスクごとにどちらかを選び、そこに留まってください。

スコープは複合材ループの上流側です。ソルバーと後処理は、すでに機能している場所にそのまま残ります。

acp-mcp-agent (lay-up) ──► analysis model ──► Mechanical (BC / mesh / solve)
                       ──► composite defs ──► PyDPF-Composites

Related MCP server: Ansys MCP Server

ライブデモ

要件

ANSYS

ACP付き。2026 R1(AWP_ROOT261)で開発・テスト済み

Python

サーバー側は3.10以上 — MCPクライアントが起動するインタープリタであればどれでも

パッケージ

mcp、pydantic、ansys-acp-core(requirements.txt参照)

OS

Windows。ブリッジ自体はポータブルですが、記載のパスはそうではありません

クライアント

任意のMCPクライアント。Claude Desktopで検証済み

ANSYSはpipパッケージではありません。ansys-acp-coreはローカルのANSYSインストールからACP gRPCサーバーを起動します。それがなければ、ここにあるものは何も実行できません。

GUIブリッジはインストール不要です。ACP-Pre内蔵のPython(テスト済み2026 R1では3.10)内で動作し、標準ライブラリと、ACP-Preがすでに提供しているwxのみを使用します。

パス

このリポジトリ内のどこにも、マシン固有のパスは埋め込まれていません。1つの環境変数が場所を保持します。

変数

読み取る場所

意味

ACP_BRIDGE_PATH

acp_mcp.py、install_autoload.py、acp_gui_autoload.py

acp_gui_bridge.pyへのフルパス

ACP_PROBE_OUT

00_probe_pyacp.py、gui_probe.py

プローブ出力の書き込み先(デフォルト: 00_probe_pyacp.pyの隣、GUIプローブは一時ディレクトリ)

ACP_PROBE2_OUT

gui_probe2.py

プローブ出力の書き込み先(デフォルト: 一時ディレクトリ)

install_autoload.pyは、解決されたパスをインストール先のモデルに焼き付けます。そのため、埋め込まれたコピーは後で環境変数を必要としません。


リポジトリ構成

acp_mcp.py              the MCP server - 15 tools, stdio transport
acp_gui_bridge.py       socket listener that runs INSIDE ACP-Pre
acp_gui_autoload.py     tiny loader, embedded in a model for a persistent bridge
install_autoload.py     embeds the loader in the open model, one call
mcp_config.example.json client registration template
requirements.txt
probes/
  00_probe_pyacp.py     stage 1: what this PyACP install actually exposes
  gui_probe.py          GUI console API exploration
  gui_probe2.py         deeper GUI console API dump
docs/
  pyacp_api_report.txt  reference probe output (yours lands in probes/)
  gui_probe2_out.txt    reference GUI console dump, 2026 R1
  acp-scripting-notes.md   undocumented ACP behaviour worth knowing

ゼロからのセットアップ

1. Python側をインストール

git clone https://github.com/aalperakiss/acp-mcp-agent.git
cd acp-mcp-agent
pip install -r requirements.txt

リポジトリではなくzipとして配布されていますか? どこかに解凍し、フォルダにcdしてpip install行を実行してください。ここではgitに依存するものはなく、このREADMEのパスはすべてフォルダルートからの相対パスです。

1つのインタープリタを使用し、その絶対パスを覚えておいてください。venv、Anacondaなど何でも構いませんが、クライアント設定に入れたものと正確に同じインタープリタでなければなりません。「mcpが見つからない」というサーバーは、ほとんどの場合、別のPythonが原因です。

2. ANSYSインストールをプローブ

python probes\00_probe_pyacp.py

セッションプローブのみ: ここでlaunch_acp()が失敗した場合、後続のすべては無意味です。レポートはprobes\pyacp_api_report.txtに出力されます。docs\pyacp_api_report.txtは開発マシンからの参照用で、比較のために保持されています。 次に、モデルを指定します:

python probes\00_probe_pyacp.py C:/path/to/your.acph5

PyACPはリリース間でいくつかのメソッド名を変更しているため、acp_mcp.pyは各操作を呼び出し時にファイル上部のCANDIDATES辞書から解決します。プローブレポートをCANDIDATES、PLY_ANGLE_ATTRS、PLY_COUNT_ATTRSと比較し、不足している実際の名前を追加してください。1箇所、1編集で済みます。

.acph5が必要ですか? ACP-Preを開き、ファイル → 名前を付けて保存。ACP-Preが開いていても、それ自体はPyACPの助けにはなりません。

3. サーバーをクライアントに登録

Claude Desktopの設定は%APPDATA%\Claude\claude_desktop_config.jsonにあります。mcp_config.example.jsonのacpエントリを、既存のmcpServersオブジェクトの内側に、すでにあるものと並べて貼り付けてください。ファイルを置き換えないでください。カンマに注意し、バックスラッシュはすべて2重にしてください(またはフォワードスラッシュを使用)。

その後、クライアントを完全に終了(システムトレイも含む)してから再度開いてください。ツールリストは起動時に固定されます。実行中のクライアントが新しいサーバーを認識することはありません。

クライアントなしでの動作確認:

npx @modelcontextprotocol/inspector python acp_mcp.py

4. ヘッドレス側の検証

順番に呼び出し、それぞれがError:ではなくJSONを返すことを確認してください。

  1. acp_import_model

  2. acp_get_layup

  3. acp_set_ply_angles — 1つのプライを変更し、積層構成を再読み取り

  4. acp_check_layup_rules — 実際のモデルでの違反は正常です

  5. acp_update_and_export

  6. acp_save_for_gui — 結果をACP-Preで開いて目視確認

これはすでに有用な作業です: モデルを開き、積層構成を一覧表示し、角度を変更し、ルールをチェックし、エクスポートします。さらに自動化する前に、しばらくこれで運用する価値があります。

5. ライブGUIブリッジを起動

モデルを開いたACP-Preを起動し、Pythonコンソールを開いて、次の1行を貼り付けます:

exec(open('<repo>/acp_gui_bridge.py').read())

次のように表示されるはずです:

[acp_gui_bridge] listening on 127.0.0.1:47800

これで、エージェントからのacp_gui_statusがpong: trueと開いているモデルの名前を返します。そこからacp_gui_set_ply_anglesでビューポートがライブで再描画されます。

リスナーはACP-Preプロセス内に存在します。ACP-Preを閉じると消えます。もう一度その行を貼り付けるか、以下のように永続化してください。

6. 永続ブリッジ(オプション)

オートローダーをScriptオブジェクトとしてモデルに埋め込み、ACP-Preが自動的にリスナーを起動するようにします。ACP-Preコンソールで:

import os
os.environ['ACP_BRIDGE_PATH'] = '<repo>/acp_gui_bridge.py'
exec(open('<repo>/install_autoload.py').read())

その後、モデルを保存します。これを無謀ではなく安全にする3つのポイント:

  • ローダーは埋め込まれ、ブリッジは埋め込まれません。 Scriptオブジェクトはソースを文字列として保存するため、ブリッジ全体を埋め込むと、ファイルを開くすべてのマシンにリスナーが配布されてしまいます。ローダーは代わりにディスクからブリッジを読み取ります。ファイルがなければリスナーもなく、1行の出力だけです。

  • 冪等です。 alwaysモードは、プライ編集後にブリッジ自身がトリガーする更新を含む、すべてのmodel.update()で発火します。sys._acp_bridgeのガードにより、リクエスト中にポート47800が再バインドされるのを防ぎます。

  • dbを自分で取得します。 Scriptオブジェクトは空のグローバルで実行されます — dbもmodelもありません。ローダーは__main__を通じてコンソールの名前空間に到達します。

スクリプトはファイルを開いたときではなくモデル更新時に実行されるため、install_autoload.pyはリスナーを即座に立ち上げるために1回の更新をトリガーします。後で削除するには、model.scripts['acp_agent_bridge'].active = Falseを設定して保存します。

共有モデルは、エージェント対応のコピーを別に保持してください。Scriptオブジェクトは設計レビューでは見えず、同僚があなたの.acph5を開いたときに、うっかりソケットリスナーを受け継ぐべきではありません。


ツール

ヘッドレス(PyACP)

ツール

機能

acp_import_model

ヘッドレスセッションを起動してモデルを読み込む

acp_get_layup

積層順のプライ: 角度、層数、材料

acp_set_ply_angles

繊維配向を設定、オプションで製造可能なセットにスナップ

acp_set_ply_counts

層数を設定。0でプライを無効化

acp_check_layup_rules

対称性、バランス、±45外層、連続4層以下、方向比率

acp_update_and_export

更新し、解析モデルと複合材定義を書き出す

acp_save_for_gui

ACP-Preで検査するための.acph5を書き出す

設計ベクトルを先に決め、エクスポートは一度だけ: set_*ツールは更新もエクスポートも行いません。

ライブGUI(ソケットブリッジ)

ツール

機能

acp_gui_status

ブリッジに到達可能か、どのモデルが開いているか

acp_gui_get_layup

GUIのモデルから積層構成を読み取る

acp_gui_set_ply_angles

角度を設定し、即座に再描画

acp_gui_set_ply_counts

層数を設定し、即座に再描画

acp_gui_add_ply

材料とOSSを継承した新しいモデリングプライを追加

acp_gui_save

GUIのモデルを保存

acp_gui_export

GUIから解析モデル / 複合材定義をエクスポート

acp_gui_exec

ライブセッションで任意のPythonを実行。dbとmodelがスコープ内

日常的な編集では、acp_gui_execよりも型付きツールを優先してください。自由形式のツールは探索や一回限りの用途向けです。

acp_gui_add_plyは角度のリストを受け取り、エントリごとに1つのプライを積層順に追加します。材料と配向選択セットは既存のプライ(デフォルトではグループ内の最後のプライ、またはcopy_from)から継承されます。create_modeling_plyはエージェントが保持できないオブジェクト参照を必要とするためです。したがって、プライがまったくないグループはここからシードできません。最初のプライはACP-Preで作成してください。

角度はデフォルトで0, ±15, ±30, ±45, ±60, 90にスナップします。中間の配向が必要な場合は、明示的にスナップをオフにしてください。


トラブルシューティング

症状

原因

設定編集後に新しいツールが表示されない

クライアントが完全に再起動されていない。ツールリストは起動時に固定

Cannot reach the live ACP-Pre bridge

ACP-Preが閉じている、またはこのプロセスでブリッジが読み込まれていない

ブリッジ呼び出しが300秒でタイムアウト

GUIがビジー — 開いているダイアログがメインスレッドをブロック

No active model

ACP-Preは実行中だがモデルが読み込まれていない

launch_acp()が失敗

ANSYSが見つからない、またはPythonが間違っている。まずプローブを確認

ポート47800が使用中

孤立したリスナー。コンソールでsys._acp_bridge.stop()


既知のギャップ

  • acp_check_layup_rules はすべてを1つのスタックに平坦化します。複数領域のパーツでは、実際のジオメトリで信頼できる結果を得る前に、OSSごとのグループ化が必要です。

  • プライ作成はライブGUI側のみに存在します(acp_gui_add_ply)。ヘッドレスのacp_*ツールは既存のプライの編集のみを行うため、PyACPを通じてモデルを駆動する場合は、事前に十分な予備プライを用意してモデルを構築する必要があります。

  • プライ削除ツールはまだありません。acp_gui_set_ply_countsを0に設定してプライを非アクティブ化してください。

  • 質量はエクスポートツールでは報告されません。属性パスはリリース間で変動が大きすぎて推測できません。プローブレポートで実際の値を確認したら追加してください。

  • 検証は1つのANSYSリリースのみに対して行われています。CANDIDATESメカニズムが存在するのは、新旧のリリースで差異があるためです。

  • テストはありません。検証経路は、プローブとステップ4および5の手動ツールシーケンスです。

  • 最適化ループは開始されていません。3つの決定が未解決です:オプティマイザーがACPを直接呼び出すかMCP経由で呼び出すか、ソルブがバッチで実行されるかMechanical MCP経由か、どの破損基準が制約を設定するか。サロゲートの予算を組んでください — 1回の評価は1回の完全なソルブであり、200回の評価は最低でも1営業日かかります。

セキュリティに関する注意

このブリッジは127.0.0.1のみでリッスンし、認証はありません。acp_gui_execはACP-Pre内で任意のPythonを実行します。そのマシン上のそのポートに到達できるものはすべて同じ権限を持ちます。0.0.0.0にバインドせず、共有セッションで実行しないでください。


コントリビューション

Issueとプルリクエストを歓迎します。特に、2026 R1以外のANSYSリリースからのプローブレポートは、CANDIDATESを埋める最速の方法です。生成されたprobes/pyacp_api_report.txtを添付し、リリースを明記してください。

コントリビューションはApache License 2.0(ライセンスのセクション5を参照)の下で受け付けられます。CLAは不要です。

ライセンス

Apache License 2.0 — LICENSEおよびNOTICEを参照してください。

ANSYS、ACP、Composite PrepPost、MechanicalおよびWorkbenchはANSYS, Inc.の商標です。このプロジェクトは独立した統合であり、ANSYS, Inc.とは提携、承認、支援の関係にありません。ここでANSYSのソフトウェアやドキュメントは再配布されません。ライセンスを受けたローカルのANSYSインストールが必要です。

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables an AI agent to drive a live FreeCAD desktop session, allowing it to create and edit geometry, capture views, and export models through MCP tools.
    18
    1
    -