Dataverse MCP Server - Advanced MCP Features Showcase
This repository demonstrates a sophisticated Model Context Protocol (MCP) Server that integrates with Microsoft Dataverse and showcases advanced MCP capabilities beyond basic tool execution. Features include intelligent data visualization through Chart.js report generation.
Key MCP Features Implemented
🔄 MCP Elicitation
The server prompts users to choose between receiving raw JSON or saving results as formatted resources.
🧠 MCP Sampling
Data transformation by internal calls to the LLM - sampling - to convert raw Dataverse JSON responses into user-friendly formats including markdown tables and interactive Chart.js visualizations.
📁 MCP Resources
Dynamic resource creation that stores transformed data as accessible resources available from the MCP Server. Supports both markdown documents and interactive HTML reports viewable in browsers.
📊 MCP Progress
Real-time progress notifications during bulk operations (e.g., creating multiple contact records, generating reports) with status updates and completion tracking.
How It Works
Data Retrieval & Resource Creation
- Query Execution: Execute FetchXML queries against Dataverse using the
ExecuteFetchtool - Smart Result Handling: MCP Elicitation prompts user to save results as resources
- Data Transformation: MCP Sampling transforms JSON to markdown tables
- Resource Creation: Formatted data saved as MCP Resource with descriptive metadata
Report Generation
- Data Input: Provide FetchXML query or CSV data via
CreateReportFromQueryorCreateReportFromData - Chart Generation: MCP Sampling generates Chart.js code based on data and report requirements
- Template Processing: LLM-generated code inserted into HTML template with custom headings
- HTTP Serving: Interactive reports accessible at
http://localhost:3001/dynamic/{filename}.html
Available MCP Tools
Data Operations
- ExecuteFetch: FetchXML query execution with smart result handling
- WhoAmI: Dataverse identity verification
- BulkCreateRandomContacts: Bulk data creation with progress tracking
Report Generation
- CreateReportFromQuery: Generate Chart.js visualizations from FetchXML queries
- CreateReportFromData: Create Chart.js reports from CSV data with custom headings
Resource Management
- CreateTextResource: Basic resource creation for any text content
Demo
This video demonstrates VS Code using this MCP Server to:
- Retrieve Dataverse data through FetchXML queries
- Transform large result sets into
Markdownformatted resources - Optional adding of resources to the AI context window for enhanced conversations
This video demonstrates the report generation functionality:
- Retrieve Dataverse data through FetchXML queries and make them available as MCP Resources.
- Converting the result to a Chart.js visualization, using natural language.
Technical Implementation
Built with:
- ASP.NET Core and .NET 9.0
- C# MCP SDK for protocol implementation
- Microsoft.PowerPlatform.Dataverse.Client for Dataverse integration
- ModelContextProtocol.AspNetCore v0.3.0-preview.3
- Chart.js for interactive data visualizations via template-based generation
Getting Started
- Clone the repository
- Copy
appsettings.jsontoappsettings.local.jsonand configure Dataverse credentials - Run:
dotnet run --project MyDataverseMcpServer --environment Development - Server runs on
http://localhost:3001