Skip to main content
Glama
masoniqbal777

MCP X++ Server

MCP X++ Server

Ein Model Context Protocol (MCP)-Server für die Entwicklung mit Microsoft Dynamics 365 Finance & Operations. Dieses Tool ermöglicht die Erstellung, Änderung und Analyse von D365-Objekten über den MCP-Standard und erlaubt die Integration in verschiedene Entwicklungsumgebungen.

Datum: 18. September 2025
Status: Funktionsfähig mit VS2022-Service-Integration und erweiterter Formularerstellung

Aktuelle Updates ✨

19. September 2025 – Funktion zum sicheren Löschen von Objekten:

  • 🗑️ NEUES Tool delete_xpp_object: Sicheres Löschen von D365-Objekten mit Abhängigkeitsprüfung und Kaskadenunterstützung

  • 🛡️ Abhängigkeitsschutz: Verhindert das Löschen, wenn andere Objekte vom Zielobjekt abhängen, und vermeidet so Breaking Changes

  • 🔄 Cache-Konsistenz: Automatische Aktualisierung des Suchindex nach erfolgreichem Löschen

  • ⚡ Hohe Leistung: Direkte Metadaten-Provider-Integration mit ISingleKeyedMetadataProvider.Delete

  • 🌲 Kaskadenlöschung: Optionale Löschung von untergeordneten Objekten (Formularparts, Tabellenrelationen usw.)

  • ✅ Umfassende Tests: Vollständiger Erstellungs-/Löschzyklus über alle Objekttypen hinweg

18. September 2025 – Array-Änderungen und Verbesserungen bei der Formularerstellung:

  • 🚀 NEUE Nur-Array-Änderungen: execute_object_modification verwendet jetzt ausschließlich das Batch-Format für konsistente Operationen

  • 🔄 Erzwungene Stapelverarbeitung: Einzeloperationen verwenden ein Array mit einem Element – keine aufeinanderfolgenden separaten Aufrufe mehr

  • 📊 Verbesserte Antwortverfolgung: Erfolgs-/Fehlerberichte pro Operation mit detaillierten Zeitangaben und Fehlermeldungen

  • 📋 Best-Practice-Dokumentation: Klare Anleitung, alle Änderungen für dasselbe Objekt in einem einzigen Aufruf zu gruppieren

  • 🎯 NEUES Tool create_form: Spezialisierte Formularerstellung mit Musterunterstützung und Datenquellen-Integration

  • 🔧 DetailsMaster-Muster behoben: Validierungsprobleme durch intelligente Erstellung von Feldsteuerelementen gelöst

  • 🗄️ Erweiterte Datenquellen-Unterstützung: Flexible Datenquellenverarbeitung (Arrays, Zeichenfolgen, kommagetrennte Werte)

  • 📋 Mustererkennung: 36 gefilterte Formularmuster mit Beschreibungen und Anforderungen

  • ✅ Mustervalidierung: Automatische Erstellung von Feldsteuerelementen für Muster, die diese erfordern

Related MCP server: MCP X++ Server

Übersicht

Dieser MCP-Server bietet Entwicklungsfunktionen für D365 F&O, darunter:

  • Objekterstellung: Unterstützung für D365-Klassen, Tabellen, Formulare, Enumerationen und 544+ weitere Objekttypen

  • Formularerstellung: ✨ Erweitert – Spezialisierte Formularerstellung mit Mustervalidierung und Datenquellen-Integration

  • Objeklöschung: ✨ NEU – Sicheres Löschen von Objekten mit Abhängigkeitsvalidierung und Kaskadenunterstützung

  • Objektänderung: Hinzufügen von Methoden, Feldern und anderen Komponenten zu vorhandenen Objekten

  • Objektinspektion: Analyse von D365-Objekten und Extraktion von X++-Quellcode

  • Codebasis-Suche: Durchsuchen von D365-Codebasen mit Musterabgleich

  • MCP-Protokoll: Kompatibel mit Claude Desktop, VS Code und anderen MCP-Clients

Architektur

Das System besteht aus zwei Hauptkomponenten, die über Windows Named Pipes kommunizieren:

MCP X++ Server (Node.js/TypeScript)

  • Implementiert das Model Context Protocol (STDIO)

  • Verarbeitet Objekterstellung, -änderung und Suchoperationen

  • Bietet Dateibrowsing und Codebasis-Indexierung

  • Kompatibel mit MCP-Clients wie Claude Desktop und VS Code

D365 Metadata Service (C# .NET 4.8)

  • Integriert Microsofts D365-Assemblys

  • Verarbeitet Objekterstellung und -änderung über VS2022-APIs

  • Bietet dynamische Reflektion zur Laufzeit-Objekterkennung

  • Kommuniziert über Named Pipe: mcp-xpp-d365-service

Die Architektur ermöglicht D365-Entwicklung über verschiedene MCP-kompatible Clients und bleibt dabei mit bestehenden D365-Entwicklungsworkflows kompatibel.

Verfügbare Tools

Der Server bietet 10 spezialisierte Tools für die D365-Entwicklung:

  1. create_xpp_object – D365-Objekte erstellen (Klassen, Tabellen, Enumerationen usw.) – Hinweis: Für Formulare create_form verwenden

  2. create_form – ✨ NEU – Spezialisierte Formularerstellung mit Musterunterstützung und Datenquellen-Integration

  3. delete_xpp_object – ✨ NEU – Sicheres Löschen von D365-Objekten mit Abhängigkeitsvalidierung und Cache-Konsistenz

  4. execute_object_modification – ✨ ERWEITERT – Array-basierte Objektänderung mit Stapelverarbeitung – BEST PRACTICE: Alle Änderungen für dasselbe Objekt gruppieren

  5. discover_modification_capabilities – Verfügbare Änderungsmethoden erkunden

  6. find_xpp_object – Bestimmte Objekte nach Name/Typ finden

  7. search_objects_pattern – Mustersuche mit Wildcard-Unterstützung

  8. inspect_xpp_object – Objektanalyse mit X++-Quellcode-Extraktion

  9. get_current_config – Systemkonfiguration und -status

  10. build_object_index – Indexverwaltung für die Suchleistung

Voraussetzungen

  • Visual Studio 2022 (Community, Professional oder Enterprise)

  • Dynamics 365 Development Tools für Visual Studio 2022

  • Node.js (aktuelle LTS-Version empfohlen)

  • .NET Framework 4.8 (in der Regel in Windows enthalten)

Installation

  1. Repository klonen

  2. Node.js-Abhängigkeiten installieren: npm install

  3. Setup ausführen, um die VS2022-Integration zu konfigurieren: .\tools\build-and-run.ps1 -Action setup

  4. Projekt erstellen: .\tools\build-and-run.ps1 -Action build

Verwendung

Server starten

Den MCP-Server wie folgt ausführen:

node build/index.js

Der Server erkennt D365-Pfade automatisch aus Ihrer VS2022-Installation. Für die manuelle Konfiguration verwenden Sie:

node build/index.js --xpp-path "C:\path\to\PackagesLocalDirectory"

MCP-Client-Konfiguration

VS Code

Konfiguration in .vscode/mcp.json:

{
  "servers": {
    "mcp-xpp-server": {
      "command": "node",
      "args": ["./build/index.js"],
      "cwd": "${workspaceFolder}",
      "type": "stdio"
    }
  }
}

Claude Desktop

Zur Claude-Desktop-Konfigurationsdatei hinzufügen:

{
  "mcpServers": {
    "mcp-xpp-server": {
      "command": "node",
      "args": ["path/to/mcp_xpp/build/index.js"]
    }
  }
}

Tool-Referenz

Objekterstellung

create_xpp_object

Erstellt D365 F&O-Objekte über die VS2022-Service-Integration.

⚠️ Wichtig: Verwenden Sie für die Erstellung von Formularen stattdessen das dedizierte Tool create_form, da es spezielle Musterunterstützung und Datenquellen-Integration bietet.

Parameter:

  • objectName (Zeichenfolge) – Name des D365-Objekts

  • objectType (Zeichenfolge) – Objekttyp (AxClass, AxTable, AxEnum usw.) – Ohne AxForm

  • layer (Zeichenfolge, optional) – Anwendungsebene (usr, cus, var)

  • outputPath (Zeichenfolge, optional) – Ausgabeverzeichnis (Standard: "Models")

  • publisher (Zeichenfolge, optional) – Firmenname (Standard: "YourCompany")

  • version (Zeichenfolge, optional) – Versionsnummer (Standard: "1.0.0.0")

  • dependencies (Array, optional) – Modellabhängigkeiten

  • properties (Objekt, optional) – Objektspezifische Konfiguration

Beispiel:

create_xpp_object({
  "objectName": "MyCustomClass",
  "objectType": "AxClass",
  "layer": "usr"
})

create_form ✨ NEU

Spezialisiertes Tool zum Erstellen von D365-Formularen mit erweiterter Musterunterstützung und Datenquellen-Integration. Dieses Tool kombiniert Formularerstellung und Mustererkennung in einer Oberfläche.

Parameter:

  • mode (Zeichenfolge, erforderlich) – Betriebsmodus:

    • "create" – Ein neues Formular mit Mustern und Datenquellen erstellen

    • "list_patterns" – Verfügbare D365-Formularmuster ermitteln

  • formName (Zeichenfolge, optional) – Formularname (erforderlich bei mode='create')

  • patternName (Zeichenfolge, optional) – Anzuwendendes D365-Formularmuster (z. B. 'SimpleListDetails', 'DetailsMaster', 'Dialog')

  • patternVersion (Zeichenfolge, optional) – Musterversion (Standard: 'UX7 1.0')

  • dataSources (Array|Zeichenfolge, optional) – Tabellennamen für Formulardatenquellen

  • modelName (Zeichenfolge, optional) – D365-Modell-/Paketname (Standard: 'ApplicationSuite')

Hauptfunktionen:

  • 🎯 Musterbewusst: Fügt automatisch Feldsteuerelemente hinzu, wenn Muster diese erfordern (z. B. DetailsMaster)

  • 🗄️ Flexible Datenquellen: Unterstützt Arrays, einzelne Zeichenfolgen oder kommagetrennte Zeichenfolgen

  • 🔍 Mustererkennung: Listet alle 36+ verfügbaren D365-Formularmuster mit Beschreibungen auf

  • ✅ Erweiterte Validierung: Behebt Mustervalidierungsprobleme durch intelligente Erstellung von Feldsteuerelementen

Beispiele:

// Discover available patterns
create_form({"mode": "list_patterns"})

// Create simple list form with datasource
create_form({
  "mode": "create",
  "formName": "MyCustomerListForm", 
  "patternName": "SimpleListDetails",
  "dataSources": ["CustTable"]
})

// Create DetailsMaster form with multiple datasources
create_form({
  "mode": "create",
  "formName": "MySalesOrderForm",
  "patternName": "DetailsMaster",
  "patternVersion": "UX7 1.0", 
  "dataSources": ["SalesTable", "SalesLine", "CustTable"],
  "modelName": "MyCustomModel"
})

// Create dialog form without datasources
create_form({
  "mode": "create",
  "formName": "MyConfirmationDialog",
  "patternName": "Dialog"
})

Technische Hinweise:

  • Muster wie DetailsMaster, SimpleListDetails und ListPage werden automatisch um Feldsteuerelemente (RecId, Name, Description, Code) erweitert, wenn Datenquellen angegeben werden

  • Die Mustervalidierung wurde behoben – Formulare können je nach Musteranforderungen mit oder ohne Datenquellen erstellt werden

  • Das Tool verwendet direkte VS2022-Service-Integration für optimale D365-Kompatibilität

delete_xpp_object ✨ NEU

Löscht D365 F&O-Objekte sicher mit umfassender Abhängigkeitsvalidierung und Cache-Konsistenz. Dieses Tool verhindert Breaking Changes, indem es Abhängigkeiten vor dem Löschen validiert.

Parameter:

  • objectName (Zeichenfolge, erforderlich) – Name des zu löschenden D365-Objekts

  • objectType (Zeichenfolge, erforderlich) – D365-Objekttyp (AxClass, AxTable, AxForm, AxEnum usw.)

  • cascadeDelete (Boolescher Wert, optional) – Abhängige Objekte ebenfalls löschen (Standard: false)

Hauptfunktionen:

  • 🛡️ Abhängigkeitsvalidierung: Verhindert das Löschen, wenn andere Objekte vom Zielobjekt abhängen

  • 🗑️ Sicheres Löschen: Verwendet D365s ISingleKeyedMetadataProvider.Delete für eine ordnungsgemäße Bereinigung

  • 🔄 Cache-Konsistenz: Aktualisiert den Suchindex nach erfolgreichem Löschen automatisch

  • ⚡ Schnelle Leistung: Direkte Metadaten-Provider-Integration für optimale Geschwindigkeit

  • 🌲 Kaskadenunterstützung: Optionale Löschung untergeordneter Objekte (Formulare mit Parts/Steuerelementen usw.)

Beispiele:

// Delete a custom class
delete_xpp_object({
  "objectName": "MyCustomClass",
  "objectType": "AxClass"
})

// Delete a table with cascade (removes dependent field groups, relations, etc.)
delete_xpp_object({
  "objectName": "MyTestTable", 
  "objectType": "AxTable",
  "cascadeDelete": true
})

// Delete a form (will fail if dependencies exist without cascade)
delete_xpp_object({
  "objectName": "MyCustomForm",
  "objectType": "AxForm"
})

Antwortformat:

{
  "success": true,
  "message": "Successfully deleted object: MyCustomClass (AxClass)",
  "objectName": "MyCustomClass",
  "objectType": "AxClass",
  "cascadeDelete": false,
  "dependenciesRemoved": [],
  "cacheUpdate": "Success",
  "performance": "156ms"
}

⚠️ Sicherheitshinweise:

  • OPERATION MIT HOHEM RISIKO: Das Löschen ist dauerhaft und kann nicht rückgängig gemacht werden

  • Vor dem Löschen immer Abhängigkeiten mit find_xpp_object überprüfen

  • Für maximale Sicherheit cascadeDelete: false (Standard) verwenden

  • Löschungen zuerst in Entwicklungsumgebungen testen

  • Das Tool schlägt sicher fehl, wenn Abhängigkeiten ohne Kaskaden-Flag vorhanden sind

  • Cache-Aktualisierungen gewährleisten unmittelbare Suchkonsistenz nach dem Löschen

Häufige Objekttypen:

  • AxClass – X++-Klassen und Geschäftslogik

  • AxTable – Datentabellen und Schema

  • AxForm – Benutzeroberflächen-Formulare

  • AxEnum – Enumerationen und Wertelisten

  • AxEdt – Erweiterte Datentypen

  • AxView – Datenbanksichten

  • AxQuery – Datenabfragen

  • AxReport – SSRS-Berichte

Objektermittlung

find_xpp_object

Lokalisierung von X++-Objekten nach Name mit optionaler Filterung.

Parameter:

  • objectName (Zeichenfolge, erforderlich) – Name des X++-Objekts

  • objectType (Zeichenfolge, optional) – Nach Objekttyp filtern

  • model (Zeichenfolge, optional) – Nach D365-Modell-/Paketname filtern

search_objects_pattern

Durchsucht D365-Objekte mit Wildcard-Mustern.

Parameter:

  • pattern (Zeichenfolge, erforderlich) – Suchmuster mit Wildcards (*, ?)

  • objectType (Zeichenfolge, optional) – Nach Objekttyp filtern

  • model (Zeichenfolge, optional) – Nach D365-Modell-/Paketname filtern

  • limit (Zahl, optional) – Maximale Ergebnisse (Standard: 50)

  • format (Zeichenfolge, optional) – Ausgabeformat: 'text' oder 'json'

inspect_xpp_object

Analysiert D365-Objekte mit mehreren Inspektionsmodi.

Parameter:

  • objectName (Zeichenfolge, erforderlich) – Name des X++-Objekts

  • objectType (Zeichenfolge, optional) – D365-Objekttyp

  • inspectionMode (Zeichenfolge, optional) – Inspektionsstufe:

    • summary – Schneller Überblick mit Sammlungszählern

    • properties – Alle Objekteigenschaften mit Beschreibungen

    • collection – Bestimmte Sammlungselemente (erfordert collectionName)

    • xppcode – X++-Quellcode extrahieren (erfordert codeTarget)

  • collectionName (Zeichenfolge, optional) – Erforderlich bei inspectionMode='collection'

  • codeTarget (Zeichenfolge, optional) – Erforderlich bei inspectionMode='xppcode':

    • methods – Quellcode aller Methoden extrahieren

    • specific-method – Einzelne Methode (erfordert methodName)

    • event-handlers – Nur Ereignishandler-Methoden

  • methodName (Zeichenfolge, optional) – Erforderlich bei codeTarget='specific-method'

  • maxCodeLines (Zahl, optional) – Quellcodezeilen pro Methode begrenzen

  • filterPattern (Zeichenfolge, optional) – Wildcard-Filter für Ergebnisse

Beispiele:

// Get object summary
inspect_xpp_object({"objectName": "CustTable", "inspectionMode": "summary"})

// Extract specific method source code
inspect_xpp_object({
  "objectName": "SalesLine", 
  "objectType": "AxTable", 
  "inspectionMode": "xppcode", 
  "codeTarget": "specific-method", 
  "methodName": "validateWrite"
})

Objektänderung

execute_object_modification ✨ ERWEITERT MIT STAPELVERARBEITUNG

Führt Änderungsmethoden an vorhandenen D365-Objekten mit array-basierter Stapelverarbeitung aus. Immer das Array-Format verwenden – Einzeloperationen verwenden ein Array mit einem Element.

📋 BEST PRACTICE: Gruppieren Sie ALLE Änderungen für dasselbe Objekt in EINEM Aufruf, anstatt separate Aufrufe zu tätigen. Dies bietet bessere Leistung, Fehlerbehandlung und transaktionale Integrität.

Parameter:

  • objectType (string, erforderlich) - D365-Objekttyp (z. B. 'AxTable', 'AxClass', 'AxForm')

  • objectName (string, erforderlich) - Name des zu ändernden vorhandenen Objekts

  • modifications (array, erforderlich) - Array von Änderungsoperationen:

    • methodName (string, erforderlich) - Auszuführende Änderungsmethode

    • parameters (object, erforderlich) - Methodenspezifische Parameter, einschließlich:

      • concreteType (string, erforderlich) - Exakter Typ aus discover_modification_capabilities

      • Name (string) - Feld-/Objektname (verwenden Sie 'Name', nicht 'fieldName')

      • Weitere D365-spezifische Parameter nach Bedarf

✅ Features:

  • Verfolgung pro Operation: Jede Operation gibt einen individuellen Erfolgs-/Fehlerstatus zurück

  • Detaillierte Fehlerberichte: Klare Validierungsmeldungen für fehlgeschlagene Operationen

  • Sequentielle Verarbeitung: Operationen werden der Reihe nach mit Zeitinformationen ausgeführt

  • Batch-Effizienz: Mehrere Operationen in einem einzigen Serviceaufruf

Beispiele:

✅ Einzelnes Feld (Array mit einem Element):

execute_object_modification({
  "objectType": "AxTable",
  "objectName": "CustTable",
  "modifications": [
    {
      "methodName": "AddField",
      "parameters": {
        "concreteType": "AxTableFieldString",
        "Name": "MyCustomField",
        "Label": "My Custom Field",
        "HelpText": "Custom field description",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    }
  ]
})

⭐ Mehrere Felder in einem Batch (BEVORZUGT):

execute_object_modification({
  "objectType": "AxTable",
  "objectName": "CustTable",
  "modifications": [
    {
      "methodName": "AddField",
      "parameters": {
        "concreteType": "AxTableFieldString",
        "Name": "CustomerCategory",
        "Label": "Customer Category",
        "HelpText": "Customer classification category",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    },
    {
      "methodName": "AddField", 
      "parameters": {
        "concreteType": "AxTableFieldInt",
        "Name": "CustomerPriority",
        "Label": "Customer Priority",
        "HelpText": "Priority level for customer",
        "SaveContents": "Yes",
        "Mandatory": "No",
        "AllowEditOnCreate": "Yes",
        "AllowEdit": "Yes",
        "Visible": "Yes",
        "AosAuthorization": "None",
        "MinReadAccess": "Auto",
        "IgnoreEDTRelation": "No",
        "Null": "Yes",
        "IsSystemGenerated": "No",
        "IsManuallyUpdated": "No",
        "IsObsolete": "No",
        "GeneralDataProtectionRegulation": "None",
        "SysSharingType": "Duplicate"
      }
    }
  ]
})

📊 Antwortformat: Das Tool gibt detaillierte Ergebnisse pro Operation zurück:

{
  "summary": "2 succeeded, 1 failed (3 total)",
  "targetObject": "AxTable:CustTable",
  "operations": [
    {
      "methodName": "AddField",
      "success": true,
      "processingTime": "371ms",
      "message": "Successfully executed AddField on AxTable:CustTable"
    },
    {
      "methodName": "AddField",
      "success": false,
      "processingTime": "0ms",
      "error": "Parameter validation failed: Missing required parameters"
    }
  ]
}

💡 Tipps:

  • Verwenden Sie zuerst discover_modification_capabilities, um die genauen Parameteranforderungen zu erhalten

  • Alle D365-Tabellenfelder erfordern Parameter wie SaveContents, Mandatory usw.

  • Fassen Sie zusammengehörige Änderungen für eine bessere Leistung zusammen

  • Prüfen Sie die Ergebnisse einzelner Operationen, um fehlgeschlagene Operationen zu debuggen

discover_modification_capabilities

Ermittelt verfügbare Änderungsmethoden für D365-Objekttypen.

Parameter:

  • objectType (string, erforderlich) - Zu analysierender D365-Objekttyp

Systemverwaltung

get_current_config

Gibt umfassende Serverkonfigurations- und Statusinformationen zurück.

build_object_index

Erstellt oder aktualisiert den durchsuchbaren Objektindex.

Parameter:

  • objectType (string, optional) - Bestimmter zu indizierender Objekttyp

  • forceRebuild (boolean, optional) - Vollständigen Neuaufbau erzwingen

Unterstützte Objekttypen

Unterstützte gängige D365-Objekttypen:

  • AxClass - X++-Klassen

  • AxTable - Datentabellen

  • AxForm - Benutzeroberflächenformulare

  • AxEnum - Enumerationen

  • AxEdt - Erweiterte Datentypen

  • AxView - Datenbanksichten

  • AxQuery - Datenabfragen

  • AxReport - SSRS-Berichte

  • AxMenuItemDisplay - Menüelemente

  • AxDataEntityView - OData-Entitäten

Das System unterstützt insgesamt 544+ Objekttypen.

Build-Skripte

Das Skript build-and-run.ps1 bietet eine einheitliche Projektverwaltung:

# Setup VS2022 integration
.\tools\build-and-run.ps1 -Action setup

# Build both TypeScript and C# components
.\tools\build-and-run.ps1 -Action build

# Run the MCP server
.\tools\build-and-run.ps1 -Action run -Target mcp

# Run the C# service
.\tools\build-and-run.ps1 -Action run -Target csharp

# Run tests
.\tools\build-and-run.ps1 -Action test

# Clean builds
.\tools\build-and-run.ps1 -Action clean

Beispielworkflows

Erstellen einer neuen Klasse

# Create a custom class
create_xpp_object {
  "objectName": "MyBusinessLogic",
  "objectType": "AxClass",
  "layer": "usr"
}

# Add a method to the class
execute_object_modification {
  "objectType": "AxClass",
  "objectName": "MyBusinessLogic",
  "methodName": "AddMethod",
  "parameters": {
    "methodName": "processData",
    "returnType": "void",
    "source": "public void processData() { }"
  }
}

Suchen und Analysieren von Objekten

# Find customer-related objects
search_objects_pattern {
  "pattern": "Cust*",
  "objectType": "AxTable",
  "limit": 20
}

# Analyze a specific table
inspect_xpp_object {
  "objectName": "CustTable",
  "objectType": "AxTable",
  "inspectionMode": "summary"
}

# Extract method source code
inspect_xpp_object {
  "objectName": "CustTable",
  "objectType": "AxTable",
  "inspectionMode": "xppcode",
  "codeTarget": "specific-method",
  "methodName": "validateWrite"
}

Technische Details

Leistungsmerkmale

  • Objektindizierung: Verarbeitet 70K+ Objekte in ~30 Sekunden

  • Abfrageantwortzeit: <50ms für die meisten Operationen

  • Suchoperationen: Antwort in unter einer Sekunde für große Codebasen

  • Speichernutzung: Optimiertes SQLite-basiertes Caching

Unterstützte Dateitypen

  • .xpp - X++-Quelldateien

  • .xml - Metadaten- und Konfigurationsdateien

  • .json - Konfigurationsdateien

  • Andere D365-Entwicklungsdateien

Sicherheit

  • Pfadvalidierung verhindert Directory Traversal

  • Operationen sind auf die konfigurierte D365-Codebasis beschränkt

  • Dateigrößenbegrenzungen für das Ressourcenmanagement

  • Eingabevalidierung für alle Parameter

Fehlerbehebung

Häufige Probleme

"VS2022-Erweiterung nicht gefunden"

  • Stellen Sie sicher, dass die Dynamics 365 Development Tools in VS2022 installiert sind

  • Führen Sie das Setup-Skript aus: .\tools\build-and-run.ps1 -Action setup

"Verbindung über Named Pipe fehlgeschlagen"

  • Überprüfen Sie, ob der C#-Dienst ausgeführt wird

  • Überprüfen Sie die Windows-Firewalleinstellungen

  • Stellen Sie sicher, dass .NET Framework 4.8 installiert ist

Fehler "Objekt nicht gefunden"

  • Erstellen Sie den Objektindex: build_object_index

  • Überprüfen Sie die Pfadkonfiguration der D365-Codebasis

  • Überprüfen Sie, ob das Objekt im angegebenen Modell vorhanden ist

"Mustervalidierung fehlgeschlagen" für Formulare

  • ✅ GELÖST: Dieses Problem wurde in der neuesten Version behoben

  • Formulare mit Mustern wie DetailsMaster enthalten jetzt automatisch die erforderlichen Feldsteuerelemente

  • Verwenden Sie für eine bessere Formerstellung das Tool create_form anstelle von create_xpp_object

"Formerstellung ohne Datenquellen schlägt fehl"

  • Die meisten Muster funktionieren ohne Datenquellen einwandfrei (z. B. DetailsMaster, Dialog-Muster)

  • Verwenden Sie create_form mit "mode": "list_patterns", um die Musteranforderungen zu sehen

  • DataSources sind für die meisten Muster optional, verbessern aber die Funktionalität, wenn sie angegeben werden

Hilfe erhalten

  • Prüfen Sie den Ordner logs/ auf detaillierte Fehlerinformationen

  • Verwenden Sie get_current_config, um die Systemkonfiguration zu überprüfen

  • Melden Sie Probleme im GitHub-Repository

Mitwirken

Dieses Projekt freut sich über Beiträge. Bitte:

  1. Forken Sie das Repository

  2. Erstellen Sie einen Feature-Branch

  3. Nehmen Sie Ihre Änderungen mit geeigneten Tests vor

  4. Reichen Sie einen Pull Request ein

Beachten Sie, dass sich APIs im Laufe der Projektentwicklung ändern können.

Lizenz

MIT-Lizenz - Einzelheiten finden Sie in der Datei LICENSE.

Haftungsausschluss

Diese Software wird ohne Gewährleistung "wie besehen" bereitgestellt. Sie ist nur für Forschungs- und Entwicklungszwecke gedacht, nicht für den Produktionseinsatz.

Wichtige Hinweise:

  • Erfordert Visual Studio 2022 und D365-Entwicklungstools

  • Die Integration mit Microsoft-APIs wird nicht offiziell unterstützt

  • Funktionen können sich zwischen Versionen ändern oder brechen

  • Nur auf eigene Gefahr in Entwicklungsumgebungen verwenden

Melden Sie Probleme oder tragen Sie Verbesserungen über das GitHub-Repository bei.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for Microsoft Dynamics 365 Finance & Operations that enables the creation, modification, and analysis of D365 objects like classes, tables, and forms. It integrates with Visual Studio 2022 to provide tools for X++ code extraction, codebase search, and safe object deletion with dependency validation.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables D365 F\&O development including object creation, modification, deletion, and analysis through the MCP standard.
    40
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that integrates with Microsoft Dynamics 365 Business Central, enabling querying of customers, items, and sales orders through natural language commands in Claude Desktop.
    10
    -