Skip to main content
Glama
aras-plm-mcp

aras-plm-mcp

by Erryb95

aras-plm-mcp

An MCP server for Aras Innovator PLM that knows the schema instead of guessing it.

71 tools over OData and AML. Tested against a live Aras Innovator 2025 (14.35.0) instance: 260 assertions across ten suites, plus a 39-step demo script executed end to end. Every one of the 71 tools is exercised by at least one suite, and every write tool is exercised performing a real write.


The problem

Aras Innovator's OData API is dynamic. The service document answers 501 Not Implemented, and a stock instance exposes 484 ItemTypes whose names and properties depend on how the administrator configured the data model. There is no static catalogue to read.

A thin HTTP wrapper — get_items(itemtype, filter) — pushes that problem onto the model. It has to guess that the type is Part and not Parts, that the bill of materials is Part BOM and not BOM, that the quantity field is quantity and not qty. Every wrong guess is a round trip and an opaque error.

This server introspects the schema and hands it back.

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

Related MCP server: PTC-MCP Integration Server

What OData alone cannot see

Three things in Aras are invisible to OData, and each one is a question people actually ask. This server reaches them through AML:

Question

Why OData fails

How it's answered

"Show me the previous revisions."

OData returns only the current generation — is_current eq '0' yields zero rows

getItemAllVersions

"Release this part."

Lifecycle transitions are not exposed as data

promoteItem, with the required role resolved first

"Advance this change order."

—

EvaluateActivity, including the undocumented <Complete>1</Complete>

That last one took a server log to find. Aras answers An internal error has occured; the log says Workflow: EvaluateActivity: Complete value not found.


Tools

Tool

What it does

aras_ping

Connection, database, user, ItemType count

aras_list_item_types

List/search ItemTypes, tolerant of typos

aras_describe_item_type

Typed properties, mandatory flags, outgoing relationships

aras_search

Cross-type search over several ItemTypes at once

aras_get_list_values

Allowed values for list-backed properties

aras_how_to

Consult before attempting: what works from outside, and why an error means what it means

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 explosion with cumulative quantities and per-branch cycle detection), 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

Lifecycle maps and states with the role each transition requires; users, groups, memberships and permissions; creating ItemTypes with working instances; dashboards, metrics, reports, saved queries, sequences, methods; server logs from both the Serilog files and the SystemEventLog ItemType.

Run aras_ping first — it tells you what you're connected to.


Consult before attempting

aras_how_to answers "how do I do X from an external client" and "why this error" before the model starts guessing.

It deliberately does not index Aras's official documentation. That corpus describes client-side JavaScript and server-side C# — precisely the routes that do not work from outside — so it would confidently point at dead ends. The Programmer's Guide's answer to attaching a file is aras.vault.selectFile, which only exists inside the Aras client.

It draws on two sources that are actually reliable:

  1. Knowledge verified against a live instance, with the exact message Aras returns. <Complete>1</Complete>, <ApplyItem> applying only the first element of a batch, dependent ItemTypes having to be created inside the relationship — none of this is in any manual.

  2. The instance itself — its UserMessage catalogue and installed Methods. That is the truth of that installation rather than a generic one.

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

Design decisions worth knowing

Read-only by default. Writes to a PLM are versioned and audited, so they are enabled on purpose: ARAS_READONLY=false. Every one of the 21 write tools refuses politely while it is true.

dryRun defaults to on for bulk operations. aras_replace_component and aras_bulk_update show you the affected rows and change nothing until you ask.

Writes are read back. aras_create_item, aras_update_item and aras_create_part re-read the item after writing and return proprietaNonApplicate for anything that did not land. Aras accepts and silently ignores some properties — cost on a Part is computed by the rollup, so setting it returns no error and has no effect. Without reading back, the caller believes it wrote something that is not there.

Deletion is planned before it is done. aras_plan_delete reports what references the item and refuses when something does. Where it could not verify a relationship it returns -1 rather than pretending the relationship is empty — an honest check beats one that reassures you for free.

Permission denials are decoded. Aras returns a generic HTTP 500 for a denied permission, not a 403. aras_get_type_permissions tells you which identity is missing; aras_lookup_error looks up the message in the UserMessage catalogue.

Item references only arrive as annotations, and only with $select. Querying Part BOM with $select yields related_id@aras.id and related_id@aras.keyed_name; without it, nothing comes back at all and the rows look like opaque metadata. This is encoded once in readItemRef() (src/aras/odata.ts) so no caller has to remember it. It is also the single easiest way to build a BOM explorer that silently returns an empty tree.


Install

npm install
npm run build

Copy .env.example to .env and fill it 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"
      }
    }
  }
}

Authentication is OAuth 2.0 Resource Owner Password Credentials against the IOMApp client, scope Innovator.

Requires Node 20+ and an Aras Innovator instance you are allowed to talk to.


Testing

Every suite runs against a live instance, writes only to items prefixed ZZ-, and removes them afterwards. The last flow asserts that production data was untouched.

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 the interesting one. It doesn't test tools — it tests questions, the way someone in a company would ask them:

"A designer has joined: create their account and put them in the right department." "Code a new component, take it through approval, and release it." "Replace a component everywhere, but first tell me where it would land." "Try to delete a component that's used in a BOM: it must refuse."


What does not work, and why

Five things are unreachable from an external client. This is not an oversight, and each affected tool says so and points at the alternative instead of failing opaquely.

Evidence

Uploading files to the vault

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

Effectivity expressions on a BOM

definition is an undocumented XML dialect; Aras replies 'named-constant' or 'constant' node must be presented

Executing Query Builder queries

No AML action runs a saved qry_QueryDefinition from outside

JavaScript-based reports

Method type not supported: JavaScript — it is client code

Node coordinates on a workflow map

x/y are not declared properties of Workflow Map Activity; writing them returns 200 and changes nothing

Reading, on the other hand, works and is verified. aras_read_file downloads the content through the OData media resource (File('<id>')/$value), falling back to the vault endpoint, and hands back something readable: text for text formats, extracted text for PDFs that contain any, and the image itself for PNG/JPEG/GIF/WebP so it can actually be looked at. A scanned drawing says it would need OCR rather than returning an empty string.

docs/field-notes.md is the field log: every defect the live testing surfaced, and the exact error that proves each limit.


Documentation

Getting started

From nothing to your first answer out of Aras

Architecture

How it is put together, and the trap that shapes all of it

Walkthrough

Ten complete business flows, as questions

Testing

The suites, and how to run them without hurting anything

Field notes

What live testing surfaced: defects found, and four things that do not work

docs/it/ holds the original Italian material: a 39-block demo script and the raw testing log.

Contributing

Instances that are not ours are what this needs most — different versions, different templates, different data models. See CONTRIBUTING.md.

Security issues: SECURITY.md, privately.

Licence

MIT — see LICENSE.

Available Tools

71 tools
aras_add_affected_itemB

Aggiunge un elemento fra quelli impattati da una ECR/ECN esistente.

Inputs: tipo (required), changeId (required), itemNumber (required), itemType.

aras_add_manufacturer_partB

Aggiunge un componente commerciale (Manufacturer Part) e lo approva su una Part, creando il costruttore se non esiste. Copre in un passo Manufacturer, Manufacturer Part e Part AML.

Inputs: mpn (required), perPart (required), costruttore (required), descrizione (required).

aras_add_propertyC

Aggiunge una proprieta' a un ItemType esistente.

Inputs: nome (required), tipo (required), itemType (required), etichetta, +2 more.

aras_advance_changeA

Fa avanzare una ECR/ECN votando l'attivita' ATTIVA del suo workflow. Fra le attivita' del processo una sola e' Active: le Pending sono a valle e votarle non produce effetti. dryRun mostra quale verrebbe votata.

Inputs: via (required), changeId (required), dryRun, commenti.

aras_aml_requestA

Via di fuga: esegue AML (Aras Markup Language) grezzo contro InnovatorServer.aspx. Da usare solo per cio' che OData non copre — logiche di query non esprimibili con $filter, metodi server, azioni speciali. Passa il frammento <Item .../>, l'envelope SOAP e' automatico. Le action che scrivono sono bloccate in sola lettura.

Inputs: itemXml (required).

aras_bulk_updateB

Aggiorna in blocco tutti gli elementi che corrispondono a un filtro OData. dryRun (default) elenca cosa verrebbe toccato senza scrivere.

Inputs: filtro (required), valori (required), itemType (required), dryRun, +1 more.

aras_check_effectivityA

Verifica se una Part era valida a una certa data, in base a effective_date e superseded_date. E' l'effettivita' basata sulle date, quella che Aras popola sempre. Per l'effettivita' configurabile per modello/unita' usa aras_get_effectivity_config.

Inputs: data (required), partIds (required).

aras_check_release_readinessA

Verifica se un assieme e' pronto per il rilascio: elenca i componenti della distinta non ancora rilasciati. Rilasciare un padre con figli in Preliminary e' l'errore piu' comune.

Inputs: partId (required), profondita.

aras_copy_partB

Duplica una Part con le sue proprieta' di dominio e, se richiesto, la distinta di primo livello. Revisione, stato e dati di audit vengono rigenerati da Aras.

Inputs: nuovo (required), origine (required), nuovoNome, conDistinta.

aras_create_changeA

Crea una ECR o una ECN con i suoi elementi impattati. Il numero (ECR-100001...) lo genera Aras e non va fornito. Gli Affected Item sono creati inline dentro la relazione: e' l'unico modo che funziona.

Inputs: tipo (required), title (required), impattati, description, +2 more.

aras_create_documentC

Crea un Document (disegno, specifica, manuale) o un CAD e lo collega a una Part.

Inputs: item_number (required), name, tipo, perPart, +3 more.

aras_create_effectivity_modelB

Crea un modello di prodotto, usabile come valore della variabile Model dell'effettivita' (es. 'CP-40', 'CP-60').

Inputs: nome (required), etichetta.

aras_create_groupC

Crea un gruppo o ruolo (Identity), opzionalmente annidato in un gruppo padre. I ruoli servono anche per le transizioni di ciclo di vita, che richiedono un'identita'.

Inputs: nome (required), descrizione, gruppoPadre.

aras_create_itemB

Crea un nuovo elemento. Le proprieta' vengono validate contro lo schema reale prima dell'invio. Disabilitato se il server e' in sola lettura (ARAS_READONLY).

Inputs: itemType (required), properties (required), dryRun.

aras_create_item_typeA

Crea un nuovo ItemType con le sue proprieta'. ATTENZIONE: Aras documenta questa configurazione solo dall'interfaccia (Administration -> ItemTypes), perche' oltre alla riga servono default permission, TOC Access e identita' Can Add. Il tool tenta l'intera sequenza e riporta passo per passo cosa e' riuscito, verificando alla fine se l'ItemType accetta davvero istanze.

Inputs: nome (required), etichetta, proprieta, versionabile, +2 more.

aras_create_partB

Crea una Part con validazione dello schema E dei valori di lista, opzionalmente agganciandola subito a un assieme padre in distinta.

Inputs: item_number (required), cost, name, unit, +7 more.

aras_create_relationshipA

Crea una riga di relazione fra due elementi (es. 'Part Document', 'Part BOM'). Supporta anche gli elementi DIPENDENTI, che in Aras non possono essere creati prima: passa dependentProperties invece di relatedId e l'elemento viene creato inline dentro la relazione. E' l'unico modo di collegare un Affected Item a una ECR/ECN. Disabilitato in sola lettura.

Inputs: sourceId (required), relationshipType (required), relatedId, properties, +1 more.

aras_create_userA

Crea un utente e lo iscrive ai gruppi indicati. In Aras servono tre passi: lo User, l'Identity alias che Aras genera da se', e le righe Member verso i gruppi. Creare un secondo Alias fallisce ('cannot be greater than 1'), quindi l'appartenenza passa da Member.

Inputs: nome (required), login (required), cognome (required), email, +2 more.

aras_delegate_activityA

Delega un'attivita' di workflow a un'altra identita', invece di votarla. Usa aras_get_workflow per trovare attivita' e assegnazione.

Inputs: aIdentita (required), activityId (required), assignmentId (required), dryRun, +1 more.

aras_delete_itemA

Cancella un elemento. RICHIEDE conferma esplicita e il modo desiderato. purge elimina solo la generazione indicata, delete elimina TUTTE le generazioni. Chiama prima aras_plan_delete. Disabilitato in sola lettura.

Inputs: id (required), modo (required), conferma (required), itemType (required), +1 more.

aras_describe_item_typeA

Restituisce lo schema completo di un ItemType: tutte le proprieta' con tipo di dato e obbligatorieta', piu' le relazioni che partono da esso. Da usare PRIMA di scrivere query o di creare elementi, cosi' non devi indovinare i nomi delle proprieta'.

Inputs: itemType (required).

aras_describe_queryA

Struttura di una query salvata: da quali ItemType parte e quali parametri accetta. Da chiamare prima di eseguirla.

Inputs: nome (required).

aras_export_amlB

Esporta elementi in AML, il formato nativo di scambio di Aras: utile per travasare configurazioni fra istanze o per conservare uno stato.

Inputs: itemType (required), filtro, massimo, conRelazioni.

aras_get_amlA

Costruttori approvati (Approved Manufacturer List) per una Part: i Manufacturer Part omologati e il relativo costruttore. Serve per acquisti e per valutare second source.

Inputs: partId (required).

aras_get_bomA

Esplode la distinta base (BOM) di una Part in modo ricorsivo, restituendo l'albero dei componenti con quantita' e quantita' cumulate. E' il modo corretto di rispondere a domande tipo 'da cosa e' composto questo prodotto' o 'quanti pezzi di X servono in totale'.

Inputs: partId (required), depth.

aras_get_change_impactA

Elementi realmente impattati da una modifica (ECR o ECN), risolvendo gli Affected Item. In Aras la relazione non punta alla Part ma a un oggetto intermedio, quindi una query diretta restituirebbe solo id opachi.

Inputs: changeId (required), changeType (required).

aras_get_documentsB

Tutta la documentazione di una Part: Document (disegni, specifiche, manuali) e modelli CAD in una sola chiamata. In Aras sono due relazioni distinte ma rispondono alla stessa domanda.

Inputs: partId (required).

aras_get_effectivity_configB

Configurazione dell'effettivita': scope, variabili (Model, Unit, Date), modelli di prodotto definiti e quante espressioni sono impostate sulle righe di distinta.

Inputs: no named parameters.

aras_get_filesA

File fisici allegati a un Document o a un CAD, con nome, dimensione, MIME type e URL di download dal vault. NOTA: il caricamento di file NON e' possibile da un client esterno — Aras rifiuta la creazione di File senza contenuto vaultato ('File Item cannot be added'), e le vie documentate sono solo JavaScript di client o C# di server. I file vanno caricati dall'interfaccia Aras. ATTENZIONE: questo tool restituisce METADATI e un URL di download, non il contenuto: il server non scarica ne' legge il file. Per il contenuto serve seguire l'URL con un client autenticato.

Inputs: id (required), itemType (required).

aras_get_historyA

Traccia di audit di un elemento: chi ha fatto cosa e quando, attraverso tutte le revisioni. Aras lega lo storico al config_id tramite un History Container, non all'id della singola generazione, quindi copre l'intera vita dell'oggetto.

Inputs: id (required), itemType (required), limite.

aras_get_identity_membersA

Membri di un'identita' Aras (reparto, gruppo, ruolo): utenti e sotto-gruppi. Usa aras_query_items su 'Identity' per trovare l'id del reparto.

Inputs: identityId (required).

aras_get_inbasketB

Attivita' in carico a un'identita' (utente o gruppo): l'equivalente dell'InBasket di Aras. Trova prima l'id dell'identita' con aras_query_items su 'Identity'.

Inputs: identityId (required), soloAperte.

aras_get_itemC

Recupera un singolo elemento tramite il suo id Aras (GUID a 32 caratteri).

Inputs: id (required), itemType (required), select.

aras_get_lifecycle_mapA

Grafo completo di un ciclo di vita: tutti gli stati e tutte le transizioni con il ruolo richiesto da ciascuna. Serve per capire quali percorsi esistono e chi puo' percorrerli.

Inputs: nomeMappa (required).

aras_get_lifecycle_stateA

Stato attuale di un elemento, stati verso cui l'utente corrente PUO' promuoverlo, e — se non puo' — quale ruolo gli manca. In Aras ogni transizione ha un ruolo richiesto: se non lo possiedi, getItemNextStates torna vuoto e promoteItem fallisce con un messaggio che sembra dire 'transizione inesistente' mentre e' un problema di autorizzazione.

Inputs: id (required), itemType (required).

aras_get_list_valuesA

Valori AMMESSI dalle proprieta' di tipo lista di un ItemType (es. make_buy, unit, drawing_size). Da chiamare PRIMA di creare: un valore fuori lista supera la validazione dello schema — il nome della proprieta' esiste — ma viene rifiutato o ignorato da Aras.

Inputs: itemType (required).

aras_get_logsA

Log di Aras da due sorgenti: i file del server su disco (Innovator, OAuth, Client) e l'ItemType SystemEventLog a database. Su un'installazione nuova possono essere entrambe vuote: il logging su file va abilitato nella configurazione del server.

Inputs: righe, filtro, includiDatabase.

aras_get_my_identitiesA

Identita' possedute dall'utente configurato, incluse quelle ereditate per appartenenza a gruppi. Serve a capire perche' una promozione o una scrittura viene rifiutata.

Inputs: no named parameters.

aras_get_permission_detailB

Diritti concessi da un Permission alle varie identita': chi puo' leggere, modificare, cancellare e scoprire gli elementi che lo usano.

Inputs: nomePermesso (required).

aras_get_relationshipsA

Restituisce le righe di una relazione a partire da un elemento sorgente, es. i documenti allegati a una Part ('Part Document') o le modifiche che la riguardano ('Part Changes'). Usa aras_describe_item_type per scoprire quali relazioni esistono.

Inputs: sourceId (required), relationshipType (required), top.

aras_get_revisionsA

Storia completa delle revisioni di un elemento versionabile: tutte le generazioni con revisione, stato, chi la tiene bloccata e quale e' la corrente. In Aras le generazioni sono righe distinte con id diversi che condividono config_id, e una query normale restituisce solo quella corrente: qui le vedi tutte.

Inputs: id (required), itemType (required).

aras_get_type_permissionsA

Quali identita' possono aggiungere, modificare o cancellare istanze di un ItemType, e se l'utente corrente ne fa parte. E' la risposta a 'perche' non riesco a creare questo': Aras restituisce i dinieghi di permesso come errore 500 generico, non come 403.

Inputs: itemType (required).

aras_get_workflowA

Processo di workflow di un elemento (ECR, ECN, Part...) con tutte le attivita', il loro stato e a chi sono assegnate. E' il modo di rispondere a 'a che punto e' questa modifica' e 'chi la sta bloccando'. Aras istanzia il processo automaticamente alla creazione.

Inputs: itemId (required), conAttivita.

aras_grant_permissionB

Concede o modifica i diritti di un'identita' su un Permission. Nota: senza 'scoprire' (can_discover) l'elemento non compare nemmeno nelle ricerche, quindi viene concesso automaticamente insieme alla lettura.

Inputs: identita (required), nomePermesso (required), leggere, scoprire, +2 more.

aras_how_toA

CONSULTA PRIMA DI TENTARE. Risponde a 'come si fa X su Aras da un client esterno' e 'perche' questo errore', attingendo a due fonti: il sapere verificato sul campo — cio' che funziona davvero da fuori, con il messaggio esatto che Aras restituisce — e l'istanza stessa, cioe' il catalogo UserMessage e i Method installati. NON usa la documentazione ufficiale Aras: quella descrive JavaScript di client e C# di server, cioe' proprio le vie che da un client esterno non funzionano, e seguirla porta con sicurezza su strade cieche. Chiamalo quando una chiamata fallisce in modo incomprensibile, o prima di tentare qualcosa di insolito.

Inputs: domanda (required), conIstanza.

aras_import_amlA

Applica un pacchetto AML: l'inverso di aras_export_aml. dryRun (default) analizza il contenuto e segnala quante azioni distruttive contiene prima di eseguirlo.

Inputs: contenuto (required), dryRun.

aras_list_dashboardsA

Cruscotti configurati in Aras, con i tipi di contenuto che ospitano. Su un'istanza standard ne esistono gia' diversi (Engineering Efficiency, Time To Manufacturing...).

Inputs: no named parameters.

aras_list_item_typesA

Elenca gli ItemType disponibili in Aras. L'istanza ne ha centinaia, quindi filtra con 'search' (ricerca tollerante su nome ed etichetta) oppure con 'kind'. Usalo PRIMA di interrogare dati, per scoprire il nome esatto del tipo.

Inputs: kind, limit, search.

aras_list_methodsA

Metodi server definiti in Aras, ricercabili per nome. Utili per capire quale logica personalizzata esiste, e invocabili con aras_aml_request.

Inputs: cerca, limite.

aras_list_metricsB

Metriche e indicatori definiti in Aras (es. 'ECR Cycle Time', 'Cost vs. Goal', 'CAD Model Release Time'). Filtra per nome se ne cerchi una in particolare.

Inputs: filtro.

aras_list_queriesA

Query salvate del Query Builder. Sono interrogazioni preconfezionate che Aras usa internamente e che puoi riusare, es. 'PE_BomStructure' o 'Aras.Resolution.LatestReleased'.

Inputs: no named parameters.

aras_list_reportsA

Report configurati in Aras, con gli ItemType a cui sono agganciati. Su un'istanza standard ce ne sono gia' diversi: BOM Costing Report, BOM Quantity Rollup Report, Approved Vendors Report.

Inputs: no named parameters.

aras_list_saved_searchesC

Ricerche salvate dagli utenti, con i criteri che usano.

Inputs: no named parameters.

aras_list_sequencesB

Sequenze di numerazione automatica configurate (ECR, ECN, Part...) con il prossimo valore che verrebbe assegnato.

Inputs: no named parameters.

aras_lookup_errorA

Cerca nel catalogo dei messaggi di Aras (UserMessage) per capire un errore opaco. Contiene i template di TUTTI i messaggi del server con i segnaposto {0}: cercando parte del testo ricevuto si risale al codice e al significato.

Inputs: testo (required), limite.

aras_manage_bom_lineB

Aggiunge, aggiorna o rimuove una riga di distinta base fra due Part, per item_number.

Inputs: azione (required), assieme (required), componente (required), quantita, +1 more.

aras_manage_membershipA

Aggiunge o rimuove un'identita' da un gruppo. E' il modo di concedere un ruolo — per esempio dare 'Aras PLM' a un utente perche' possa rilasciare le Part.

Inputs: azione (required), gruppo (required), membro (required).

aras_new_revisionA

Crea una nuova generazione (revisione) di un elemento versionabile, eseguendo la sequenza lock -> version -> unlock richiesta da Aras. Disabilitato in sola lettura.

Inputs: id (required), itemType (required).

aras_pingA

Verifica la connessione ad Aras Innovator e restituisce database, utente e numero di ItemType. Da usare per primo se qualcosa non funziona.

Inputs: no named parameters.

aras_plan_deleteA

ANALIZZA cosa comporterebbe cancellare un elemento, SENZA cancellarlo: quante generazioni sparirebbero, se e' rilasciato, se e' bloccato, e in quali relazioni e' ancora referenziato. Da chiamare SEMPRE prima di cancellare. Distingue purge (una generazione) da delete (tutte).

Inputs: id (required), itemType (required), modo, relazioni.

aras_promote_itemA

Promuove un elemento a un nuovo stato del ciclo di vita (es. Part da Preliminary a Released). Passa da AML perche' OData non espone le transizioni. Disabilitato in sola lettura.

Inputs: id (required), toState (required), itemType (required).

aras_query_itemsA

Interroga elementi di un ItemType con sintassi OData. Se non sei sicuro dei nomi delle proprieta', chiama prima aras_describe_item_type.

Inputs: itemType (required), top, skip, filter, +2 more.

aras_read_fileA

LEGGE IL CONTENUTO di un file del vault, non solo i metadati. Scarica dalla media resource OData (File('')/$value) con ripiego sull'endpoint del vault. Restituisce il testo per i formati testuali, il testo estratto per i PDF che ne contengono, e l'immagine stessa per PNG/JPEG/GIF/WebP, cosi' che possa essere guardata. Per un PDF scansionato dice che servirebbe un OCR invece di restituire il vuoto. Usa aras_get_files per trovare l'id.

Inputs: fileId (required), maxCaratteri.

aras_release_itemA

Rilascia un elemento portandolo allo stato target, percorrendo il grafo delle transizioni passo per passo. Con dryRun mostra il percorso e i ruoli richiesti senza eseguire nulla. NOTA: su un ItemType versionabile la promozione crea una nuova generazione, quindi l'id cambia.

Inputs: id (required), itemType (required), dryRun, statoTarget.

aras_replace_componentA

Sostituisce un componente con un altro in TUTTE le distinte che lo usano — obsolescenza, second source. dryRun (default) mostra prima quali assiemi verrebbero toccati.

Inputs: nuovo (required), vecchio (required), dryRun.

aras_run_queryA

Tenta di eseguire una query salvata del Query Builder. LIMITE NOTO: l'esecuzione non e' raggiungibile da un client esterno — nessuna action AML documentata la esegue. Il tool restituisce allora la STRUTTURA della query e indica con quali strumenti ottenere gli stessi dati (aras_query_items, aras_get_bom, aras_where_used).

Inputs: nome (required), maxRighe, parametri.

aras_run_reportA

Esegue un report e restituisce i DATI (la trasformazione XSL serve solo alla resa grafica nel client). Molti report sono parametrici: passa contestoId con l'id dell'elemento su cui eseguirlo.

Inputs: nome (required), massimo, contestoId.

aras_update_itemA

Aggiorna le proprieta' di un elemento esistente. Validato contro lo schema. ATTENZIONE: su un ItemType versionabile (Part, Document, CAD) Aras crea una NUOVA GENERAZIONE a ogni update — anche solo per correggere una descrizione. Verificalo con aras_get_revisions prima e dopo se lo storico revisioni ti interessa. Disabilitato se il server e' in sola lettura.

Inputs: id (required), itemType (required), properties (required), dryRun.

aras_vote_activityA

Completa un'attivita' di workflow scegliendo una via di uscita (es. 'Approve', 'Reject'). Passa da AML EvaluateActivity. Usa aras_get_workflow per trovare attivita' e assegnazione. Disabilitato in sola lettura.

Inputs: path (required), activityId (required), assignmentId (required), commenti.

aras_where_usedA

Where-used: risale la distinta e trova TUTTI gli assiemi che usano un componente, a qualunque livello. E' la domanda da fare prima di modificare o dismettere un pezzo ('se cambio questa vite, cosa impatto?'). E' l'inverso di aras_get_bom.

Inputs: partId (required), depth.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 71 tools

    Disambiguation4/5

    Most tools are clearly scoped to a specific resource and action, and the descriptions are rich enough to separate queries, lifecycle, workflow, BOM, and admin operations. However, a few pairs are genuinely confusable—aras_promote_item vs aras_release_item and aras_create_item vs aras_create_part/aras_create_document—so it is not a perfect 5.

    Naming Consistency4/5

    The aras_ prefix plus a verb_noun structure is used consistently across nearly all tools, with clear clusters like get_*, list_*, create_*, and manage_*. A handful of nonstandard names such as aras_how_to, aras_where_used, aras_bulk_update, and bare verbs like aras_search or aras_ping keep it from being fully consistent.

    Tool Count1/5

    71 tools is far beyond the 50+ extreme threshold and dramatically more than the recommended agent-facing surface. Even for a broad PLM domain, this many entry points creates a heavy selection burden, and many niche administrative tools could be consolidated or exposed behind a smaller number of parameterized tools.

    Completeness4/5

    The surface is exceptionally comprehensive: item CRUD, revisions, lifecycle, workflow, BOM, change management, documents/files, permissions, admin, reporting, and AML are all covered. Minor gaps remain, such as no direct file upload path, no generic relationship delete/update tool, and aras_run_query being a known-limited fallback, but these are documented and usually workaroundable.

    Maintenance

    ActivityStale
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Integrates 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.
      11
      4
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables AI assistants to interact with IBM Engineering Lifecycle Management (ELM), including DOORS Next Generation, EWM, and ETM, for managing requirements, work items, tests, and project builds through natural language.
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      Integrates with Teamcenter PLM using its REST API, enabling search, create, update, and query of Teamcenter items through natural language.
      3
      ISC