mcpserver.lol
registry/alm-xpp-mcp
Connection check verified live · 27h ago

alm-xpp-mcp

D365 F&O: 90 AI tools over 200K+ objects, 25M+ cross-refs, 24M+ label translations.

Tools 90
GitHub stars 2
Installs / wk 113
Licence MIT
Transport streamable-http, stdio
Last checked 27h ago

Tools & capabilities

90 tools

Read from the running server on 27h ago.

ado_analyze_pr_impact read-only prId*projectmaxFilesDeeprepositoryId*includeSourceincludeWarnings +1
[~] 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…
ado_analyze_workitem read-only projectworkItemId*maxCommentsfocusObjectssourceBranchincludeImages
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…
ado_create_task projectareaPathassignTonotifyListworkItemId*description +4
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…
ado_estimate_effort read-only projectworkItemId*focusObjects
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?'…
ado_gap_fit_analysis read-only projectworkItemIdrequirementsrequirementText
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.…
ado_list_prs read-only topauthorstatusprojectrepositoryIdtargetBranch
[~] 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…
ado_post_comment projectworkItemId*commentText*
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…
ado_post_pr_comment prId*projectfilePathlineNumbercommentText*repositoryId*
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',…
ado_pr_dependency_map read-only topstatusprojectrepositoryId*targetBranch
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…
ado_query_workitems read-only tagquery*stateprojectareaPathpriority +5
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',…
ado_read_attachment read-only projectfileName*sheetNameworkItemId*
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…
ado_review_xpp_pr read-only prId*projectrepositoryIdmaxDeepAnalysis
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…
ado_update_workitem projectfieldsJson*workItemId*
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…
ado_wiki_create_or_update_page can modify data path*content*projectwikiIdentifier
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…
ado_wiki_delete_page can modify data path*projectwikiIdentifier
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).
ado_wiki_get_page read-only path*projectwikiIdentifierincludeSubPages
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…
ado_wiki_list read-only project
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…
analyze_upgrade_impact read-only
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…
appinsights_clear_connection
Removes the Application Insights connection cached for the current session by appinsights_set_connection.
appinsights_diagnose_slowness toplookbackHoursminDurationMs
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…
appinsights_query kql*maxRowslookbackHours
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…
appinsights_set_connection clientId*tenantId*ttlMinutesworkspaceId*clientSecret*
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…
batch_search read-only topKqueries*topObjects
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…
compare_objects read-only objectNameA*objectNameB*
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.
create_aot_object read-only name*aotType*options
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…
d365fo_clear_connection
Removes the D365 F&O connection cached for the current session by d365fo_set_connection.
d365fo_set_connection baseUrl*clientId*tenantId*ttlMinutesclientSecret*
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…
detect_performance_issues read-only methodNameobjectName*
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…
diff_model_versions read-only path1*action*filterModelpath2OrLabel
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.
dmf action*executeentitiesfilePathfieldNameoverwrite +14
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…
dmf_apply_entity_filter fieldName*filterValue*projectName*aotEntityName*entityRowName*
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…
dmf_create_data_project entities*sourceName*projectName*operationType
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…
dmf_export_package reExecutelegalEntity*packageNamedefinitionGroupId*pollTimeoutSeconds
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…
dmf_get_job_status executionId*
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…
dmf_import_file can modify data executefilePathoverwritecsvContententityName*legalEntity* +2
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…
dmf_transform_excel formatfilePathsheetNamesourceUrloutputPathmappingJson +2
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).…
explain_workflow read-only objectName*
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…
federated_search read-only topKquery*peerApiKeys
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…
find_callers read-only depthmethodKey*categoriesmaxResults
Full cross-reference profile for a class or method: callers, callees, inheritance chain, interface implementations, overrides, attributes. Requires xref_index.json.gz (generated fr…
find_change_impact read-only maxDepthobjectName*
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…
find_entity_for_table read-only tableName*maxResultsgenerateIfMissing
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.…
find_error_patterns read-only audienceTypeerrorOrSymptom*
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…
find_event_handlers read-only eventNameobjectName*handlerType
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…
find_extensions read-only baseObjectName*
Find all extension objects (AxClassExtension, AxTableExtension, AxFormExtension, AxEnumExtension), CoC classes ([ExtensionOf]), and event handlers for a base object. Also queries A…
find_references read-only name*maxResultslocationsPerObject
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…
find_related_objects read-only objectName*
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…
find_relation_path read-only source*target*maxDepthmaxPaths
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…
find_similar_implementations read-only maxResultsobjectName*filterAotType
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…
fix_best_practice_violations read-only objectName*maxViolationsgeneratePatches
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…
generate_data_entity read-only fieldsisPublictableName*entityName*joinTablespublicEntityName
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…
generate_diagram read-only maxRelatedmethodNameobjectName*diagramType*
WHEN: generating a visual diagram of D365 table relationships or security chains. Triggers: 'generate diagram', 'diagramme', 'visualize', 'schéma', 'ER diagram', 'entity-relationsh…
generate_fdd read-only contextlanguageobjectName*
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…
generate_query read-only topfieldsfiltersorderBytableName*joinTables +2
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…
generate_release_note_document v1*v2*findingsJson*touchedAdded*touchedRemoved*businessContext +2
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…
generate_security_report read-only filterModelmaxRolesDetail
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…
generate_unit_test read-only methodNameobjectName*sampleValuestestScenarios
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…
generate_xpp_form read-only fieldsformName*modelNamefieldTypesformPattern*primaryTable +1
Generate a complete, compilable AxForm AOT XML with the CORRECT control serialization (<AxFormControl xmlns="" i:type="...">) for the requested pattern. Patterns: SimpleList, Detai…
generate_xpp_template read-only methodNameobjectName*templateType*
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…
get_data_entity_info read-only entityName*
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:…
get_menu_item_info read-only menuItemName*menuItemType
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…
get_object_context read-only aotTypemethodNameobjectName*includeValidation
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 /…
get_object_details read-only aotTypemethodNameobjectName*
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…
get_output_page read-only pagetoken*
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…
get_relation_graph read-only maxEdgesobjectName*aotTypeFilter
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é…
get_security_coverage_for_object read-only maxRolesminGrantobjectName*
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…
healthcheck read-only
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:…
list_custom_model_objects read-only customModelPath
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…
list_objects read-only aotTypemodelName
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…
list_release_note_inputs read-only
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…
map_business_process read-only processName*
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…
odata_export_entity filterformatselectmaxRowsorderByentitySet* +2
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…
odata_upsert_rows can modify data rowsJson*entitySet*keyFields*legalEntitycrossCompany
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.…
plan_and_execute goal*projectassignToobjectNameworkItemIddescription
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…
prepare_release_note_context read-only v1v2customModelIdsbusinessContext
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…
recommend_extension_strategy read-only intent*objectName*
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…
resolve_client_profile read-only
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…
resolve_workspace_roots read-only
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…
resync_devops_index pat
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',…
save_client_profile name*customModelIdstargetVersionTagcurrentVersionTag
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…
search_context_docs read-only query*maxResultsincludeImages
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…
search_d365_code read-only topKquery*scopedomaintopObjects
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…
search_labels read-only query*languagemaxResults
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'),…
suggest_edt read-only topKpurpose*baseTypefieldName*
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…
suggest_refactoring read-only methodNameobjectName*
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…
summarize_for_stakeholder read-only text*audience
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…
trace_field_lineage read-only fieldName*tableName*maxPerCategory
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…
trace_role_license_tree read-only roleName*maxEntryPoints
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',…
trace_security_chain read-only businessLanguagesecurityObjectName*
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…
validate_best_practices read-only methodNameobjectName*minSeverity
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…
validate_object_naming read-only aotType*isvPrefix*proposedName*
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…