ALM X++ MCP

D365 F&O: 90 herramientas de IA sobre más de 200K objetos, más de 25M referencias cruzadas, más de 24M traducciones de etiquetas.

Servidor MCP alojado

npx add-mcp 'https://api.almxpp.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

almxppmcp

npm version npm downloads MCP endpoint MCP registry M8ven Score license node LinkedIn

Lanzador npx para el Cloud MCP de ALM XPP - un agente de IA para Dynamics 365 Finance & Operations que expone 90 herramientas a través de MCP.

Publicado en el registro oficial de MCP como io.github.alimbenhelal-pro/alm-xpp-mcp.

El servidor responde desde un índice preconstruido del código estándar de D365 F&O: más de 200K objetos AOT, más de 1.3M fragmentos de código, más de 25M referencias cruzadas y más de 24M traducciones de etiquetas -- 392K identificadores de etiquetas renderizados en 74 idiomas.

Por qué un índice en lugar de un modelo de propósito general

Un modelo general responde preguntas sobre X++ desde lo que memorizó durante el entrenamiento. Este servidor responde desde una copia específica y versionada del código estándar de D365:

Qué significa en la práctica
Una versión conocidaEl Cloud MCP responde desde la versión que el servidor ha indexado, no desde la tuya. La versión actualmente cargada se informa mediante GET /mcp -- verifícala antes de confiar en una respuesta sensible a la versión
Tu propia versiónIndexar la compilación exacta de tu entorno es para lo que sirve el Local MCP: se ejecuta junto a tu SDK de D365 e indexa el PackagesLocalDirectory en esa máquina. El Cloud MCP no puede hacer esto -- nunca ve tus binarios de plataforma
RastreableCada resultado lleva el objeto AOT y el modelo del que proviene, para que puedas abrirlo en Visual Studio y verificarlo
Tus extensionesApunta D365-Custom-Model-Path a tus metadatos, o deja que indexe tu repositorio de Azure DevOps, y tu propio código se buscará junto al código estándar
Sin entrenamiento con tu códigoTus metadatos se indexan por sesión y se usan para responder tus llamadas. No se usan para entrenar nada

Tres servidores, tres roles

Tres servidores MCP diferentes aparecen alrededor de D365 F&O. Este README siempre los llama por estos nombres:

NombreQué esCómo obtenerlo
Cloud MCPEl servidor alojado de ALM XPP: 90 herramientas sobre el código D365 indexadoeste paquete -- npx almxppmcp
Local MCPSe ejecuta en tu propia máquina de desarrollo, junto al SDK de D365: 121 herramientas, 36 de las cuales escriben archivos AOT, compilan X++, sincronizan la base de datos. También es el único que puede indexar la compilación de plataforma exacta de tu entorno, leyendo el PackagesLocalDirectory de esa máquinacomponente licenciado por separado, contacta a alim@almxpp.com
Environment MCPEl servidor MCP de Dynamics 365 ERP de Microsoft, expuesto por tu propio entorno F&O, que sirve datos en vivohabilitado dentro de D365FO, luego conectado directamente desde VS Code

Este paquete npm cubre solo el Cloud MCP. El Local MCP está licenciado por separado, y el Environment MCP es de Microsoft -- tu cliente se conecta a él por su cuenta.

Requisitos

  • Un token de API -- obtén uno en el panel de control
  • Node.js >= 18, solo si usas el lanzador npx descrito más abajo

Configuración del Cliente MCP

El Cloud MCP es un servidor MCP HTTP transmisible en https://api.almxpp.com/mcp, autenticado con el encabezado X-API-Key. Cualquier cliente que hable HTTP se conecta directamente -- sin Node.js, sin lanzador.

Las llamadas a herramientas se sirven solo en api.almxpp.com. almxpp.com y www.almxpp.com alojan el sitio web; un POST JSON-RPC enviado allí se rechaza con un mensaje que indica la URL correcta. Solo cambia el host -- tu clave de API y los encabezados permanecen iguales.

VS Code / GitHub Copilot -- .vscode/mcp.json

{
  "servers": {
    "almxppmcp": {
      "type": "http",
      "url": "https://api.almxpp.com/mcp",
      "headers": {
        "X-API-Key": "YOUR_TOKEN"
      }
    }
  }
}

Encabezados

X-API-Key es el único encabezado requerido. Los demás desbloquean las herramientas que necesitan tu propio contexto -- sin ellos, esas herramientas simplemente informan que no están configuradas.

EncabezadoDesbloquea
X-API-KeyRequerido. Tu token de API. Authorization: Bearer <token> también funciona.
D365-Custom-Model-PathRuta absoluta a tus propios metadatos de extensión / ISV en la máquina que llama. Las herramientas de análisis leen desde aquí
D365-Standard-Model-PathRuta absoluta a PackagesLocalDirectory, usada como referencia de solo lectura para objetos estándar
DEVOPS_ORG_URLOrganización de Azure DevOps, p. ej. https://dev.azure.com/MyOrg
DEVOPS_PROJECTNombre del proyecto de Azure DevOps. Requerido junto con DEVOPS_ORG_URL.
DEVOPS_PATToken de Azure DevOps. Indexa tus propios metadatos X++ desde el repositorio y lee elementos de trabajo.
DEVOPS_REPORepositorio que contiene los metadatos, cuando el proyecto tiene varios
DEVOPS_BRANCHRama a indexar, por defecto main
DEVOPS_METADATA_PATHCarpeta dentro del repositorio que contiene el XML de AOT, por defecto Metadata
D365FO-UrlURL base del entorno en vivo, para las herramientas odata_* y dmf_*
D365FO-Tenant-IdInquilino de Entra de ese entorno
D365FO-Client-IdAplicación de Entra registrada en D365FO bajo Aplicaciones de Microsoft Entra
D365FO-Client-SecretSecreto de esa aplicación
AppInsights-Workspace-IdEspacio de trabajo de Log Analytics, para las herramientas appinsights_*
AppInsights-Tenant-IdInquilino de Entra de ese espacio de trabajo
AppInsights-Client-IdAplicación de Entra con Log Analytics Reader en el espacio de trabajo
AppInsights-Client-SecretSecreto de esa aplicación

Las credenciales del entorno en vivo y de telemetría también se pueden configurar para la sesión con d365fo_set_connection y appinsights_set_connection, para que nunca estén en un archivo de configuración.

examples/vscode-mcp.full-headers.json une todo esto y mantiene cada secreto fuera del archivo solicitándolo a través de inputs de VS Code.


El lanzador npx

Algunos clientes solo hablan stdio. El comando almxppmcp cubre ese caso: lee tu token, lo envía como el encabezado X-API-Key, y retransmite el tráfico al Cloud MCP a través de stdio. No tiene dependencias -- solo el archivo único, además de lo que Node 18 ya proporciona.

npx almxppmcp --api-key YOUR_TOKEN

o establece la variable de entorno:

export ALMXPPMCP_API_KEY=YOUR_TOKEN
npx almxppmcp

--api-key y ALMXPPMCP_API_KEY son las dos formas de dar el token al lanzador. De cualquier manera, termina en el cable como el encabezado HTTP X-API-Key -- mismo token, capa diferente.

VS Code, si prefieres el lanzador -- .vscode/mcp.json

{
  "servers": {
    "almxppmcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
    }
  }
}

Cursor -- .cursor/mcp.json

{
  "mcpServers": {
    "almxppmcp": {
      "command": "npx",
      "args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
    }
  }
}

Claude Desktop -- claude_desktop_config.json

{
  "mcpServers": {
    "almxppmcp": {
      "command": "npx",
      "args": ["-y", "almxppmcp", "--api-key", "YOUR_TOKEN"]
    }
  }
}

Consejo: reemplaza YOUR_TOKEN con el token que se muestra en tu panel de control. Configúralo como variable de entorno para evitar codificarlo (la clave raíz es mcpServers para Cursor y Claude Desktop, servers para VS Code):

{
  "mcpServers": {
    "almxppmcp": {
      "command": "npx",
      "args": ["-y", "almxppmcp"],
      "env": { "ALMXPPMCP_API_KEY": "YOUR_TOKEN" }
    }
  }
}

Variables de Entorno

VariableDescripción
ALMXPPMCP_API_KEYTu token de API (alternativa a --api-key)
ALMXPPMCP_SERVER_URLSobrescribe el endpoint de MCP (por defecto: https://api.almxpp.com/mcp)

¿Qué herramientas están disponibles?

El Cloud MCP expone 90 herramientas en 14 categorías, listadas a continuación.

El Local MCP incluye las 85 de ellas que no dependen del índice en la nube, más 36 adicionales que deben ejecutarse junto a tu entorno D365 (compilación, implementación, sincronización de base de datos, escrituras en el espacio de trabajo) -- 121 herramientas en ese lado. En ambos servidores, el conjunto de herramientas es de 126 herramientas distintas.

CategoríaHerramientasNombres
Búsqueda5search_d365_code, search_labels, batch_search, federated_search, search_context_docs
Recuperación6get_object_details, list_objects, list_custom_model_objects, get_object_context, compare_objects, get_menu_item_info
Relaciones e Impacto11find_related_objects, find_references, find_extensions, get_relation_graph, find_entity_for_table, find_callers, find_change_impact, find_event_handlers, find_relation_path, find_similar_implementations, trace_field_lineage
Calidad y Análisis7validate_best_practices, detect_performance_issues, find_error_patterns, fix_best_practice_violations, recommend_extension_strategy, suggest_edt, validate_object_naming
Seguridad y Licencias4trace_security_chain, trace_role_license_tree, get_security_coverage_for_object, generate_security_report
Generación de Código8generate_unit_test, suggest_refactoring, generate_diagram, generate_query, create_aot_object, generate_data_entity, generate_xpp_form, generate_xpp_template
Dominio Funcional2generate_fdd, explain_workflow
Diferenciadores2analyze_upgrade_impact, map_business_process
Actualización y Notas de Versión6resolve_client_profile, save_client_profile, list_release_note_inputs, prepare_release_note_context, generate_release_note_document, diff_model_versions
Entorno en Vivo5d365fo_set_connection, d365fo_clear_connection, odata_export_entity, odata_upsert_rows, get_data_entity_info
Migración de Datos7dmf, dmf_create_data_project, dmf_apply_entity_filter, dmf_import_file, dmf_export_package, dmf_get_job_status, dmf_transform_excel
Diagnóstico de Rendimiento4appinsights_set_connection, appinsights_clear_connection, appinsights_query, appinsights_diagnose_slowness
Orquestación e Informes6plan_and_execute, summarize_for_stakeholder, resolve_workspace_roots, resync_devops_index, healthcheck, get_output_page
Azure DevOps17ado_query_workitems, ado_analyze_workitem, ado_list_prs, ado_analyze_pr_impact, ado_gap_fit_analysis, ado_estimate_effort, ado_post_comment, ado_post_pr_comment, ado_create_task, ado_read_attachment, ado_update_workitem, ado_review_xpp_pr, ado_pr_dependency_map, ado_wiki_list, ado_wiki_get_page, ado_wiki_create_or_update_page, ado_wiki_delete_page

Más allá de la búsqueda de código, las capacidades notables son:

  • Impacto de actualización - compara dos versiones de D365 contra tus propias personalizaciones y produce el informe de regresión como Word y PowerPoint.
  • Entorno en vivo - conéctate a un entorno en ejecución, lee y escribe registros reales a través de OData, ejecuta proyectos de Data Management.
  • Diagnóstico de rendimiento - consulta la telemetría de Application Insights y obtén un diagnóstico clasificado de lo que realmente es lento.
  • Azure DevOps - elementos de trabajo, solicitudes de extracción, wiki, desde el análisis hasta la revisión.

Referencia completa con parámetros y ejemplos de prompts: https://www.almxpp.com/docs


Qué hay en este repositorio

Este repositorio contiene solo el lado del cliente — el lanzador npx publicado en npm como almxppmcp:

RutaPropósito
bin/almxppmcp.jsResuelve la clave de API y la URL del servidor, luego conecta el stdio de tu cliente al Cloud MCP a través de HTTP -- sin paquetes de terceros involucrados
server.jsonManifiesto del registro MCP

El Cloud MCP en sí — índice, recuperación, las 90 herramientas y la capa de licencias — es de código cerrado y se ejecuta en https://api.almxpp.com/mcp. El lanzador nunca ve tu código: reenvía solicitudes a través de HTTPS con el token que proporcionas.


Licencia

MIT