MCP serverio.github.alimbenhelal-pro/alm-xpp-mcp
D365 F&O: 90 AI tools over 200K+ objects, 25M+ cross-refs, 24M+ label translations.
Overview
Score?
UNRATED 0.815
of what a free look can see, on 30 looks
Looks
35
last 17 hr ago
Tools
90
More info
URL
api.almxpp.com/mcp
streamable-http
Says it is
ALMXPPMCP 1.5.518
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.815 · highest on record 0.8561
Toolsfrom sha256:beda771f32…8010bf
| Tool | Schema |
|---|---|
| ado_analyze_pr_impact [~] PRIORITY TRIGGER: Use this tool when the user says 'analyse PR', 'review PR', 'check PR', 'PR #', 'impact du PR', 'analyse la PR', 'what changed in PR', 'D365 impact of PR', 'c |
input · no output |
| ado_analyze_workitem AZURE DEVOPS ONLY -- Fetch a Work Item and assemble ALL technical context needed for D365 F&O expert analysis. [~] PRIORITY TRIGGER: 'analyse le workitem', 'analyse la tâche', 'an |
input · no output |
| ado_create_task WHEN: user asks to create a DevOps Task or start development on a Work Item. Triggers: 'create task', 'créer une tâche', 'start development on', 'commencer le dev sur', 'créer un t |
input · no output |
| ado_estimate_effort WHEN: user asks for an effort estimate, chiffrage, or development hours for a D365 Work Item. [~] PRIORITY TRIGGER: call AFTER `ado_analyze_workitem` when the user asks 'how long?' |
input · no output |
| ado_gap_fit_analysis WHEN: user asks whether a D365 requirement is standard, needs config, needs an extension, or is a full gap. Also triggered by gap analysis or fit/gap classification of a Work Item. |
input · no output |
| ado_list_prs [~] PRIORITY TRIGGER: Use this tool when user mentions 'PR', 'Pull Request', 'list PRs', 'show PRs', 'active PRs', 'mes PR', 'liste des PR', 'pull requests ouverts', 'what PRs are |
input · no output |
| ado_post_comment WHEN: user explicitly asks to post, add, or save a comment to an ADO Work Item. [~] PRIORITY TRIGGER: call AFTER `ado_analyze_workitem` when user says 'post the analysis', 'save it |
input · no output |
| ado_post_pr_comment WHEN: user explicitly asks to post, add, or save a review comment to an ADO Pull Request. [~] PRIORITY TRIGGER: call AFTER `ado_analyze_pr_impact` when user says 'post the review', |
input · no output |
| ado_pr_dependency_map PR DEPENDENCY MAP -- Scan multiple Pull Requests and build a cross-PR dependency graph based on (a) shared X++/AOT objects and (b) branch chain relationships.
For each PR:
* Lis |
input · no output |
| ado_query_workitems AZURE DEVOPS ONLY -- Query Work Items (Bugs, Tasks, FDDs, User Stories, CRs) in Azure DevOps. [~] PRIORITY TRIGGER: use this tool when the user mentions 'FDD', 'RDD', 'IDD', 'CR', |
input · no output |
| ado_read_attachment AZURE DEVOPS ONLY -- Reads the ACTUAL CONTENT of a file attached to a work item (Excel spreadsheet, Word document, text/CSV/JSON/XML file, or image). WHEN: a work item (FDD/RDD/CR |
input · no output |
| ado_review_xpp_pr WHEN: reviewing a PR that modifies X++ code or AOT objects and you need D365-specific insights. Returns a structured code review for each changed object: blast radius (who calls it |
input · no output |
| ado_update_workitem Update one or more fields on an existing Azure DevOps Work Item. Can update any standard field (System.Description, System.Title, System.State, System.AssignedTo, ...) or custom fi |
input · no output |
| ado_wiki_create_or_update_page AZURE DEVOPS ONLY -- Create a new wiki page, or OVERWRITE an existing one with new markdown content. ALWAYS call ado_wiki_get_page first if you intend to edit (not replace) an exis |
input · no output |
| ado_wiki_delete_page AZURE DEVOPS ONLY -- Delete a wiki page. This also deletes its sub-pages if any exist under it. Requires DEVOPS_ORG_URL + DEVOPS_PAT env vars (PAT needs Wiki: Read & Write scope). |
input · no output |
| ado_wiki_get_page AZURE DEVOPS ONLY -- Read the content of a wiki page (and its immediate sub-page paths). path uses wiki page-path syntax, e.g. '/Home' or '/Architecture/Deployment'. Requires DEVOP |
input · no output |
| ado_wiki_list AZURE DEVOPS ONLY -- List all wikis in a project (the project wiki plus any published code-as-wiki repos). Use this FIRST when the user doesn't know the wiki's exact name/id, or to |
input · no output |
| analyze_upgrade_impact WHEN: upgrading D365 F&O to a new version or applying a Microsoft update -- check if your custom code will break. Triggers: 'upgrade D365', 'mise à niveau', 'will this break after |
input · no output |
| appinsights_clear_connection Removes the Application Insights connection cached for the current session by appinsights_set_connection. |
input · no output |
| appinsights_diagnose_slowness WHEN: user wants to understand/deduce why a D365 F&O environment feels slow, using the
real Application Insights telemetry the environment already emits -- no trace file
upload nee |
input · no output |
| appinsights_query Run a raw KQL (Kusto) query against the D365FO environment's Application Insights /
Log Analytics workspace (read-only -- the query language has no mutation operators).
Requires th |
input · no output |
| appinsights_set_connection Securely register the D365 F&O environment's Application Insights / Log Analytics
connection for the CURRENT session. The client secret is encrypted in memory
(AES-256-GCM), never |
input · no output |
| batch_search WHEN: you need context on multiple D365 objects or concepts simultaneously -- runs all queries in parallel. Use INSTEAD of multiple sequential search_d365_code calls -- each line b |
input · no output |
| compare_objects Compare two D365 F&O objects side-by-side (fields, methods, signatures). Handy when investigating differences between standard and a customisation, or between two similar tables. |
input · no output |
| create_aot_object Generate a complete, ready-to-deploy D365 F&O AOT XML scaffold for any object type.
Returns the XML + the correct file path inside the model -- the calling client (VS Exten |
input · no output |
| d365fo_clear_connection Removes the D365 F&O connection cached for the current session by d365fo_set_connection. |
input · no output |
| d365fo_set_connection Securely register the D365 F&O connection (URL + Entra app-registration credentials)
for the CURRENT session. The client secret is encrypted in memory (AES-256-GCM),
never written |
input · no output |
| detect_performance_issues Profile an X++ object for N+1 queries, queries in loops, missing field lists, row-by-row inserts/updates, missing firstOnly. Returns compact issue table with line + fix. Only call |
input · no output |
| diff_model_versions Compare two D365 F&O KB snapshots to produce a changelog (added/removed/modified objects). Use action 'save_baseline' once, then 'compare' between two snapshots. |
input · no output |
| dmf Consolidated Data Management Framework tool — one entry point for all 5 DMF operations,
selected via `action`. Each action forwards to the exact same implementation as its
dedicate |
input · no output |
| dmf_apply_entity_filter Apply a single-field value filter to ONE entity row of an existing DMF project, so the
export only contains the matching records. The kernel builds the packed query (custom
'Genera |
input · no output |
| dmf_create_data_project Create (or extend) a DMF data project -- EXPORT or IMPORT -- entirely through standard
public OData entities, with NO X++ customization required. It POSTs the header to
DataManagem |
input · no output |
| dmf_export_package Trigger a bulk export through the Data Management package REST API and return
the download URL when complete. NOTE: the DMF EXPORT project (definitionGroupId)
must already exist in |
input · no output |
| dmf_get_job_status Poll the status of a DMF import/export execution by its executionId
(e.g. NotRun, Executing, Succeeded, PartiallySucceeded, Failed). For a
completed export, also returns the downlo |
input · no output |
| dmf_import_file Bulk-import a CSV file into a D365 F&O entity through the Data Management
package REST API. Builds the package (Manifest + header + CSV) in memory,
uploads it to Azure blob, then c |
input · no output |
| dmf_transform_excel Transform a multi-sheet Excel (.xlsx) into DMF-ready rows using a data-driven JSON
mapping -- equivalent to FO_TransformExcelForDMF. NO FO credentials required (offline
transform). |
input · no output |
| explain_workflow WHEN: user asks how an approval workflow works, who approves a document, what states it goes through, or what happens on submission/rejection. NOT for technical workflow class deta |
input · no output |
| federated_search Fan-out search across multiple ALM XPP MCP server instances in parallel and merge results using Reciprocal Rank Fusion (RRF). Useful when D365 code is split across multiple organis |
input · no output |
| find_callers Full cross-reference profile for a class or method: callers, callees, inheritance chain, interface implementations, overrides, attributes. Requires xref_index.json.gz (generated fr |
input · no output |
| find_change_impact WHEN: about to modify an X++ object or method and need to understand what could break. Returns a blast-radius report: direct callers, transitive dependents (BFS up to 3 hops), cust |
input · no output |
| find_entity_for_table WHEN: developer needs to integrate via OData and wants to find the entity name for a given table. Also generates a new entity template when none exists and generateIfMissing=true. |
input · no output |
| find_error_patterns WHEN: a user encounters an error message, infolog error, or runtime exception in D365. Also handles business-language error explanation when audienceType='business'. Triggers (deve |
input · no output |
| find_event_handlers Find all event handlers that subscribe to events on a D365 table or class. Searches the knowledge base for [SubscribesTo(classStr(objectName), ...)] / [SubscribesTo(tableStr(object |
input · no output |
| find_extensions Find all extension objects (AxClassExtension, AxTableExtension, AxFormExtension, AxEnumExtension), CoC classes ([ExtensionOf]), and event handlers for a base object. Also queries A |
input · no output |
| find_references Full index scan for all usages of an object, method, field, or label ID. Use for impact analysis before changing or deleting an object. EXPENSIVE — O(1M+ chunks). Prefer find_calle |
input · no output |
| find_related_objects Returns ALL FK/DeleteAction/DataSource relations (outgoing) AND back-references (incoming). Call BEFORE generating multi-object code to understand the full dependency graph. When t |
input · no output |
| find_relation_path WHEN: you need to know HOW two AOT objects are connected -- the chain of relations linking them. Triggers: 'how is X related to Y', 'comment X est lié à Y', 'path between', 'chemin |
input · no output |
| find_similar_implementations Find D365 objects structurally similar to the one you supply (same kind, similar method set, similar field set). Useful when you need a working reference implementation to copy fro |
input · no output |
| fix_best_practice_violations WHEN: validate_best_practices returned violations and you want concrete X++ fix suggestions. Returns each BP violation with its built-in fix suggestion AND (when Ollama is availabl |
input · no output |
| generate_data_entity WHEN: developer needs to CREATE a data entity (AxDataEntityView) AOT XML from a table for OData/DMF/data migration. Triggers: 'create data entity', 'generate entity', 'créer une da |
input · no output |
| generate_diagram WHEN: generating a visual diagram of D365 table relationships or security chains. Triggers: 'generate diagram', 'diagramme', 'visualize', 'schéma', 'ER diagram', 'entity-relationsh |
input · no output |
| generate_fdd WHEN: user asks to write or generate a Functional Design Document, FDD, functional spec, CdC, or cahier des charges. NOT for developer technical docs -- use `get_object_details` fo |
input · no output |
| generate_query WHEN: developer needs correct X++ select or T-SQL for D365 tables with proper joins. Triggers: 'X++ select', 'generate a query', 'SQL for', 'join with', 'how to query', 'générer un |
input · no output |
| generate_release_note_document WHEN: you have already called prepare_release_note_context and analyzed its 'objects' array yourself, producing a findings JSON array per the 'instructions' field it returned. This |
input · no output |
| generate_security_report Generate a security & licensing governance report for the indexed model(s). For each role, lists duties, privileges, entry points and the inferred user-license tier (Activity, Oper |
input · no output |
| generate_unit_test WHEN: developer needs to write or scaffold unit tests for a custom D365 object. Triggers: 'generate tests', 'unit test', 'SysTest', 'write test for', 'scénarios de test', 'test thi |
input · no output |
| generate_xpp_form Generate a complete, compilable AxForm AOT XML with the CORRECT control serialization (<AxFormControl xmlns="" i:type="...">) for the requested pattern. Patterns: SimpleList, Detai |
input · no output |
| generate_xpp_template WHEN: writing an extension or customization -- generates ready-to-use X++ code. Triggers: 'génère un CoC', 'crée une extension', 'generate extension', 'write a CoC class', 'event h |
input · no output |
| get_data_entity_info WHEN: developer building an OData / DMF integration needs a quick rundown of a specific data entity: its public OData name, datasources, key fields, and IsPublic status. Triggers: |
input · no output |
| get_menu_item_info WHEN: developer needs to resolve a menu item -- find its target object (form / action / output), linked security privilege, label, and parameters. Triggers: 'menu item info', 'what |
input · no output |
| get_object_context WHEN: you need a COMPLETE picture of a D365 object in ONE call. Returns in a single response: full structure (fields, method signatures, relation summary) AND all CoC extensions / |
input · no output |
| get_object_details WHEN: you know the EXACT object name. Triggers: user gives an exact name like 'SalesTable', 'CustTable', 'VendInvoiceJour', any PascalCase D365 object name. Get complete details: a |
input · no output |
| get_output_page Retrieve the NEXT page of a previously PAGINATED tool output. When a tool result is too large for a single response, it is split losslessly into ordered pages — the footer of each |
input · no output |
| get_relation_graph WHEN: you need the COMPLETE bidirectional relation graph for an object in ONE call. Triggers: 'relations of', 'FK of', 'what tables link to', 'quelles tables liées à', 'avant de gé |
input · no output |
| get_security_coverage_for_object WHEN: developer/security architect needs to know WHICH ROLES can access a specific form, table, menu item or service operation. Triggers: 'who can access', 'which roles see', 'secu |
input · no output |
| healthcheck WHEN: checking server status, loaded D365 version, or custom model path. Triggers: 'status', 'statut', 'is the server ready', 'how many chunks', 'index loaded'. Returns JSON with: |
input · output |
| list_custom_model_objects WHEN: developer wants to see what custom/extension objects exist in their model. Triggers: 'list my custom objects', 'what have we customized', 'show ISV objects', 'list custom mod |
input · no output |
| list_objects WHEN: you need ALL objects of a given type or in a given model. Triggers: 'list all tables in ALM', 'show all classes', 'quels objets dans le modèle', 'give me all forms'. Full ind |
input · no output |
| list_release_note_inputs WHEN: ALWAYS call this FIRST, before prepare_release_note_context -- it discovers the exact D365FO version strings and custom model ids actually indexed on THIS server, which you c |
input · no output |
| map_business_process WHEN: mapping the technical D365 objects behind a business process, or understanding which tables/forms implement a flow. Triggers: 'processus métier', 'Order-to-Cash', 'Procure-to |
input · no output |
| odata_export_entity Export any D365 F&O data entity via OData (transactional, no DMF project required).
Universal: works for ANY public entity. Supports $select, $filter, $orderby and
follows server p |
input · no output |
| odata_upsert_rows Idempotent import of rows into any entity via OData: PATCH when the record
exists (matched by keyFields), otherwise POST. Safe to re-run -- duplicates
are updated, not re-created. |
input · no output |
| plan_and_execute CHAIN-OF-TOOLS PLANNER -- Execute a multi-step JSON plan in ONE call by chaining tools. Pass an EXPLICIT JSON array of steps (NL parsing disabled to prevent ambiguity). Maximum 5 |
input · no output |
| prepare_release_note_context WHEN: building an AI-assisted D365 F&O upgrade release note (regressions + opportunities) for a specific client, and you (the calling assistant) want to do the reasoning yourself i |
input · no output |
| recommend_extension_strategy WHEN: developer about to customise a standard D365 object asks 'should I use AxTableExtension, Chain of Command, EventHandler, or Delegate?'. Triggers: 'how to extend', 'best way t |
input · no output |
| resolve_client_profile WHEN: at the START of any release-note / upgrade-impact conversation -- call this BEFORE list_release_note_inputs to check whether a Client Profile already exists for the CURRENT c |
input · no output |
| resolve_workspace_roots WHEN: you need to know which folder(s) are configured as the workspace/project root for the current caller. Reads D365-Custom-Model-Path and D365-Standard-Model-Path from the reque |
input · no output |
| resync_devops_index WHEN: the user wants to force a full re-download and re-index of their Azure DevOps custom model. Triggers: 'resync', 'reindex', 'force sync', 'rebuild index', 'my model is stale', |
input · no output |
| save_client_profile WHEN: no profile was found by resolve_client_profile and the user wants one created (or updated) for their client, so future release-note requests never need v1/v2/customModelIds a |
input · no output |
| search_context_docs WHEN: the user asks about business/functional context that lives OUTSIDE the D365 code KB -- specs, functional design docs, mapping sheets, contracts, meeting notes, screenshots' c |
input · no output |
| search_d365_code WHEN: object name is unknown, partial, or you need to find by concept/keyword. Search the D365 F&O knowledge base for X++ code, tables, classes, forms, views, enums, EDTs, security |
input · no output |
| search_labels Search D365 F&O labels across all indexed languages. Given text (e.g. 'Sales order'), finds the matching label ID (@SYS12345). Given a label ID (e.g. '@SYS12345' or '@SYS:12345'), |
input · no output |
| suggest_edt WHEN: adding a new field to a table -- find the best existing D365 EDT to extend instead of using raw primitives (str, int64, real, date). Triggers: 'what EDT for', 'which EDT shou |
input · no output |
| suggest_refactoring WHEN: developer wants to improve code quality before a PR merge or code review. Triggers: 'refactor', 'clean up', 'simplify', 'too long method', 'nested ifs', 'code smells', 'améli |
input · no output |
| summarize_for_stakeholder WHEN: you have a large technical tool output (get_object_details, validate_best_practices, ado_analyze_workitem, detect_performance_issues...) and need it reframed for a non-techni |
input · no output |
| trace_field_lineage WHEN: you need to understand the full data lifecycle of a D365 F&O table field: who writes it, who reads it, which forms display it, which reports use it, and which tables have FK |
input · no output |
| trace_role_license_tree WHEN: security design, licence audit, or 'what licence does this role require?'. Triggers: 'arborescence du rôle', 'licence nécessaire pour', 'what licence for role', 'role tree', |
input · no output |
| trace_security_chain WHEN: security audit -- need the TECHNICAL chain from Role/Duty/Privilege to Entry Points and Table/Form permissions. Also handles BUSINESS-LANGUAGE role explanation when businessL |
input · no output |
| validate_best_practices Run an in-house best-practice audit on any AOT object (custom or standard), from the indexed source -- NOT the Microsoft BP checker. Rules are this server's own: SEC (security chai |
input · no output |
| validate_object_naming WHEN: developer needs to check that a proposed object name follows D365 + ISV naming conventions, is unique against the indexed KB, and does not collide with a reserved or standard |
input · no output |
Verify it yourself
npx teppi-check https://api.almxpp.com/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2E44GSTRTN7GEGFSHT0Y