MCP ExplorerExplorer

Dataversemcpserver

@bonanip512on 10 months ago
8 MIT
FreeCommunity
AI Systems
A complete Power Platform MCP solution with a Node.js server exposing Dataverse tools via MCP, an HTTP `/invoke` endpoint, and a sleek HTML chatbot UI that accepts natural language queries (e.g. “List fields in Lead”) and routes them to the correct tool. Easily configurable via environment variables.

Overview

What is Dataversemcpserver

DataverseMCPServer is a complete solution for Microsoft Power Platform that provides a Node.js server exposing Dataverse tools via the Model Context Protocol (MCP). It features an HTTP ‘/invoke’ endpoint and a user-friendly HTML chatbot UI that accepts natural language queries.

Use cases

Use cases for DataverseMCPServer include querying entity metadata, retrieving specific records, listing entity attributes, and dynamically generating relationship maps, all through natural language queries.

How to use

To use DataverseMCPServer, clone the repository, install the necessary dependencies, build the TypeScript code, and configure the environment variables with your Power Platform credentials. After setup, you can interact with the server through the chatbot UI or directly via the ‘/invoke’ endpoint.

Key features

Key features include support for 8 core MCP operations, a natural-language front end for easy interaction, environment configuration using variables for credentials, and a simple HTTP server built with Express and CORS for integration.

Where to use

DataverseMCPServer can be used in various fields where Microsoft Power Platform is implemented, including business applications, CRM systems, and data management solutions.

Content

Dataverse MCP Chatbot

A lightweight HTTP wrapper around a Model Context Protocol (MCP) server for Microsoft Power Platform/Dataverse. This project exposes a set of tools via a /invoke REST endpoint and includes a simple HTML chatbot UI that accepts natural-language queries and dynamically routes them to the appropriate MCP tool.


Features

  • MCP Tools: Supports 8 core MCP operations:

    1. use-powerplatform-prompt — Entity overview, attribute details, query templates, relationship maps
    2. get-entity-metadata — Fetch metadata for an entity
    3. get-entity-attributes — List all attributes of an entity
    4. get-entity-attribute — Retrieve a specific attribute definition
    5. get-entity-relationships — One-to-many and many-to-many relationships
    6. get-global-option-set — Global option set definitions
    7. get-record — Fetch a record by GUID
    8. query-records — OData-filtered record queries
  • Natural-Language Front End: HTML + JavaScript UI that parses free-text questions and invokes the correct MCP tool.

  • Environment Configuration: Uses environment variables for all Power Platform credentials.

  • Express + CORS: Simple HTTP server for integration with any front-end.


Prerequisites

  • Node.js >= 16.x

  • A Dataverse / Power Platform environment and service principal (app registration) with:

    • Tenant ID
    • Client (Application) ID
    • Client Secret
    • Organization URL (e.g. https://<yourorg>.crm.dynamics.com)

Installation

  1. Clone the repository

    git clone https://github.com/your-org/powerplatform-mcp-chatbot.git
    cd powerplatform-mcp-chatbot
    
  2. Install dependencies

    npm install
    
  3. Build the TypeScript

    npm run build
    

Configuration

Create a .env file in the project root (or set environment variables in your shell) with:

POWERPLATFORM_URL=https://yourorg.crm.dynamics.com
POWERPLATFORM_CLIENT_ID=your-client-id
POWERPLATFORM_CLIENT_SECRET=your-client-secret
POWERPLATFORM_TENANT_ID=your-tenant-id
PORT=3000           # Optional: HTTP server port

Note: Ensure these values are kept secure and not committed to version control.


Running the Server

After building, start the HTTP wrapper:

node dist/server.js

You should see:

✅ PowerPlatform MCP HTTP server running at http://localhost:3000/invoke

REST Invoke Endpoint

All MCP tools are exposed via a single POST endpoint:

POST http://localhost:3000/invoke
Content-Type: application/json

{
  "tool": "tool-name",
  "parameters": { /* tool-specific parameters */ }
}

Sample Requests

  1. Entity Overview

    curl -X POST http://localhost:3000/invoke \
      -H 'Content-Type: application/json' \
      -d '{"tool":"use-powerplatform-prompt","parameters":{"promptType":"ENTITY_OVERVIEW","entityName":"account"}}'
    
  2. Get Entity Metadata

    curl -X POST http://localhost:3000/invoke \
      -d '{"tool":"get-entity-metadata","parameters":{"entityName":"contact"}}'
    
  3. Query Records

    curl -X POST http://localhost:3000/invoke \
      -d '{"tool":"query-records","parameters":{"entityNamePlural":"contacts","filter":"statecode eq 0","maxRecords":10}}'
    

Refer to the full tool list above for parameter details.


HTML Chatbot UI

A demo front-end is provided in chatbot.html. It listens for natural-language queries, maps them to the correct tool, and displays results inline.

  1. Serve chatbot.html (e.g., open directly in Chrome or host via any static server).

  2. Ask questions such as:

    • “Tell me about the Account entity”
    • “List fields in Lead”
    • “Details of field revenue on Account”
    • “Find active contacts where statecode eq 0”

Troubleshooting

  • CORS Errors: Ensure you run the HTML from a local or hosted file with CORS enabled (the server uses cors() by default).
  • Authentication: Verify your service principal has Dataverse API permissions and the environment URL is correct.
  • Errors: Check console output from server.js for stack traces and error messages.

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers