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

Ü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_formNEU

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_objectNEU

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_modificationERWEITERT 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.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Official Microsoft MCP Server to query Microsoft Entra data using natural language

  • Augments MCP Server - A comprehensive framework documentation provider for Claude Code

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

View all MCP Connectors

Latest Blog Posts

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/masoniqbal777/Mcp-Xpp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server