home / mcp / mcp dataverse server

MCP Dataverse Server

Exposes the Microsoft Dataverse Web API as 50 AI-callable tools to query, create, and manage Dataverse records.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "codeurali-mcp-dataverse": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-dataverse"
      ]
    }
  }
}

You can use this MCP server to access the Microsoft Dataverse Web API through AI-powered tools. It exposes a set of utilities that let you query, create, update, delete, and manage Dataverse records without needing you to memorize complex API calls or schema details. This makes it easier to integrate Dataverse data into code assistants and automation workflows.

How to use

To work with the Dataverse MCP server, you connect your MCP client (such as GitHub Copilot in Agent mode) to the local or remote server using the provided command line or configuration. Once connected, you can perform common Dataverse operations through natural tool prompts. Think in terms of actions like listing tables, retrieving records, creating new entries, updating fields, establishing relationships, and running built-in actions or functions. The tools are designed to cover a wide range of data interactions, so you can build, query, and maintain Dataverse data from within your preferred coding or automation environment.

How to install

Prerequisites you need before installing the MCP server: Node.js 20 or newer, PAC CLI installed and authenticated (Power Apps CLI), and a development environment with VS Code and GitHub Copilot in Agent mode.

Choose one of the installation methods below and follow the steps in order.

One-click (VS Code)

Use the one-click VS Code route to add the MCP server to your environment.

Command line

# VS Code
code --add-mcp '{"name":"mcp-dataverse","command":"npx","args":["-y","mcp-dataverse"]}'

# VS Code Insiders
code-insiders --add-mcp '{"name":"mcp-dataverse","command":"npx","args":["-y","mcp-dataverse"]}'

Manual (mcp.json)

{
  "servers": {
    "dataverse": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-dataverse"]
    }
  }
}

Available tools

dataverse_whoami

Verify connection; returns UserId, BusinessUnitId, OrgId

dataverse_list_tables

List all tables with an optional customOnly filter

dataverse_get_table_metadata

Get full schema for a table including columns and types

dataverse_get_relationships

Retrieve 1:N, N:1, and N:N relationships for a table with optional filters

dataverse_list_global_option_sets

List all global option sets in the environment

dataverse_get_option_set

Show options and values for a specific option set

dataverse_get_entity_key

Retrieve alternate key definitions for a table

dataverse_query

Run an OData query with select, filter, order, expand, and count

dataverse_execute_fetchxml

Return raw FetchXML for aggregations and complex joins

dataverse_retrieve_multiple_with_paging

Paginate through results with next links and a maxTotal cap

dataverse_get

Retrieve a single record by GUID

dataverse_create

Create a new record and return its GUID

dataverse_update

Patch a record with only the specified fields

dataverse_delete

Delete a record with explicit confirmation

dataverse_upsert

Create-or-update via alternate key

dataverse_assign

Assign a record to a different user or team owner

dataverse_associate

Associate two records via a named relationship

dataverse_disassociate

Remove an association between two records

dataverse_execute_action

Execute a global (unbound) Dataverse action

dataverse_execute_function

Execute a global read-only function (e.g. WhoAmI)

dataverse_execute_bound_action

Execute an action bound to a specific record

dataverse_execute_bound_function

Execute an OData bound function on a specific record

dataverse_retrieve_dependencies_for_delete

Check components blocking deletion of a Dataverse component

dataverse_list_dependencies

List component dependencies before modifying or deleting

dataverse_batch_execute

Up to 1000 operations in a single HTTP batch with optional atomic changeset

dataverse_change_detection

Delta tracking using change tokens to detect changes since last sync

dataverse_solution_components

List components in a named solution with optional type filtering

dataverse_publish_customizations

Publish pending customizations for entities, web resources, and option sets

dataverse_impersonate

Execute any tool on behalf of another user via MSCRMCallerId

dataverse_list_custom_actions

List custom actions in the environment

dataverse_list_plugin_steps

List plugin steps registrations with details

dataverse_get_environment_variable

Retrieve an environment variable definition and value

dataverse_set_environment_variable

Set or update an environment variable value

dataverse_get_plugin_trace_logs

Retrieve plugin execution trace logs for debugging

dataverse_get_workflow_trace_logs

Retrieve async workflow and system job logs

dataverse_search

Full-text search across configured tables

dataverse_get_audit_log

Retrieve audit trail for a record

dataverse_detect_duplicates

Check for potential duplicates before creating a record

dataverse_get_annotations

Retrieve notes and file attachments linked to a record

dataverse_list_users

Search system users by name or email with BU filtering

dataverse_get_user_roles

Security roles assigned to a system user

dataverse_create_annotation

Create a note or file attachment linked to a record

dataverse_get_attribute_option_set

Get local/entity option set values like statecode and picklists

dataverse_list_solutions

List all solutions in the environment

dataverse_set_workflow_state

Enable or disable a workflow or process

dataverse_list_views

List system and personal saved views for a table

dataverse_upload_file_column

Upload binary content to a file or image column on a record

dataverse_download_file_column

Download binary content from a file or image column

dataverse_list_business_units

List business units in the environment

dataverse_list_teams

List Dataverse teams with optional filtering by type