Skip to main content
Glama
Erryb95

aras-plm-mcp

by Erryb95

aras-plm-mcp

スキーマを推測するのではなく、実際に把握する Aras Innovator PLM 用の MCP サーバー。

OData および AML を介した 71 のツール。実稼働中の Aras Innovator 2025 (14.35.0) インスタンスに対してテスト済み: 10 スイートにわたる 260 のアサーションに加え、39 ステップのデモスクリプトをエンドツーエンドで実行。71 のツールすべてが少なくとも 1 つのスイートで実行され、すべての書き込みツールが実際の書き込みを実行して検証されています。


問題

Aras Innovator の OData API は 動的 です。サービスドキュメントは 501 Not Implemented を返し、標準インスタンスは 484 の ItemType を公開しますが、その名前とプロパティは管理者がデータモデルをどのように構成したかによって異なります。読み取るべき静的なカタログはありません。

薄い HTTP ラッパー — get_items(itemtype, filter) — はその問題をモデルに押し付けます。タイプが Parts ではなく Part であること、部品表が BOM ではなく Part BOM であること、数量フィールドが qty ではなく quantity であることを推測する必要があります。間違った推測は毎回、往復と不透明なエラーを引き起こします。

このサーバーはスキーマをイントロスペクトし、それを返します。

aras_describe_item_type  itemType: "Part"
  → 41 typed properties, real mandatory flags, outgoing relationships

Related MCP server: kicad-mcp

OData だけでは見えないもの

Aras には OData からは見えないものが 3 つあり、それぞれが実際に人々が尋ねる質問です。このサーバーは AML を通じてそれらに到達します:

質問

OData が失敗する理由

回答方法

"以前のリビジョンを表示してください。"

OData は現在の世代のみを返します — is_current eq '0' はゼロ行を返します

getItemAllVersions

"この部品をリリースしてください。"

ライフサイクル遷移はデータとして公開されていません

promoteItem、必要なロールを最初に解決した上で

"この変更オーダーを進めてください。"

EvaluateActivity、文書化されていない <Complete>1</Complete> を含む

最後のものはサーバーログを見つけるのに時間がかかりました。Aras は An internal error has occured と応答します。ログには Workflow: EvaluateActivity: Complete value not found とあります。


ツール

最初に aras_ping を実行してください — 接続先がわかります。

ツール

機能

aras_ping

接続、データベース、ユーザー、ItemType 数

aras_list_item_types

ItemType の一覧/検索、タイプミスに寛容

aras_describe_item_type

型付きプロパティ、必須フラグ、発信リレーションシップ

aras_search

複数の ItemType にわたる クロスタイプ検索

aras_get_list_values

リストバックプロパティの許可値

aras_how_to

試行前に参照: 外部から機能するもの、およびエラーが何を意味するか

aras_query_items, aras_get_item, aras_get_relationships, aras_get_bom, aras_where_used, aras_get_documents, aras_get_aml, aras_get_files, aras_read_file, aras_get_history, aras_get_revisions, aras_get_my_identities, aras_get_identity_members, aras_export_aml

aras_get_bom (累積数量とブランチごとのサイクル検出を備えた再帰的展開), aras_manage_bom_line, aras_replace_component, aras_copy_part, aras_add_manufacturer_part, aras_check_release_readiness, aras_check_effectivity

aras_create_change, aras_add_affected_item, aras_get_change_impact, aras_get_workflow, aras_advance_change, aras_vote_activity, aras_delegate_activity

ライフサイクルマップと各遷移に必要なロールを持つ状態; ユーザー、グループ、メンバーシップ、権限; 動作するインスタンスを持つ ItemType の作成; ダッシュボード、メトリクス、レポート、保存済みクエリ、シーケンス、メソッド; Serilog ファイルと SystemEventLog ItemType の両方からのサーバーログ。

最初に aras_ping を実行してください — 接続先がわかります。


試行前に参照

aras_how_to は、モデルが推測を始める前に、"外部クライアントから X を行う方法""このエラーの理由" に答えます。

これは意図的に Aras の公式ドキュメントを索引付けしません。そのコーパスはクライアント側 JavaScript とサーバー側 C# を説明しており、まさに外部からは機能しないルートであるため、自信を持って行き止まりを指すことになります。ファイルを添付する方法に関するプログラマーズガイドの答えは aras.vault.selectFile であり、これは Aras クライアント内にのみ存在します。

実際に信頼できる 2 つの情報源を利用しています:

  1. 実インスタンスに対して検証された知識。Aras が返す正確なメッセージ付き。<Complete>1</Complete>、バッチの最初の要素のみを適用する <ApplyItem>、依存 ItemType をリレーションシップ内で作成する必要があること — これらはどのマニュアルにも記載されていません。

  2. インスタンス自体 — その UserMessage カタログとインストールされた Method。これは一般的なものではなく、そのインストールの真実です。

そして、知らないときは最も近い一致を返すのではなく、その旨を伝えます。すべてに答えるツールは、何も答えないツールと同じくらい役に立ちません。

知っておくべき設計上の決定

デフォルトでは読み取り専用。 PLM への書き込みはバージョン管理され監査されるため、意図的に有効にしています: ARAS_READONLY=false。21 の書き込みツールはすべて、true の間は丁寧に拒否します。

一括操作では dryRun はデフォルトで オン です。 aras_replace_componentaras_bulk_update は影響を受ける行を表示し、要求するまで何も変更しません。

削除は実行前に計画されます。 aras_plan_delete はアイテムを参照するものを報告し、何かが参照している場合は拒否します。リレーションシップを検証できない場合は、リレーションシップが空であるふりをするのではなく -1 を返します — 正直なチェックは、無料で安心させるチェックに勝ります。

権限拒否はデコードされます。 Aras は拒否された権限に対して 403 ではなく一般的な HTTP 500 を返します。aras_get_type_permissions はどの ID が欠落しているかを示します。aras_lookup_errorUserMessage カタログでメッセージを検索します。

アイテム参照は注釈としてのみ、しかも $select を使用した場合にのみ取得されます。 Part BOM$select あり でクエリすると related_id@aras.idrelated_id@aras.keyed_name が得られます。なし では何も返らず、行は不透明なメタデータのように見えます。これは readItemRef() (src/aras/odata.ts) に一度だけエンコードされているため、呼び出し側が覚えておく必要はありません。また、静かに空のツリーを返す BOM エクスプローラーを構築する最も簡単な方法でもあります。


インストール

npm install
npm run build

.env.example.env にコピーして記入してください。Claude Code の場合は、.mcp.json に追加します:

{
  "mcpServers": {
    "aras-plm": {
      "command": "node",
      "args": ["/path/to/aras-plm-mcp/dist/index.js"],
      "env": {
        "ARAS_URL": "http://localhost/InnovatorServer",
        "ARAS_DATABASE": "InnovatorSolutions",
        "ARAS_USER": "admin",
        "ARAS_PASSWORD": "…",
        "ARAS_CLIENT_ID": "IOMApp",
        "ARAS_READONLY": "true"
      }
    }
  }
}

認証は IOMApp クライアントに対する OAuth 2.0 Resource Owner Password Credentials で、スコープは Innovator です。

Node 20+ と、通信を許可された Aras Innovator インスタンスが必要です。


テスト

すべてのスイートは実インスタンスに対して実行され、ZZ- プレフィックスが付いたアイテムにのみ書き込み、その後それらを削除します。最後のフローは、本番データが変更されていないことを検証します。

node test-flussi.mjs      # ten whole business flows, request to conclusion
node test-demo.mjs        # the 39 blocks of the demo script, one by one
node test-full.mjs        # connection, discovery, reading, navigation
node test-product.mjs     # BOM, where-used, AML, documents, revisions
node test-lifecycle.mjs   # lifecycle, transitions, roles
node test-schema.mjs      # custom ItemTypes and properties
node test-admin.mjs       # identities and permissions
node test-analytics.mjs   # dashboards, metrics, effectivity
node test-reports.mjs     # reports, saved queries, sequences, methods
node test-write.mjs       # read-only refusals
node test-writepath.mjs   # real writes, created and removed

test-flussi.mjs が興味深いものです。ツールをテストするのではなく、質問をテストします。企業内の誰かが尋ねるような方法で:

"デザイナーが入社しました: アカウントを作成し、適切な部門に配置してください。" "新しいコンポーネントをコード化し、承認を経てリリースしてください。" "コンポーネントをすべての場所で置き換えますが、最初にどこに配置されるかを教えてください。" "BOM で使用されているコンポーネントを削除しようとします: 拒否されなければなりません。"


機能しないものとその理由

外部クライアントからは到達できないものが 4 つあります。これは見落としではありません。影響を受ける各ツールはその旨を伝え、不透明に失敗する代わりに代替案を指し示します。

証拠

ボールトへのファイルアップロード

6 つの異なる試みがすべて拒否されました: File Item cannot be addedCan't bind model。プログラマーズガイドにはクライアント側 JavaScript (aras.vault.selectFile) とサーバー側 C# (setFilePropertyサーバー ローカルのパス) のみが記載されています

BOM 上の有効期限式

definition は文書化されていない XML 方言です。Aras は 'named-constant' or 'constant' node must be presented と応答します

Query Builder クエリの実行

外部から保存された qry_QueryDefinition を実行する AML アクションはありません

JavaScript ベースのレポート

Method type not supported: JavaScript — これはクライアントコードです

一方、読み取りは機能し、検証されています。aras_read_file は OData メディアリソース (File('<id>')/$value) を通じてコンテンツをダウンロードし、ボールトエンドポイントにフォールバックして、読み取り可能なものを返します: テキスト形式の場合はテキスト、テキストを含む PDF の場合は抽出されたテキスト、PNG/JPEG/GIF/WebP の場合は画像自体を返すため、実際に確認できます。スキャンされた図面は、空の文字列を返すのではなく、OCR が必要であると伝えます。

docs/field-notes.md はフィールドログです: ライブテストで明らかになったすべての欠陥と、各制限を証明する正確なエラー。


ドキュメント

はじめに

何もない状態から Aras から最初の回答を得るまで

アーキテクチャ

どのように構成されているか、そしてそのすべてを形作る罠

ウォークスルー

質問としての 10 の完全なビジネスフロー

テスト

スイートと、何も壊さずに実行する方法

フィールドノート

ライブテストで明らかになったもの: 見つかった欠陥と、機能しない 4 つのこと

docs/it/ には元のイタリア語資料が含まれています: 39 ブロックのデモスクリプトと生のテストログ。

貢献

これが最も必要としているのは、私たちのものではないインスタンスです — 異なるバージョン、 異なるテンプレート、異なるデータモデル。CONTRIBUTING.md を参照してください。

セキュリティ問題: SECURITY.md まで、非公開で。

ライセンス

MIT — LICENSE を参照してください。

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.

  • Manage projects, tasks, time tracking, and team collaboration through natural language.

  • Create and manage AI agents that collaborate and solve problems through natural language interacti…

View all MCP Connectors

Latest Blog Posts

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/Erryb95/aras-plm-mcp'

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