Skip to main content
Glama
Erryb95

aras-plm-mcp

by Erryb95

aras-plm-mcp

MCP-сервер для Aras Innovator PLM, который знает схему, а не угадывает её.

71 инструмент поверх OData и AML. Проверено на живом инстансе Aras Innovator 2025 (14.35.0): 260 проверок в десяти наборах тестов, а также демонстрационный сценарий из 39 шагов, выполняемый от начала до конца. Каждый из 71 инструментов задействован хотя бы одним набором тестов, а каждый инструмент записи выполняет реальную запись.


Проблема

OD простой OData API из Aras Innovator динамический. Служебный документ возвращает 501 Not Implemented, а типовой инстанс предоставляет 484 ItemTypes, имена и свойства которых зависят от того, как администратор настроил модель данных. Никакого статического каталога для чтения нет.

Тонкая HTTP-рамка — get_items(itemtype, filter) — перекладывает эту проблему на модель. Ей приходится догадывается, что тип — Part, а не Parts, что материального состава Part BOM, а не BOM, that the quantity field is quantity, а не qty. Каждая неверная угадка — обработка запроса и непонятная ошибка.

Этот сервер инсталлирует схему и отдаёт её вам.

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

Related MCP server: kicad-mcp

Что OData не видит

Три вещи в Aras невидимы для OData, и каждая из них — это вопрос, который люди действительно задают. Это сервер обращается к ним через AML:

Вопрос

Why OData is failing

Как отвечает

"Покажи предыдущие ревизии."

OData returns only the current plus generation — is_currentDate.equals' 0'`

getItemAllVersions

"Выпусти эту деталь."

Переходы жизненного цикла не представлены как данные

promoteItem, с предварительно уточнённой ролью

"Продвинь этот заказ на изменение."

EvaluateActivity, in addition Complete to the додокументиран

Последний пришлось искать в журнале сервера. Aras отвечает An internal error has occured; в журнале написано Workflow: EvaluateActivity: Complete value not found.


Tools

Инструменты

Что делает

aras_ping

Connection, database, user, count "Type-Item"

aras_list_item_types

Список/поиск ItemTypes, терпимость к опечаткам

aras_describe_item_type

Типизированные property, флаги обязательности, исходящие связи

aras_search

Кросс-поиск по нескольким ItemTypes одновременно

aras_get_list_values

Допустимые значения для properties on a list

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 (recursive раскрытие с Cumulative amounts и определение cycles branch), 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

Maps lifecycle-states with the required role of each transition; users, groups, memberships and permissions; создание ItemTypes с рабочими экземплярами; comum dashboards, metrics, reports, saved queries, sequences, methods; server logs from both Serilog files and the SystemEventLog ItemType.

Запустите aras_ping первой — она скажет, к чему вы подключены.


Проконсультируйтесь перед попыткой

aras_how_to отвечает на вопросы "как мне выполнить X из внешнего клиента" и "почему эта ошибка" до того petrol, как модель начнёт угадывать.

Он она не индекср official documentation. That corpus describes client-side JavaScript and C# code — exactly the ways that don't work from the outside — so wouldn't his would lead back to a dead end. The Programmer's Guide's answer to how a file attached is aras.vault.SelectFile, which there is only exists inside the Aras client.

It relies on two actually reliable sources:

  1. Knowledge verified through a live instance, with the exact message that Argo returns. <Complete>1</Complete>, <ApplyItem> applies only the first element of a batch, and dependent ItemTypes have to be created the variables within а relationship — нwhile none of it in no manual.

  2. The instance itself — its UserMessage catalogue and installed Methods. Tensions is the truth of of that installation, and not generic.

And is saying that when does not know what it says, instead of returning the nearest match. A tool that answers everything is as useless as one that answers nothing.

Useful design descriptions

By default — read-only. A record in PLM is versioned-and-qualified, so she is switched on deliberately: ARAS_READONLY=false. All 21 write tools politely fail while it is true.

dryRun by default on for batch operations. aras_replace_component and aras_bulk_update show the affected of the rows and do nothing until asked.

Not only...

Explain: aras_plan_delete reports the references to ara item and refuses in the case of such dependency. If the relationship could not get of the contract, this returns -1 instead of false "it empty": an honest comparison is better valuable than a smile that does not guarantee.

Denials of permission are decoders. For a denied permission Aras returns generic HTTP 500 rather than 403. aras_get_type_permissions will tell you which identity is missing; aras_lookup_error looks at the UserMessage catalogue.

Item links always go as annotations, and only with $select. с Query Part BOM with $select returns related_id@aras.id and related_id@aras.keyed_name; without it everything returns to nothing, but strings look like transparent metadata. This is encoded once in readItemRef() (src/aras/odata.ts) so no caller does not need to think. It is also the easiest way to build a BOM explorer that silently returns the empty tree.


First steps

npm install
npm run build

Copy .env.example to .env and fill in. For Claude Code, add to .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"
      }
    }
  }
}

The auth — into the client: OAuth 2.0 Resource Owner etc. Password Credentials for the IOMApp client, scope Innovator.

Requires Node.js 20+ and an Aras Innovator instance that talks with it is allowed.


Testing

Каждый набор тестов is running on a live instance, writes only to objects with ZZ- prefix and removes them afterwards. The last scenario asserts that value of anonymity.

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 is interesting. It tests not tools — it tests questions, as they asked in the company:

"A designer has joined: create an account for them and put them in the right department." "Build a new component, take it through approval and release it." "Replace a component everywhere, but first say where you find it." "Try to delete a component used in the BOM: it must be refused."


What doesn't work and why

Four things are unreachable from an external client. This is not a trap. Each of these tools says exactly that and points to an alternative rather than making an ambiguous failure.

Evidence

Uploading files to the vault

Six attempts, all rejected: File Item cannot be added, Can't bind model. In the "Programmer's Guide" is only client JavaScript (aras.vault.selectFile) and server C# (setFileProperty, with the path local to the server)

Applicability expressions on a BOM

definition is a not documented XML dialect; Aras answers: 'named-constant' or 'constant' node must be present

Running Query Builder queries

No AML command can run the saved qry_QueryDefinition from the outside

Journal based on JavaScript

Method type not supported: JavaScript — those are client code

Reading on the other hand works and verified. aras_read_file loads the content via OData media resource `File(('')/$value), backtracking to the way to the endpoint; and gives something readable: text formats — text, PDF — the extracted text if exists, and the images for PNG/JPEG/GIF/WebP, so they can be viewed at all. A scanned drawing says the user can read it directly "OCR", not the line is empty.

docs/field-notes.md — field journal: every defect that a "live test" found, as well as the exact error that confirms each limit.


Documentation

Начало работы

От нуля к the first result from Aras

Architecture

How is it composed, and the trap that "built it all"

Walkthrough

Ten complete business processes in question

Тестирование

Тестовые наборы and how to run them carelessly

Полевые записи

What found out live testing: found defects and the four things that don't work

In docs/it/ — the original Italian resource: 30-block demo script and the raw testing log.

Contributions to the project

Экземпляры, которые не являются нашими, — это то, что нужно больше всего: разные версии, разные шаблоны, разные модели данных. См. 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