PowerPlatform Dataverse

PowerPlatform Dataverse

michsob

Connects to Microsoft PowerPlatform/Dataverse to query entity data, explore metadata, and understand relationships using OData queries.

Integrates with Microsoft PowerPlatform/Dataverse to enable intelligent access to entity metadata, attributes, relationships, and records with support for OData queries and context-rich prompts for data modeling and exploration.

29661 views16Local (stdio)

What it does

  • Query Dataverse entities with OData filters
  • Explore entity metadata and attributes
  • Map relationships between entities
  • Access global option sets
  • Build AI-assisted queries
  • Visualize data model structures

Best for

PowerPlatform developers building solutionsData analysts exploring Dataverse schemasBusiness analysts understanding entity relationshipsTeams migrating or integrating with Dynamics 365
Context-aware AI assistance for queriesComprehensive relationship mappingAdvanced OData query support

About PowerPlatform Dataverse

PowerPlatform Dataverse is a community-built MCP server published by michsob that provides AI assistants with tools and capabilities via the Model Context Protocol. Integrate with Microsoft Dataverse to access entities, attributes, and relationships for advanced data modeling and expl It is categorized under databases, ai ml.

How to install

You can install PowerPlatform Dataverse in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

License

PowerPlatform Dataverse is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

MseeP.ai Security Assessment Badge

PowerPlatform MCP Server

A Model Context Protocol (MCP) server that provides intelligent access to PowerPlatform/Dataverse entities and records. This tool offers context-aware assistance, entity exploration and metadata access.

PowerPlatform MCP server

Key features:

  • Rich entity metadata exploration with formatted, context-aware prompts
  • Advanced OData query support with intelligent filtering
  • Comprehensive relationship mapping and visualization
  • AI-assisted query building and data modeling through AI agent
  • Full access to entity attributes, relationships, and global option sets

Installation

You can install and run this tool in two ways:

Option 1: Install globally

npm install -g powerplatform-mcp

Then run it:

powerplatform-mcp

Option 2: Run directly with npx

Run without installing:

npx powerplatform-mcp

Configuration

Before running, set the following environment variables:

# PowerPlatform/Dataverse connection details
POWERPLATFORM_URL=https://yourenvironment.crm.dynamics.com
POWERPLATFORM_CLIENT_ID=your-azure-app-client-id
POWERPLATFORM_CLIENT_SECRET=your-azure-app-client-secret
POWERPLATFORM_TENANT_ID=your-azure-tenant-id

For Development

  1. Clone the repository and install dependencies:

    git clone https://github.com/michsob/powerplatform-mcp.git
    cd powerplatform-mcp
    npm install
    
  2. Copy .env.example to .env and fill in your credentials:

    cp .env.example .env
    
  3. Build and test:

    npm run build
    npm run inspector:debug
    

Usage

This is an MCP server designed to work with MCP-compatible clients like Cursor, Claude App and GitHub Copilot. Once running, it will expose tools for retrieving PowerPlatform entity metadata and records.

Available Tools

  • get-entity-metadata: Get metadata about a PowerPlatform entity
  • get-entity-attributes: Get attributes/fields of a PowerPlatform entity
  • get-entity-attribute: Get a specific attribute/field of a PowerPlatform entity
  • get-entity-relationships: Get relationships for a PowerPlatform entity
  • get-global-option-set: Get a global option set definition
  • get-record: Get a specific record by entity name and ID
  • query-records: Query records using an OData filter expression
  • use-powerplatform-prompt: Use pre-defined prompt templates for PowerPlatform entities

MCP Prompts

The server includes a prompts feature that provides formatted, context-rich information about PowerPlatform entities.

Available Prompt Types

The use-powerplatform-prompt tool supports the following prompt types:

  1. ENTITY_OVERVIEW: Comprehensive overview of an entity
  2. ATTRIBUTE_DETAILS: Detailed information about a specific entity attribute
  3. QUERY_TEMPLATE: OData query template for an entity with example filters
  4. RELATIONSHIP_MAP: Visual map of entity relationships

Examples

Entity Overview Prompt

// Example client code
await mcpClient.invoke("use-powerplatform-prompt", {
  promptType: "ENTITY_OVERVIEW",
  entityName: "account"
});

Output:

## Power Platform Entity: account

This is an overview of the 'account' entity in Microsoft Power Platform/Dataverse:

### Entity Details
- Display Name: Account
- Schema Name: Account
- Description: Business that represents a customer or potential customer
- Primary Key: accountid
- Primary Name: name

### Key Attributes
- name: String (Account Name)
- emailaddress1: String (Email)
- telephone1: String (Main Phone)
- address1_city: String (City)
- statecode: Status (Status)
- accountnumber: String (Account Number)
- industrycode: OptionSetValue (Industry)
- revenue: Money (Annual Revenue)
- ownerid: Owner (Owner)
- createdon: DateTime (Created On)

### Relationships
- One-to-Many Relationships: 42
- Many-to-Many Relationships: 8

You can query this entity using OData filters against the plural name.

Attribute Details Prompt

await mcpClient.invoke("use-powerplatform-prompt", {
  promptType: "ATTRIBUTE_DETAILS",
  entityName: "account",
  attributeName: "revenue"
});

Output:

## Attribute: revenue

Details for the 'revenue' attribute of the 'account' entity:

- Display Name: Annual Revenue
- Description: Annual revenue for the account
- Type: Money
- Format: Currency
- Is Required: No
- Is Searchable: true

### Usage Notes
- Data Type: Money
- Required: No
- Max Length: N/A

Query Template Prompt

await mcpClient.invoke("use-powerplatform-prompt", {
  promptType: "QUERY_TEMPLATE",
  entityName: "account"
});

Output:

## OData Query Template for accounts

Use this template to build queries against the accounts entity:
accounts?$select=name,emailaddress1,telephone1, address1_city,statecode&$filter=name eq 'Example'&$orderby=name asc&$top=50

Common Filter Examples

  • Equals: name eq 'Contoso'
  • Contains: contains(name, 'Contoso')
  • Greater than date: createdon gt 2023-01-01T00:00:00Z
  • Multiple conditions: name eq 'Contoso' and statecode eq 0

#### Relationship Map Prompt

```javascript
await mcpClient.invoke("use-powerplatform-prompt", {
  promptType: "RELATIONSHIP_MAP",
  entityName: "contact"
});

Output:

## Relationship Map for contact

This shows all relationships for the 'contact' entity:

### One-to-Many Relationships (contact as Primary)
- contact_activity_parties: contact (1) → activityparty (N)
- contact_connections1: contact (1) → connection (N)
- contact_connections2: contact (1) → connection (N)
- contact_customer_contacts: contact (1) → contact (N)
- contact_master_contact: contact (1) → contact (N)

### One-to-Many Relationships (contact as Related)
- account_primary_contact: account (1) → contact (N)
- customer_contacts: customer (1) → contact (N)
- system_user_contacts: systemuser (1) → contact (N)

### Many-to-Many Relationships
- contactleads_association: contact (N) ↔ lead (N)
- contactopportunities_association: contact (N) ↔ opportunity (N)
- contactquotes_association: contact (N) ↔ quote (N)

Prompt Examples

Here are some examples of how you can interact with assistant using the PowerPlatform MCP prompts:

1. Entity Understanding

You can ask assistant about entities in natural language:

User: "Tell me about the Account entity in our PowerPlatform environment"

Response:
[uses ENTITY_OVERVIEW prompt internally]

Here's what I found about the Account entity:
- It's a core business entity representing customers and potential customers
- The primary identifier is 'accountid' and the primary name field is 'name'
- Key fields include:
  * name (Account Name)
  * emailaddress1 (Email)
  * telephone1 (Main Phone)
  * revenue (Annual Revenue)
- It has 42 one-to-many relationships and 8 many-to-many relationships

2. Building Queries

You can ask for help constructing queries:

User: "Help me write a query to find active accounts with revenue over $1M in California"

Response:
[uses QUERY_TEMPLATE prompt internally]

Here's the OData query you need:
accounts?$select=name,revenue,statecode,address1_stateorprovince
&$filter=statecode eq 0 
    and revenue gt 1000000 
    and address1_stateorprovince eq 'California'
&$orderby=revenue desc

This query:
1. Selects relevant fields
2. Filters for active accounts (statecode eq 0)
3. Checks revenue > $1M
4. Filters for California location
5. Orders by revenue highest to lowest

3. Understanding Relationships

You can explore entity relationships naturally:

User: "How are Accounts and Contacts related in our system?"

Response:
[uses RELATIONSHIP_MAP prompt for both entities internally]

Here are the key relationships between Accounts and Contacts:

1. Primary Contact (One-to-Many):
   - account_primary_contact: Account (1) → Contact (N)
   - An account can have many contacts, but one designated as primary

2. Customer Relationship:
   - contact_customer_accounts: Contact (N) ← Account (1)
   - Contacts can be associated with customer accounts

3. Additional Relationships:
   - accountleads_association: For lead tracking
   - account_connections: For relationship management

4. Field/Attribute Investigation

You can ask about specific fields:

User: "What kind of field is the revenue field on Account?"

Response:
[uses ATTRIBUTE_DETAILS prompt internally]

The revenue field on Account is:
- Data Type: Money
- Format: Currency
- Not required
- Searchable: Yes
- Used for: Tracking annual revenue for the account
- Can be used in advanced find and filtered views

5. Complex Data Modeling

You can get help with data modeling decisions:

User: "I need to design a solution for tracking product reviews. Which entities should I relate to?"

Response:
[uses multiple ENTITY_OVERVIEW and RELATIONSHIP_MAP prompts internally]

Based on the existing data model, here's a suggested approach:

1. Product (existing entity):
   - Already has relationships with:
     * Price lists
     * Product categories
     * Inventory units

2. New Review entity should relate to:
   - Product (N:1) - Each review is for one product
   - Contact (N:1) - Reviews are written by contacts
   - Account (N:1) - Optional link to company if B2B review




These examples show how AI assistant can leverage the MCP prompts to provide context-aware, accurate assistance for PowerPlatform development tasks. The AI understands your environment's specific configuration and can help with both simple queries and complex architectural decisions.

## License

MIT

Alternatives

Related Skills

Browse all skills
literature-review

Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).

377
postgresql-psql

Comprehensive guide for PostgreSQL psql - the interactive terminal client for PostgreSQL. Use when connecting to PostgreSQL databases, executing queries, managing databases/tables, configuring connection options, formatting output, writing scripts, managing transactions, and using advanced psql features for database administration and development.

38
fullstack-developer

Modern web development expertise covering React, Node.js, databases, and full-stack architecture. Use when: building web applications, developing APIs, creating frontends, setting up databases, deploying web apps, or when user mentions React, Next.js, Express, REST API, GraphQL, MongoDB, PostgreSQL, or full-stack development.

11
supabase-rls-policy-generator

This skill should be used when the user requests to generate, create, or add Row-Level Security (RLS) policies for Supabase databases in multi-tenant or role-based applications. It generates comprehensive RLS policies using auth.uid(), auth.jwt() claims, and role-based access patterns. Trigger terms include RLS, row level security, supabase security, generate policies, auth policies, multi-tenant security, role-based access, database security policies, supabase permissions, tenant isolation.

10
notion

Notion workspace integration. Use when user wants to read/write Notion pages, search databases, create tasks, or sync content with Notion.

10
biomni

Autonomous biomedical AI agent framework for executing complex research tasks across genomics, drug discovery, molecular biology, and clinical analysis. Use this skill when conducting multi-step biomedical research including CRISPR screening design, single-cell RNA-seq analysis, ADMET prediction, GWAS interpretation, rare disease diagnosis, or lab protocol optimization. Leverages LLM reasoning with code execution and integrated biomedical databases.

9