aras-plm-mcp
This server is an MCP bridge to Aras Innovator PLM that introspects the live schema and exposes 71 tools for discovering, reading, writing, and administering PLM data via OData and AML.
Discover and understand the schema: ping, list item types (typo-tolerant search), describe full schema with properties/relationships, cross-type search, get list values, and ask
aras_how_tofor verified external-client techniques and error explanations.Read and navigate data: query items with OData filters, fetch single items by id, get relationships, explode BOM trees recursively with cumulative quantities, where-used, all documents/CAD, file metadata and readable content (text/PDF/images), audit history, all revisions, identities and memberships, and export AML.
Create, update, and delete with safety guards: create items/documents/parts, update (with read-back to detect silently ignored properties), create relationships (including dependent items), manage BOM lines, copy parts, add manufacturer parts, plan deletion before deleting, bulk update and replace components with dry-run by default.
Manage lifecycles and workflows: get lifecycle maps/states/transitions with required roles, release/promote items, advance change orders (ECRs/ECNs), vote or delegate workflow activities, check in-basket.
Handle changes: create ECR/ECN with impacted items (inline), add affected items, get change impact resolved correctly.
Administer users and permissions: create users/groups, manage memberships, inspect and grant permissions, get type-level permission details, decode permission denials.
Leverage analytics and reporting: list dashboards, metrics, saved queries (with execution limits), effectivity configuration, reports (run them to get data), sequences, methods.
Extend and configure: create custom ItemTypes and add properties, import/export AML, invoke raw AML for gaps.
Diagnose: retrieve server logs (file and database) and look up opaque error messages in the UserMessage catalogue.
Respects operational constraints: read-only mode by default, dry-run for destructive/bulk operations, refuses file uploads and other known external-client limitations with clear alternatives.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aras-plm-mcp show me the BOM for part P-100"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 relationshipsRelated 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 — |
|
"Release this part." | Lifecycle transitions are not exposed as data |
|
"Advance this change order." | — |
|
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 |
| Connection, database, user, ItemType count |
| List/search ItemTypes, tolerant of typos |
| Typed properties, mandatory flags, outgoing relationships |
| Cross-type search over several ItemTypes at once |
| Allowed values for list-backed properties |
| 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:
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.The instance itself — its
UserMessagecatalogue and installedMethods. 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 buildCopy .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 removedtest-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: |
Effectivity expressions on a BOM |
|
Executing Query Builder queries | No AML action runs a saved |
JavaScript-based reports |
|
Node coordinates on a workflow map |
|
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
From nothing to your first answer out of Aras | |
How it is put together, and the trap that shapes all of it | |
Ten complete business flows, as questions | |
The suites, and how to run them without hurting anything | |
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 toolsaras_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_searchA
Ricerca trasversale su piu' ItemType contemporaneamente: cerca un termine nei campi testuali (codice, nome, descrizione, titolo) di Part, Document, CAD, ECR, ECN, fornitori. Da usare quando NON sai in che tipo si trovi cio' che cerchi — Aras non ha una ricerca globale.
Inputs: term (required), perType, itemTypes.
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
Scored across 71 tools
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.
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.
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.
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
Related MCP Connectors
List datasets, schemas, run APL queries, and use prompts for exploration, anomalies, and monitoring.
Query Allen-Bradley and Siemens PLC projects, live tag values, and analyses in plain English.
Design and revise PCBs from plain language, track jobs, and retrieve design artifacts.
Query, explore, and manage your databases through natural conversation.
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
- 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
- AlicenseNot gradedqualityAmaintenanceEnables 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
- AlicenseNot gradedqualityFmaintenanceIntegrates with Teamcenter PLM using its REST API, enabling search, create, update, and query of Teamcenter items through natural language.3ISC