Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP X++ Servercreate a form for CustTable using the DetailsMaster pattern"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP X++ Server
A Model Context Protocol (MCP) server for Microsoft Dynamics 365 Finance & Operations development. This tool enables D365 object creation, modification, and analysis through the MCP standard, allowing integration with various development environments.
Date: September 18, 2025
Status: Functional with VS2022 service integration and enhanced form creation
Recent Updates ✨
September 19, 2025 - Safe Object Deletion Feature:
🗑️ NEW delete_xpp_object Tool: Safe D365 object deletion with dependency validation and cascade support
🛡️ Dependency Protection: Prevents deletion if other objects depend on target, avoiding breaking changes
🔄 Cache Consistency: Automatic search index updates after successful deletions
⚡ High Performance: Direct metadata provider integration with ISingleKeyedMetadataProvider.Delete
🌲 Cascade Deletion: Optional deletion of child objects (form parts, table relations, etc.)
✅ Comprehensive Testing: Full create/delete cycle validation across object types
September 18, 2025 - Array Modifications & Form Creation Enhancements:
🚀 NEW Array-Only Modifications:
execute_object_modificationnow exclusively uses batch format for consistent operations🔄 Enforced Bulk Processing: Single operations use array with one element - no more consecutive separate calls
📊 Enhanced Response Tracking: Per-operation success/failure reporting with detailed timing and error messages
📋 Best Practice Documentation: Clear guidance to group all modifications for same object into single call
🎯 NEW create_form Tool: Specialized form creation with pattern support and datasource integration
🔧 DetailsMaster Pattern Fixed: Resolved validation issues through intelligent field control creation
🗄️ Enhanced DataSource Support: Flexible datasource handling (arrays, strings, comma-separated)
📋 Pattern Discovery: 36 filtered form patterns with descriptions and requirements
✅ Pattern Validation: Automatic field control creation for patterns requiring them
Overview
This MCP server provides D365 F&O development capabilities including:
Object Creation: Support for D365 classes, tables, forms, enums, and 544+ other object types
Form Creation: ✨ Enhanced - Specialized form creation with pattern validation and datasource integration
Object Deletion: ✨ NEW - Safe object deletion with dependency validation and cascade support
Object Modification: Add methods, fields, and other components to existing objects
Object Inspection: Analyze D365 objects and extract X++ source code
Codebase Search: Browse and search through D365 codebases with pattern matching
MCP Protocol: Compatible with Claude Desktop, VS Code, and other MCP clients
Architecture
The system consists of two main components communicating through Windows Named Pipes:
MCP X++ Server (Node.js/TypeScript)
Implements the Model Context Protocol (STDIO)
Handles object creation, modification, and search operations
Provides file browsing and codebase indexing
Compatible with MCP clients like Claude Desktop and VS Code
D365 Metadata Service (C# .NET 4.8)
Integrates with Microsoft's D365 assemblies
Handles object creation and modification through VS2022 APIs
Provides dynamic reflection for runtime object discovery
Communicates via Named Pipe:
mcp-xpp-d365-service
The architecture enables D365 development from various MCP-compatible clients while maintaining compatibility with existing D365 development workflows.
Available Tools
The server provides 10 specialized tools for D365 development:
create_xpp_object - Create D365 objects (classes, tables, enums, etc.) - Note: Use create_form for forms
create_form - ✨ NEW - Specialized form creation with pattern support and datasource integration
delete_xpp_object - ✨ NEW - Safe D365 object deletion with dependency validation and cache consistency
execute_object_modification - ✨ ENHANCED - Array-based object modification with batch processing - BEST PRACTICE: Group all modifications for same object
discover_modification_capabilities - Explore available modification methods
find_xpp_object - Find specific objects by name/type
search_objects_pattern - Pattern search with wildcard support
inspect_xpp_object - Object analysis with X++ source code extraction
get_current_config - System configuration and status
build_object_index - Index management for search performance
Prerequisites
Visual Studio 2022 (Community, Professional, or Enterprise)
Dynamics 365 Development Tools for Visual Studio 2022
Node.js (latest LTS version recommended)
.NET Framework 4.8 (typically included with Windows)
Installation
Clone the repository
Install Node.js dependencies:
npm installRun setup to configure VS2022 integration:
.\tools\build-and-run.ps1 -Action setupBuild the project:
.\tools\build-and-run.ps1 -Action build
Usage
Starting the Server
Run the MCP server using:
The server automatically detects D365 paths from your VS2022 installation. For manual configuration, use:
MCP Client Configuration
VS Code
Configure in .vscode/mcp.json:
Claude Desktop
Add to Claude Desktop configuration file:
Tool Reference
Object Creation
create_xpp_object
Creates D365 F&O objects using VS2022 service integration.
⚠️ Important: For creating forms, use the dedicated create_form tool instead as it provides specialized pattern support and datasource integration.
Parameters:
objectName(string) - Name of the D365 objectobjectType(string) - Object type (AxClass, AxTable, AxEnum, etc.) - Excludes AxFormlayer(string, optional) - Application layer (usr, cus, var)outputPath(string, optional) - Output directory (default: "Models")publisher(string, optional) - Company name (default: "YourCompany")version(string, optional) - Version number (default: "1.0.0.0")dependencies(array, optional) - Model dependenciesproperties(object, optional) - Object-specific configuration
Example:
create_form ✨ NEW
Specialized tool for creating D365 forms with advanced pattern support and datasource integration. This tool combines form creation and pattern discovery in one interface.
Parameters:
mode(string, required) - Operation mode:"create"- Create a new form with patterns and datasources"list_patterns"- Discover available D365 form patterns
formName(string, optional) - Form name (required when mode='create')patternName(string, optional) - D365 form pattern to apply (e.g., 'SimpleListDetails', 'DetailsMaster', 'Dialog')patternVersion(string, optional) - Pattern version (default: 'UX7 1.0')dataSources(array|string, optional) - Table names for form datasourcesmodelName(string, optional) - D365 model/package name (default: 'ApplicationSuite')
Key Features:
🎯 Pattern-Aware: Automatically adds field controls when patterns require them (e.g., DetailsMaster)
🗄️ Flexible DataSources: Supports arrays, single strings, or comma-separated strings
🔍 Pattern Discovery: Lists all 36+ available D365 form patterns with descriptions
✅ Enhanced Validation: Resolves pattern validation issues through intelligent field control creation
Examples:
Technical Notes:
Patterns like DetailsMaster, SimpleListDetails, and ListPage automatically get enhanced with field controls (RecId, Name, Description, Code) when datasources are provided
Pattern validation has been fixed - forms can be created with or without datasources depending on pattern requirements
The tool uses direct VS2022 service integration for optimal D365 compatibility
delete_xpp_object ✨ NEW
Safely deletes D365 F&O objects with comprehensive dependency validation and cache consistency. This tool prevents breaking changes by validating dependencies before deletion.
Parameters:
objectName(string, required) - Name of the D365 object to deleteobjectType(string, required) - D365 object type (AxClass, AxTable, AxForm, AxEnum, etc.)cascadeDelete(boolean, optional) - Delete dependent objects too (default: false)
Key Features:
🛡️ Dependency Validation: Prevents deletion if other objects depend on the target
🗑️ Safe Deletion: Uses D365's ISingleKeyedMetadataProvider.Delete for proper cleanup
🔄 Cache Consistency: Automatically updates search index after successful deletion
⚡ Fast Performance: Direct metadata provider integration for optimal speed
🌲 Cascade Support: Optional deletion of child objects (forms with parts/controls, etc.)
Examples:
Response Format:
⚠️ Safety Notes:
HIGH RISK OPERATION: Deletion is permanent and cannot be undone
Always verify dependencies with
find_xpp_objectbefore deletionUse
cascadeDelete: false(default) for maximum safetyTest deletions in development environments first
Tool will fail safely if dependencies exist without cascade flag
Cache updates ensure immediate search consistency after deletion
Common Object Types:
AxClass- X++ classes and business logicAxTable- Data tables and schemaAxForm- User interface formsAxEnum- Enumerations and value listsAxEdt- Extended data typesAxView- Database viewsAxQuery- Data queriesAxReport- SSRS reports
Object Discovery
find_xpp_object
Locates X++ objects by name with optional filtering.
Parameters:
objectName(string, required) - Name of the X++ objectobjectType(string, optional) - Filter by object typemodel(string, optional) - Filter by D365 model/package name
search_objects_pattern
Searches D365 objects using wildcard patterns.
Parameters:
pattern(string, required) - Search pattern with wildcards (*, ?)objectType(string, optional) - Filter by object typemodel(string, optional) - Filter by D365 model/package namelimit(number, optional) - Maximum results (default: 50)format(string, optional) - Output format: 'text' or 'json'
inspect_xpp_object
Analyzes D365 objects with multiple inspection modes.
Parameters:
objectName(string, required) - Name of the X++ objectobjectType(string, optional) - D365 object typeinspectionMode(string, optional) - Inspection level:summary- Fast overview with collection countsproperties- All object properties with descriptionscollection- Specific collection items (requires collectionName)xppcode- Extract X++ source code (requires codeTarget)
collectionName(string, optional) - Required when inspectionMode='collection'codeTarget(string, optional) - Required when inspectionMode='xppcode':methods- Extract all method source codespecific-method- Single method (requires methodName)event-handlers- Event handler methods only
methodName(string, optional) - Required when codeTarget='specific-method'maxCodeLines(number, optional) - Limit lines of source code per methodfilterPattern(string, optional) - Wildcard filter for results
Examples:
Object Modification
execute_object_modification ✨ ENHANCED WITH BATCH PROCESSING
Executes modification methods on existing D365 objects with array-based batch processing. Always use array format - single operations use array with one element.
📋 BEST PRACTICE: Group ALL modifications for the same object into ONE call instead of making separate calls. This provides better performance, error handling, and transactional integrity.
Parameters:
objectType(string, required) - D365 object type (e.g., 'AxTable', 'AxClass', 'AxForm')objectName(string, required) - Name of existing object to modifymodifications(array, required) - Array of modification operations:methodName(string, required) - Modification method to executeparameters(object, required) - Method-specific parameters including:concreteType(string, required) - Exact type from discover_modification_capabilitiesName(string) - Field/object name (use 'Name' not 'fieldName')Other D365-specific parameters as required
✅ Features:
Per-operation tracking: Each operation returns individual success/failure status
Detailed error reporting: Clear validation messages for failed operations
Sequential processing: Operations execute in order with timing information
Batch efficiency: Multiple operations in single service call
Examples:
✅ Single field (array with one element):
⭐ Multiple fields in one batch (PREFERRED):
📊 Response Format: The tool returns detailed per-operation results:
💡 Tips:
Use
discover_modification_capabilitiesfirst to get exact parameter requirementsAll D365 table fields require parameters like
SaveContents,Mandatory, etc.Group related modifications together for better performance
Check individual operation results for debugging failed operations
discover_modification_capabilities
Discovers available modification methods for D365 object types.
Parameters:
objectType(string, required) - D365 object type to analyze
System Management
get_current_config
Returns comprehensive server configuration and status information.
build_object_index
Builds or updates the searchable object index.
Parameters:
objectType(string, optional) - Specific object type to indexforceRebuild(boolean, optional) - Force complete rebuild
Supported Object Types
Common D365 object types supported:
AxClass - X++ classes
AxTable - Data tables
AxForm - User interface forms
AxEnum - Enumerations
AxEdt - Extended data types
AxView - Database views
AxQuery - Data queries
AxReport - SSRS reports
AxMenuItemDisplay - Menu items
AxDataEntityView - OData entities
The system supports 544+ object types total.
Build Scripts
The build-and-run.ps1 script provides unified project management:
Example Workflows
Creating a New Class
Searching and Analyzing Objects
Technical Details
Performance Characteristics
Object indexing: Processes 70K+ objects in ~30 seconds
Query response time: <50ms for most operations
Search operations: Sub-second response for large codebases
Memory usage: Optimized SQLite-based caching
File Type Support
.xpp- X++ source files.xml- Metadata and configuration files.json- Configuration filesOther D365 development files
Security
Path validation prevents directory traversal
Operations restricted to configured D365 codebase
File size limits for resource management
Input validation on all parameters
Troubleshooting
Common Issues
"VS2022 extension not found"
Ensure Dynamics 365 Development Tools are installed in VS2022
Run the setup script:
.\tools\build-and-run.ps1 -Action setup
"Named pipe connection failed"
Check that the C# service is running
Verify Windows firewall settings
Ensure .NET Framework 4.8 is installed
"Object not found" errors
Build the object index:
build_object_indexVerify D365 codebase path configuration
Check that the object exists in the specified model
"Pattern validation failed" for forms
✅ RESOLVED: This issue has been fixed in the latest version
Forms with patterns like DetailsMaster now automatically include required field controls
Use the
create_formtool instead ofcreate_xpp_objectfor better form creation
"Form creation without datasources fails"
Most patterns work fine without datasources (e.g., DetailsMaster, Dialog patterns)
Use
create_formwith"mode": "list_patterns"to see pattern requirementsDataSources are optional for most patterns but enhance functionality when provided
Getting Help
Check the
logs/folder for detailed error informationUse
get_current_configto verify system configurationReport issues on the GitHub repository
Contributing
This project welcomes contributions. Please:
Fork the repository
Create a feature branch
Make your changes with appropriate tests
Submit a pull request
Note that APIs may change as the project evolves.
License
MIT License - see LICENSE file for details.
Disclaimer
This software is provided "as is" without warranty. It is intended for research and development purposes only, not for production use.
Important Notes:
Requires Visual Studio 2022 and D365 development tools
Integration with Microsoft APIs is not officially supported
Features may change or break between versions
Use at your own risk in development environments only
Report issues or contribute improvements through the GitHub repository.