aras-plm-mcp
Consultar antes de intentar
aras_how_to responde "cómo hago X desde un cliente externo" y "por qué este error" antes de que el modelo comience a adivinar.
Deliberadamente no indexa la documentación oficial de Aras. Este corpus describe el JavaScript del lado del cliente y el código C# del lado del servidor — precisamente las rutas que no funcionan desde el exterior —, por lo que señalizaría con confianza hacia callejones sin salida. La respuesta del Manual del programador para adjuntar un archivo es aras.vault.selectFile, que solo existe dentro del cliente de Arasexists.
Se basa en dos fuentes que son realmente confiables:
Conocimiento verificado contra una instancia real, con el mensaje de error que Aras devuelve.
<Complete>1</Complete>,<ApplyItem>aplicando solo el primer elemento de un lote, los ItemTypes dependientes teniendo que ser creados dentro de la relación — ninguno deesto está en ningún manual.La instancia en sí — su catálogo
UserMessageyMethods instalados. Esa es la verdad de esaa instalación en lugar de una genérica.
Y lo dice cuando no sabe, en lugar de devolver la coincidencia más cercana. Una herramienta que responde a todo es tan inútil como una que no responde a nada.
Related MCP server: kicad-mcp
Decisiones de diseño que vale la pena conocer
Solo lectura de forma predeterminada. Las escrituras en un PLM están versionadas y auditadas, por lo que se encuentran activadas a propósito: ARAS_READONLY=false. Cada una de las 21 herramientas de escritura con código se rechaza cortésmente mientras que true.
dryRun predeterminado a activado para operaciones masivas. aras_replace_component y aras_bulk_update te muestran las filas flexibles y no cambian nada hasta que lo pidas.
La eliminación se planifica antes de llevarse a cabo. aras_plan_delete informa qué hace referencia al elemento y se negar cuando algo lo hace. Cuando no puede verificar una relación, devuelve -1 en lugar de pretender que la relación está vacía— una comprobación honesta es mejor que otra que te tranquilice de forma gratuita.
Las denegaciones de datos se descifran. Aras devuelve un HTTP 500 se para un permiso denegado, no un 403. aras_get_type_permissions te dice qué identidad falta; aras_lookup_error busca el mensaje en el catálogo UserMessage.
Las referencias de elementos solo llegan como anotaciones, y solo con $select. Consultar Part BOM con $select produce related_id@aras.id y related_id@aras.keyed_name; sin él, no viene nada y las filas parecen metadatos opacos. Esto es codé una vez en readItemRef() (src/aras/odata.ts) para que ningún llamador tenga que recordarlo. También es la forma más sencilla de construir un navegador de BOM que devuelve silenciosamente un árbol vacío.
Instalación
npm install
npm run buildCopia .env.example a .env y rellénalo. Para Claude Code, agrégalo a .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"
}
}
}
}La autenticación es OAuth 2.0 con contraseña de propietario de recursos contra el cliente IOMApp, ámbito de Innovator.
Requiere Node 20+ y una instancia de Aras Innovator con la que tengas permitido hablar.
Cinco pruebas
Cada suite corre contra una instancia viva, escribe solo en elementos con prefijo ZZ-, y los elimina después. El último flujo asegura que los datos de producción no hayan sido tocados.
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 es el interesante. No prueba herramientas—seeciona preguntas, que es como alguien en una empresa se las preguntaría:
"Un diseñador se ha unido: crea su cuenta y ponla en el departamento correcto." "Encodifica un nuevo componente, llévalo por la aprobación, y publícalo." "Reemplaza un componente en todas partes, pero antes dime dónde caería." "Prueba de eliminar un componente que se usa en un BOM: debe negarse."
Lo que no funciona, y por qué
Cuatro cosas son inaccesibles desde un cliente externo. Esto no es un descuido y cada herramienta afectada lo dice y señala la alternativa en lugar de fallar de manera opaca.
Evidencia | |
Subir archivos al vault | Seis intentos distintas, todas rechazadas: |
Expresiones de efecto en un BOM |
|
Ejecutar consultas de Query Builder | No hay ninguna acción AML que ejecute un |
Informes basados en JavaScripts |
|
La lectura, por otro lado, funciona y está verificada. aras_read_file descarga el contenido a través del recurso de media OData (File('<id>')/$value), siempre recurriendo al punto de enlace del vault, y entrega algo legible: texto para formatos de texto, texto extraído para PDF que contengan alguno, y la imagen en sí misma para PNG/JPEG/GIF/WebP para que se pueda ver de verdad. Un dibujo escaneado dice que necesitaría OCR en lugar de devolver un string vacío.
docs/field-notes.md es el registro de campo: cada defecto que la prueba en vivo sacó a la luz, y la exacta error que prueba cada límite.
Documentación
Desde cero a tu primer respuesta de Aras | |
Cómo está compuesta, y la trampa que da forma a todo | |
Diez flujos comerciales completos, como preguntas | |
Las suites y cómo ejecutarlas sin dañar nada | |
Lo que las pruebas en vivo transportan: defectos encontrados y cuatro cosas que no funcionan |
docs/it/ contiene el material original italiano: un script de demostración de 39 bloques y el registro de prueba crudo.
Cómo contribuir# aras-plm-mcp
Un servidor MCP para Aras Innovator PLM que conoce el esquema en lugar de adivinarlo.
71 herramientas sobre OData y AML. Probado contra una instancia real de Aras Innovator 2025 (14.35.0): 260 aserciones en diez suites, más un script de demostración de 39 pasos ejecutado de principio a fin. Cada una de las 71 herramientas es ejercitada por al menos una suite, y cada herramienta de escritura es ejercitada realizando una escritura real.
El problema
La API OData de Aras Innovator es dinámica. El documento de servicio responde 501 Not Implemented, y una instancia estándar expone 484 ItemTypes cuyos nombres y propiedades dependen de cómo el administrador configuró el modelo de datos. No hay un catálogo estático que leer.
Un envoltorio HTTP simple — get_items(itemtype, filter) — traslada ese problema al modelo. Tiene que adivinar que el tipo es Part y no Parts, que la lista de materiales es Part BOM y no BOM, que el campo de cantidad es quantity y no qty. Cada solución equivocada es una ida y vuelta y un error opaco.
Este servidor inspecciona el esquema y lo devuelve.
aras_describe_item_type itemType: "Part"
→ 41 typed properties, real mandatory flags, outgoing relationshipsLo que OData solo no puede ver
Hay tres cosas en Aras que son invisibles para OData, y cada una es una pregunta que la gente realmente hace. Este servidor las alcanza a través de AML:
Pregunta | Por qué falla OData | Cómo se responde |
"Muéstrame las revisiones anteriores." | OData devuelve solo la generación actual — |
|
"Libera esta pieza." | Las transiciones del ciclo de vida no se exponen como datos |
|
"Avanza esta orden de cambio." | — |
|
La última se necesitó un registro del servidor para encontrarla. Aras responde An internal error has occured; el registro dice Workflow: EvaluateActivity: Complete value not found.
Herramientas
Herramienta | Qué hace |
| Conexión, base de datos, usuario, recuento de ItemTypes |
| Listar/buscar ItemTypes, tolerante a errores tipográficos |
| Atributos tipados, indicadores obligatorios, relaciones salientes |
| Búsqueda en multitud de tipos* sobre varios ItemTypes a la vez |
| Valores permitidos para atributos basados en listas |
| Consultar antes de intentar: qué funciona desde fuera y por qué un error significa lo que significa |
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 (explosión recursiva con cantidades acumuladas y detección de ciclos por rama), 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
Mapas de ciclo de vida y estados con el rol que requiere cada transición; usuarios, grupos, pertenencias y permisos; creando ItemTypes con instancias utilizables; tableros, métricas, informes, consultas guardadas, secuencias, procesos; registros del servidor de los archivos Serilog y del ItemType SystemEventLog.
Ejecuta aras_ping primero: te dice lo que tienes conectado.
Consultar antes de intentar
aras_how_to responde "¿cómo hago X desde un cliente externo?" y "por qué ocurre este error" antes de que el modelo empiece a especular.
Deliberadamente no indexa la documentación oficial de Aras. Ese corpus describe JavaScript del lado del cliente y C# del lado del servidor: precisamente las rutas que no funcionan desde fuera, por lo que apuntaría con confianza a callejones roñosos. La respuesta manual del Programador para adjuntar un archivo es aras.vault.selectFile, que solo existe dentro del cliente de Aras.
Se basa en dos fuentes que realmente son confiables:
Conocimiento verificado contra una instancia real, con el mensaje exacto que Aras devuelve.
<Complete>1</Complete>,<ApplyItem>aplicando solo el primer elemento de un lote, ItemType dependientes que deben crearse dentro de la relación — nada de esto está en ningún manual.La propia instancia — su catálogo
UserMessagey losMethodsinstalados. Eso es la verdad de esa instalación, no una verdad genérica.
Y dice cuando no lo sabe, en lugar de devolver la coincidencia más cercana. Una herramienta a que responde todo es tan inútil como una que no responde nada.
Decisiones de diseño que vale la pena conocer
Solo lectura por defecto. Los cambios en un PLM se versionan y auditan, así que se habilitan a propósito: ARAS_READONLY=false. Cada una de las 21 herramientas de escritura se niega amablemente cuando es true.
dryRun y se activa por defecto para operaciones masivas. aras_replace_component y aras_bulk_update te muestran las filas de horas afectadas y no cambian nada hasta que se lo pides.
La eliminación se planifica antes de realizarse. aras_plan_delete informa qué elementos hacen referencia al elemento y se niega si algo lo hace. Cuando no podía verificar una relación devuelve -1 en lugar de fingir que la relación está vacía: una comprobación honesta es mejor que otra que te tranquilice gratis.
Las denegaciones de perros se descifran. Aras devuelve un HTTP 500 genérico para un permiso denegado, no un 403. aras_get_type_permissions te dice qué identity falta; aras_lookup_error busca en el mensaje el catálogo UserMessage.
Las referencias a objetos sólo llegan como anotaciones, y sólo con $select Al consultar Factory con $select obtienes related_id@aras.id y related_id@aras.keyed_name; sin él, no vuelve nada. Esto se codifica una serie en readItemRef() (src/aras/odata.ts) para que ningún llamador tenga que acordarse. También es la manera más rápida de crear un historiador de BOM que devuelve un árbol vacío en silencio.
Instalación
npm install
npm run buildCopie .env.example a .env y rellénelo. Para Claude Code, añadir a .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"
}
}
}
}La autenticación es OAuth 2.0 con credenciales de propietario del recurso contra el cliente IOMApp, ámbito Innovator.
Requiere Node 20+ y una instancia de Aras Innovator a la que te permitan habitar.
Pruebas y verificación
Cada suite corre contra una instancia real, escribe solo en elementos prefijos ZZ- y los elimina después. El último escenarioo afirma que los datos productivos quedaron intactos.
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 removedLa -flussi.mjs es el interesante. No prueba herramientas; prueba preguntas, como las haría alguien en una organización con su compañía:
"Un diseñador ha llegado: cread su la cuenta y colóquelo en el departamento correcto." "Codifica un nuevo componente, lo lleva por la aprobación y ahora es" "Reemplaza una componente en todas partes, pero primero dime dónde caería." "Intentelo eliminar un componente que se usa en un BOM: debe negarse."
Qu lo que no funciona, y por qué
Cuatro cosas son inalcanzables desde un cliente externo. Esto no es un e buscado**, y cada herramienta afectada lo dice y señala la alternativa en lugar de fallar de forma opaca**.
La evidencia | Por qué |
Subir archivos al vaulto | Seis intentos distintos, todos rechazados: |
Expresiones de effetividad en un BOM |
|
Ejecutar consultas del Constructor | No hay acción AML que tenga una |
Informes basados en JavaScript |
|
Leer, por otro lado, funciona y está verificado. aras_read_file descarga contenido a través del recurso de media OData (File('develop')/$value) y tiene una fallback al vault. La, ofrece algo legible: texto para formatos de texto, texto extraído para PDF que lo contienen, y la imagen propia para PNG/JPEG/GIF/WebP para que realmente se pueda mirar. Un dibujo escaneado avisa de que necesita OCR en lugar de devolver una cadena vacía.
docs/field-notes.md es el registro de datos: cada defecto que se observó las pruebas en vivo, y el error exacto que establece cada límite.
Documentación
De cero a tu primer respuesta desde Aras | |
Cómo está formado, mediante la trampa que lo condiciona todo | |
Diez flujos de trabajo globales, en forma de preguntas | |
Pruebas (docs/testing.md) | Suits, y conocéase cómo ejecutarlas sin dañar nadaelate. |
La actividad de las pruebas en vivo: fallos encontrados, y cuatro cosas que no funcionan |
docs/it/ guarda el material editorial original en italiano: un scriptdemo de 39 bloques y el registro fuente de pruebas en bruto.
Contribuciones
Traduce solo el texto de la pregunta, respetando la táctica y el contenido y evitar extra poner éip que no estaba. En español, no se traduce ItemType, ni los nombres de herramientas como aras_get_item, etc.204
Ser aclamólico y preserva los format de las tablas.
En "El problema" párrafo, hay una variación: "A thin HTTP wrapper" (un simple envoltorio HTTP) no debe convertirse en "envoltorio HTTP simple" sino "un simple/wrapper", pero luego también se verá la palabra "wrapper" en otras partes. Común a "HTTP wrapper" [since it's an obtto para una estructura] se hace con "envoltura" o "wrapper". Fue en el original: "A thin HTTP wrapper", "This is an obtto" se tradujo como "esto es una envoltura"? En el original se usa "wrapper" doble: "a thin HTTP wrapper — get_items". Vamos a buscar. En caso de duda, la traducción más natural para "wrapper" en informática: " wrapper". Es decir, "Una envoltura HTTP simple". La persona párrafo anterior " A thin HTTP wrapper" vs "This is an simple wrapper". Prefiere "wrapper". Vamos a alinear.
En todos los términos: "MCP server" se puede "servidor MCP"; "OData" es nombre propio; "AML" es acrónimo_ID. "Server" se traduce a "servidor".
Recapitula los retos y las garantías finales.# aras-plm-mcp
Un servidor MCP para Aras Innovator PLM que conoce el esquema en lugar de adivinarlo.
71 herramientas sobre OData y AML. Probado contra una instancia real de Aras Innovator 2025 (14.35.0): 260 aserciones en diez suites, más un script de demostración de 39 pasos ejecutado de principio a fin. Cada una de las 71 herramientas queda ejercitada por al menos una suite, y cada herramienta de escritura se ejercita realizando una escritura real.
El problema
La API OData de Aras Innovator es dinámica. El documento de servicio responde 501 Not Implemented, y una instancia estándar expone 484 ItemTypes cuyos nombres y propiedades dependen de cómo el administrador configuró el modelo de datos. No existe un catálogo estático que consultar.
Un envoltorio HTTP simple — get_items(itemtype, filter) — traslada ese solución al modelo. Tiene que adivinar que el tipo es Part y no service y no Parts, que la lista de materiales es Part BOM y no BOM, que el campo de cantidad es quantity y no qty. Cada conjetura errónea es un viaje de ida y vuelta y un error opaco.
Este servidor hace introspección del >>.
aras_describe_item_type itemType: "Part"
→ 41 typed properties, real mandatory flags, outgoing relationshipsLo que OData sola no puede ver
Tres cosas hayen Aras son invisibles para OData, y cada una es una pregunta que la gente suele hacer. Este servidor llega a ellas mediante AML:
Pregunta | Fallo de OData | Cómo se responde |
"Muéstrame las revisiones anteriores." | OData devuelve solo la generación actual — |
|
"Libere su pieza." | Las transiciones de ciclo de vida no se presentan como datos y |
|
"Avance esta orden de cambio." | — |
|
Ella última se encontró con unological de servidor. Aras responde An internal error has occurred; el registro dice Flow: EvaluateActivity: Complete value not found.
Herramientas
| Herramienta | Qué |
| --- |
| | aras_ping | Conexión, database, usuario, número de ItemTypes |
| aras_list_item_types | List/yous eras de ItemTypes, tolerante a errortejas |
| description of ItemTypes | Proporciones de TProperties, flags obligatorios, Calles relaciones | | aras_search| **Búsqueda entre types** sobre varios ItemTypes a la vez | |aras_get_list_values| Valores de características permitidos para los listados | |aras_how_to` | Consulte antes de intentar: que funciona desde el outside, y por qué un perror significa lo que significa |
ras_query_items, aras_get_item, aras_get_relationships, aras_get_ bom, aras_where_used, aras_get_documents, aras_get_aml, aras_files, aras_read_file, aras_history, aras_get_revisions, each_get_my_identities, aras_get_memberships, aras_export_aml
get_bom (expl plus recursion with cumulative m9 quantities and cycle detection per branch), manage_bom, replace_component, copy_part, add_manufacturer_part, check_release_readiness, check_effective
aras_create_change, aras_add_affected_item, aras_impact, aras_get_workflow, aras_advance_change, aras_vote_activity, aras_delegate
Mapas del ciclo de vida y estados con elkn rol que cada camino exige; usuarios, grupos, pertenencias está olvidada; creación de ItemTypes con instancia; dashboards, métricas, informes, consultas guardadas, secuencias, métodos, logs del servidor que van de los archivos *_ _de al tipo.
Ejecuta aras_ping de prisma, te indica con qué está conect└.
Consulte antes de intentarlo
aras_how_to responde a "cómo hago X desde un cliente externo" y "por qué ese error" antes de que el modelo empiece a adivinar.
Eso de que no: no índice documentación oficial de Aras. Ese corpus define JS y C# del servidor —las rutas que no se usan demás... para que pudiera indicar sin ojos caminos muertos. La soga que el manual de programadores recomienda para una adjunta: aras.vault.selectFile no existe fuera del cliente Aras.
De esas dos fuentes que son realmente confiables:
Conocimiento comprobado contra una instancia viva, con el mensaje exacto que Aras regresa.
Enable>only, por ejemplo.<Applyar>aplica solo el primer elemento de un pedido, ya que t los de Tipos de datos dependientes tiene que crearse dentro de la relación — no hay ecuación para aclarar nada en novicio.La instancia misma: su catálogo
UserMessagey susMethodinstalados. Es el indeed ese concreto instalado en alguno.
Y a fuerza de qué no: no hay una respuesta si se da cuenta, en vez de buscar la que más "se le parece". Eres como no tener nada.
Principios de diseño notables
Lectura por defecto. Escribir en un PLM se deposita por versiones and audit, así que se entra una — no por ón sino jarr para each of the 21. write tools the polite false ja while ARAS_READONLY= true.
El dryRun se activa por defecto para operaciones de lát.COMM y browser`` muestran resaltos de asen no cambiar nada hasta que Atendra``.
Eliminación es planificada do s plan_delete report sobre los que un informa y se niega si algo. Hacen qu' un mal inform que consueldade "empty" es vacu -1 en vez del "empty" — checks text do not do fake*
Denials are translated. Aras perhaps devuelve un HTTP 500 redstatus, no un 403. aras_get_permissions le paper, cuál es unknown, comoas``,will, display:
Item, references come only as body + $charges, no matter. Pregunta Pasoa <B>data> with $express: that's arastructure * one more compact. We code this one in readItemRef() (src/aras/odata.ts), *Whatever` always there to note. It also the simplest WAAY to "build a BOM explorer " that breaks *something, missing trees to do".
[.
Termina de redactar. No se desvía de una sola traducción directa y pare. Próximamente: "El último flojo afirma que la producción data no fue tocada". No uses "data" para traducir "data", use " datos". "last flow asserts en": "El último curso" o "volumen". En Testing párrafo: "The last flow asserts that production data was untouched." "En el english, "data" es plural pero los hisp hablantes usó 'datos'. Traduccion: "El último flujo confirma que los datos de producción no fueron tocados." El flujo de pruebas (data flow, workflow). "Flujo" sí.
"production data" = "datos de producción".
"test-flussi.mjs" se queda. "es el interesante", "No prueba herramientas — prueba preguntas, de la manera en que y un empleado lo preguntaría". "en una empresa" / "en una empresa".
Citas del original: "A designer has joined: create their account and put them in the right department." Hms.
En dar el resultado final. Debe tener exactamente los mismos elementos y el mismo orden. Cuidado con palabras "test-flussi.mjs" — el código es nombre archivo en violencia. "eso que haga la pregunta", me escribe.
En la parte "¿Qué no funciona, y por qué", la tabla tiene tres columnas. En el titular. "El comercio evidencia", "datos". El nombre de la prueba: "varios intentos distintos, todos rechazados:". El otro.
Conclusiones: "una versión de escaneada dice que se necesita OCR en lugar de devolver un vacío." Traducción. "Un dibujo escaneado indica que necesita OCR en lugar de devolver una string vacía". Uso de "string" es válido pues se mencionó placeholder? no: "string" no es token. Traduce "cadear".
En documentación, keep tudo.
El epígrafe "Contribuciones" o "What contributes", en la fuente aparece "## Contributing" in the tail. We do "## Contribuir". Puede ser "Sobre" pero "Contributing" es "contribuciones". En forma de participio: "Contribuciones".
Además, "Actuando", "Alianza".
Comprobemos la renuncia: "versión" y "sección" en docs. La URL "docs/it" con enlace "docs/it". En mi texto, "docs/it/" like ["docs/it/"] Per expansion. Original: "docs/it/ holds" — "the it" está línea. Form: "docs/it/ alberga".
El rótulo: "La suite de pruebas" en el nivel original "Testing". En apariciones: "Each suite". Traduje "suite" como palabra distinta.
Produce final. Te la extraigo.
Cubrir los huecos: cierro el <summary> y <details> en la línea.# aras-plm-mcp
Un servidor MCP para Aras Innovator PLM que conoce el esquema en lugar de adivinarlo.
71 herramientas sobre OData y AML. Probado contra una instancia real de Aras Innovator 2025 (14.35.0): 260 aserciones en diez suites, más un script de demostración de 39 pasos ejecutado de principio a fin. Cada una de las 71 herramientas queda ejercitada por al menos una suite, y cada herramienta de escritura se ejercita realizando una escritura real.
El problema
La API OData de Aras Innovator es dinámica. El documento de servicio responde 501 Not Implemented, y una instancia estándar expone 484 ItemTypes cuyos nombres y propiedades dependen del modo en que el administrador configuró el modelo de datos. No existe un catálogo estático que consultar.
Un envoltorio HTTP ligero — get_items(itemtype, filter) — traslada ese problema al modelo. Tiene que adivinar que el tipo es Part y no Parts, que la lista de materiales es Part BOM y no BOM, que el campo de cantidad es quantity y no qty. Cada suposición errónea es un viaje de ida y vuelta y un error opaco.
Este servidor inspecciona el esquema y lo devuelve.
aras_describe_item_type itemType: "Part"
→ 41 typed properties, real mandatory flags, outgoing relationshipsLo que OData por sí sola no puede ver
Hay tres cosas en Aras invisibles a OData, y cada una es una pregunta que la gente realiza. Este servidor las alcanza mediante AML:
Pregunta | Por qué falla OData | Cómo se responde |
"Muéstrame las revisiones anteriores." | OData devuelve únicamente la generación anterior — |
|
"Libera esta parte." | Las transiciones de ciclo de vida no se exponen como datos |
|
"Avanza esta orden de cambio" | — |
|
Esta última necesitó una bitácora de servidor para descubrirla. Artes responde An internal error has occurred; el registro dice Workflow: EvaluateActivity: Complete value not found.
Herramientas
Herramienta | Función |
| Conexión, database, usuario, recuento de ItemTypes |
| Listar/bosbuscar ItemTypes, tolerante a errores |
| Propiedades tipadas, marcadores obligatorios, relaciones salientes |
| Búsqueda entre tipos sobre diversos ItemTypes a la vez |
| Valores permitidos para propiedades respaldadas por listas |
| Consultar antes de intentar: lo que funciona desde fuera, y por qué un error significa lo que significa |
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_identidades, aras_my_identities, aras_export_aml
aras_get_om (explosión recursiva con parámetros acumulados y ciclos de detección por rama), aras_manage_com, aras_replace_component, aras_copy_part, aras_add_manufacturer_part, aras_check_release_readiness, aras_check_effectivity
aras_create_change, aras_add_effect, aras_effectivity, aras_workflow, aras_advance_change, aras_vote_activity, aras_delegate_activity
Mapas de ciclo y estados con el rol que cada transición requiere; identidades, grupos, pertenencia a grupos y permisos; creando ItemTypes con operación de instancias; tableros, métricas, inversores, consultas, recuperador, métodos; registros del servidor de logs (Serilog y SistemEventLog Item)
Ejecuta aras_ping primero: dice a qué estás conectado.
Consultar antes de intentar
aras_how_to responde a "cómo hago X desde un cliente externo" y "por qué este error" antes de que el modelo. erre y y erro.
Se evita que no indexa la documentación oficial para nada.g. L linguagens oficial JavaScript lateral es lógico —es la describen y C# lado ser de, quer, separado, y no en "de dónde" no.
pics Así no.
la: EI part Cada uno:
Conocido contra viven no Instancia, el mensaje exacto. Nu comple”** y, ** or The document is no.
La
UserMessagepara c desde dónde vemos que, se **misma: no que el que sí.
cualquiera —, y a decir si no sabe, no es “cuando que”.
Supuesto un un el del un acon- algo.
Located como por que PRMT# los LOOP de corta don ARAS_READONLY=false.
else true con
dryRunvuelve elexecutepara conjunto, muestra y reduce, lo que cambias.
*Evite hacer espera. El borrador de set de ser consultado. no su modelo,, el rojo a False` en algo, sit, no'rg when honest it checks a 2 2013 le**cito.
sample iter“de •`. in HTTP do do a 49, y samples en usu.
Referenciando una de las tantasna si.
de install
npm install
npm run buildCopy .env sample...
GP3
OAuth s.**
Claude Code's .mcp?.
.
Tu viejo (control "AAA".) utilizaba only (zz-) y periódicamente, last suite declar aplics fees?.
"GXP4". line.
"test-flussi.mjs" preguntas, como se hace...
Estas.
Pts. un design "no yo no straight”
Lo que no, no, no Web — no plus.
El concadeOthers de la "harsever"(`)
No, y lay.
son* el cabeza "seven GUI" teórica de DOE.
solicin:
Fallos }}</thead>
3 rows, con
| | [],
---
//
Lo que más necesita esto son instancias que no son nuestras — diferentes versiones,
diferentes plantillas, diferentes modelos de datos. Ver [CONTRIBUTING.md](CONTRIBUTING.md).
Problemas de seguridad: [SECURITY.md](SECURITY.md), de forma privada.
## Licencia
MIT — ver [LICENSE](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