aras-plm-mcp
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 relationshipsRelated MCP server: kicad-mcp
OData だけでは見えないもの
Aras には OData からは見えないものが 3 つあり、それぞれが実際に人々が尋ねる質問です。このサーバーは AML を通じてそれらに到達します:
質問 | OData が失敗する理由 | 回答方法 |
"以前のリビジョンを表示してください。" | OData は現在の世代のみを返します — |
|
"この部品をリリースしてください。" | ライフサイクル遷移はデータとして公開されていません |
|
"この変更オーダーを進めてください。" | — |
|
最後のものはサーバーログを見つけるのに時間がかかりました。Aras は An internal error has occured と応答します。ログには Workflow: EvaluateActivity: Complete value not found とあります。
ツール
最初に aras_ping を実行してください — 接続先がわかります。
ツール | 機能 |
| 接続、データベース、ユーザー、ItemType 数 |
| ItemType の一覧/検索、タイプミスに寛容 |
| 型付きプロパティ、必須フラグ、発信リレーションシップ |
| 複数の ItemType にわたる クロスタイプ検索 |
| リストバックプロパティの許可値 |
| 試行前に参照: 外部から機能するもの、およびエラーが何を意味するか |
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 つの情報源を利用しています:
実インスタンスに対して検証された知識。Aras が返す正確なメッセージ付き。
<Complete>1</Complete>、バッチの最初の要素のみを適用する<ApplyItem>、依存 ItemType をリレーションシップ内で作成する必要があること — これらはどのマニュアルにも記載されていません。インスタンス自体 — その
UserMessageカタログとインストールされたMethod。これは一般的なものではなく、そのインストールの真実です。
そして、知らないときは最も近い一致を返すのではなく、その旨を伝えます。すべてに答えるツールは、何も答えないツールと同じくらい役に立ちません。
知っておくべき設計上の決定
デフォルトでは読み取り専用。 PLM への書き込みはバージョン管理され監査されるため、意図的に有効にしています: ARAS_READONLY=false。21 の書き込みツールはすべて、true の間は丁寧に拒否します。
一括操作では dryRun はデフォルトで オン です。 aras_replace_component と aras_bulk_update は影響を受ける行を表示し、要求するまで何も変更しません。
削除は実行前に計画されます。 aras_plan_delete はアイテムを参照するものを報告し、何かが参照している場合は拒否します。リレーションシップを検証できない場合は、リレーションシップが空であるふりをするのではなく -1 を返します — 正直なチェックは、無料で安心させるチェックに勝ります。
権限拒否はデコードされます。 Aras は拒否された権限に対して 403 ではなく一般的な HTTP 500 を返します。aras_get_type_permissions はどの ID が欠落しているかを示します。aras_lookup_error は UserMessage カタログでメッセージを検索します。
アイテム参照は注釈としてのみ、しかも $select を使用した場合にのみ取得されます。 Part BOM を $select あり でクエリすると related_id@aras.id と related_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 removedtest-flussi.mjs が興味深いものです。ツールをテストするのではなく、質問をテストします。企業内の誰かが尋ねるような方法で:
"デザイナーが入社しました: アカウントを作成し、適切な部門に配置してください。" "新しいコンポーネントをコード化し、承認を経てリリースしてください。" "コンポーネントをすべての場所で置き換えますが、最初にどこに配置されるかを教えてください。" "BOM で使用されているコンポーネントを削除しようとします: 拒否されなければなりません。"
機能しないものとその理由
外部クライアントからは到達できないものが 4 つあります。これは見落としではありません。影響を受ける各ツールはその旨を伝え、不透明に失敗する代わりに代替案を指し示します。
証拠 | |
ボールトへのファイルアップロード | 6 つの異なる試みがすべて拒否されました: |
BOM 上の有効期限式 |
|
Query Builder クエリの実行 | 外部から保存された |
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 を参照してください。
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to interact with Aras Innovator PLM systems via OAuth 2.0, allowing users to query PLM data, create items, and call server methods through natural language.16MIT
- AlicenseNot gradedqualityBmaintenanceEnables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.2MIT
- AlicenseNot gradedqualityFmaintenanceProvides access to Autodesk Platform Services API, enabling interaction with ACC projects and issues through natural language.25MIT
- AlicenseBqualityDmaintenanceIntegrates PTC Windchill and Creo Parametric with LLM-based clients via the Model Context Protocol, enabling natural language interaction with PLM and CAD systems for tasks like part search, BOM retrieval, model operations, and exports.114MIT
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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