Greg.Xrm.Mcp.AppMaker
1.2025.9.19
dotnet tool install --global Greg.Xrm.Mcp.AppMaker --version 1.2025.9.19
dotnet new tool-manifest
dotnet tool install --local Greg.Xrm.Mcp.AppMaker --version 1.2025.9.19
#tool dotnet:?package=Greg.Xrm.Mcp.AppMaker&version=1.2025.9.19
nuke :add-package Greg.Xrm.Mcp.AppMaker --version 1.2025.9.19
๐ Greg.Xrm.Mcp
A Comprehensive Framework for Building Model Context Protocol (MCP) Servers for Microsoft Dataverse
๐๏ธ Vision
Transform your Dataverse development experience with AI-powered tools that understand your business context. Greg.Xrm.Mcp is a foundational framework designed to revolutionize how developers interact with Microsoft Dataverse through intelligent MCP-enabled AI assistants (VS Code Copilot MCP extension, Claude Desktop, and other MCP clients).
โถ๏ธ Check-out this video showcasing the tool in action.
๐๏ธ Framework Architecture
At its core, Greg.Xrm.Mcp provides a robust foundation for building specialized MCP servers that seamlessly integrate with Dataverse ecosystems:
Greg.Xrm.Mcp.Core - The Foundation
- ๐ Unified Authentication: Standardized Dataverse connection and token management
- ๐ง Common Services: Reusable components for metadata, queries, and operations
- ๐ MCP Integration: Built-in Model Context Protocol server capabilities (stdio-based and sse-based)
- ๐ก๏ธ Error Handling: Comprehensive error management and structured logging
- โก Performance: Optimized for real-time AI assistant interactions
โ Current Capabilities (AppMaker Server)
The flagship implementation Greg.Xrm.Mcp.AppMaker currently offers:
- ๐ ๏ธ Tools
- ๐ฆ Dataverse Metadata Access:
- ๐ List all tables in a given environment
- ๐ List all columns of a given table
- ๐ฆ System Form Manipulation:
- ๐ Form Inventory: List all forms for a Dataverse table (formatted text or JSON)
- ๐งฌ Form Definition Retrieval: Fetch form definition (XML or JSON) with metadata
- ๐งน Form Updater: Updates the structure of a form using AI-generated layout (LLM-assisted, non-deterministic)
- โ FormXML Validation: Validate FormXML structure and report issues
- ๐ฆ Saved Query (view) Management:
- ๐ Saved Query Inventory: List all saved queries for a table (formatted text or JSON)
- ๐งฌ Saved Query Definition Retrieval: Fetch saved query definition (both FetchXML and LayoutXML)
- ๐งน Saved Query Updater: Updates the structure of a view using AI-generated layout and filters (LLM-assisted, non-deterministic)
- ๐งน Saved Query Maker: Creates new views using AI-generated layout and filters (LLM-assisted, non-deterministic)
- ๐ Saved Query Renamer: Allows to change the name of an existing view
- ๐ฆ AppModules and Sitemaps
- ๐งญ App Module Inventory: Enumerate all model-driven apps with version, managed status, default flag, configuration XML, and associated security roles
- โ Add/Remove App Components: Adds or removes table definitions from an app.
- ๐งน Create new AppModules: Creates new Apps, with tables and sitemap.
- โ AppModule Validation: Validate the structure and contents of given AppModule and report issues
- ๐งฌ Sitemap Definition Retrieval: retrieves the XML defining the structure of a given app Sitemap
- ๐งน Sitemap Updater: Updates the structure of a form using AI-generated layout (LLM-assisted, non-deterministic)
- ๐ฆ Dataverse Metadata Access:
- ๐ Resources
docs://instructions_for_formxml
: Instructions to be aware of when manipulating Dataverse FormXmlschema://formxml
: Returns a set of Xml schemas defining the structure of Dataverse forms.schema://layoutxml
: Returns the XML schema describing the structure of Dataverse views in terms of columns.schema://fetchxml
: Returns the XML schema of the query that runs Dataverse views.schema://sitemapxml
: Returns a set of Xml schemas defining the structure of Dataverse sitemap (navigation bar), and instructions on how to properly generate a SiteMap XML document.
๐ MCP Usage
The server runs as a Model Context Protocol (stdio) endpoint. You can connect via:
- VS Code (GitHub Copilot MCP extension)
- Claude Desktop (custom MCP server config)
Installation
dotnet tool install --global Greg.Xrm.Mcp.AppMaker
VS Code (.vscode/mcp.json snippet)
{
"servers": {
"AppMaker": {
"command": "Greg.Xrm.Mcp.AppMaker",
"args": [
"--dataverseUrl",
"https://yourorg.crm.dynamics.com"
],
"cwd": "${workspaceFolder}"
}
}
}
Claude Desktop (config fragment)
{
"mcpServers": {
"AppMaker": {
"command": "Greg.Xrm.Mcp.AppMaker",
"args": [
"--dataverseUrl",
"https://yourorg.crm.dynamics.com"
],
}
}
}
๐ Authentication
The tool uses OAuth authentication to connect to Dataverse. You can simply provide your Dataverse URL as a command-line argument, as described above.
The tool will then prompt you to authenticate via a browser window. The authentication is managed by official Microsoft.PowerPlatform.Dataverse.Client
library.
Authentication tokens are cached locally for reuse.
๐ค Contributing
We welcome contributions:
- ๐ Bug reports & feature requests
- ๐งฉ New specialized MCP servers
- ๐ Documentation improvements
- ๐ ๏ธ Core enhancements / performance tuning
๐ท๏ธ License
This project is licensed under the terms specified in the LICENSE file.
๐ณ๏ธ Important Disclaimer ๐ณ๏ธ
- The toolset is in preview and provided as-is.
- Always export / backup solutions before applying modifications.
- LLM-assisted operations (form editing/cleanup) are inherently non-deterministic.
- Read-only tools (listing & inspection) are safe for production observation.
- The author is not responsible for misuse leading to unintended customization changes.
Made with โค๏ธ for the Power Platform community.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last Updated |
---|---|---|
1.2025.9.19 | 84 | 9/26/2025 |
1.2025.9.16 | 200 | 9/14/2025 |
1.2025.9.15 | 115 | 9/14/2025 |