Labsco
MCP SERVER

MCP Dataverse

by codeurali

79 tools over Microsoft Dataverse — real schema and metadata, CRUD, FetchXML, RBAC, solutions, plugin traces — with three auth modes.

Relational SQL Databases
Summary
Managed identity is the mode that makes this deployable.

Most Dataverse integrations ask for a client secret. Here the Azure-hosted path uses managed identity with no secret at all, and the local path caches an encrypted device-code token — so the credential story scales from a laptop to a pipeline without downgrading. Everything about the tool design points the same way: `{summary, data, suggestions}` on every response, atomic tools rather than one god-tool, and confirmation required before anything destructive.

What it is

An MCP server that gives an agent live access to a Microsoft Dataverse environment so it stops guessing at schema, column names and OData syntax. Coverage runs from metadata and queries through to security roles, environment variables and plugin trace logs. Every tool name is prefixed `dataverse_`, every response returns `{summary, data, suggestions}`, and destructive operations require explicit confirmation.

What you get
  • Real schema instead of guesses: tables, table metadata, relationships, option sets and entity keys — `dataverse_list_tables`, `dataverse_get_table_metadata`, `dataverse_get_relationships`, `dataverse_list_global_option_sets`, `dataverse_get_option_set`, `dataverse_resolve_entity_name`
  • Three ways to read: OData query, FetchXML, and paged retrieval — `dataverse_query`, `dataverse_execute_fetchxml`, `dataverse_retrieve_multiple_with_paging`
  • Record operations including upsert and ownership assignment — `dataverse_get`, `dataverse_create`, `dataverse_update`, `dataverse_delete`, `dataverse_upsert`, `dataverse_assign`
  • Relationships managed directly, in bulk where it matters — `dataverse_associate`, `dataverse_associate_bulk`, `dataverse_disassociate`, `dataverse_query_associations`
  • Actions and functions invoked, bound or unbound, with dependency checks before a delete — `dataverse_execute_action`, `dataverse_execute_function`, `dataverse_execute_bound_action`, `dataverse_execute_bound_function`, `dataverse_list_dependencies`, `dataverse_retrieve_dependencies_for_delete`
  • Security worked properly: users, their roles, role privileges, team and record-level access — `dataverse_list_users`, `dataverse_get_user_roles`, `dataverse_list_roles`, `dataverse_assign_role_to_user`, `dataverse_get_role_privileges`, `dataverse_check_record_access`, `dataverse_grant_access`, `dataverse_revoke_access`
  • Schema written as well as read — `dataverse_create_table`, `dataverse_create_relationship`, `dataverse_create_attribute`, `dataverse_update_attribute`, `dataverse_create_lookup_attribute`, `dataverse_publish_customizations`
  • Diagnostics you would otherwise open the maker portal for: plugin and workflow trace logs, the audit log, batch execution, change detection and duplicate detection — `dataverse_get_plugin_trace_logs`, `dataverse_get_workflow_trace_logs`, `dataverse_get_audit_log`, `dataverse_batch_execute`, `dataverse_change_detection`, `dataverse_detect_duplicates`
  • Four resources including a template for any table's schema and relationships — `dataverse://tables`, `dataverse://server/instructions`, `dataverse://tables/{tableName}/schema`, `dataverse://tables/{tableName}/relationships`
  • Five guided prompts — `analyze-org-health`, `data-quality-check`, `schema-review`, `security-audit`, `analyze-workflow`
Requirements

Node.js 20+ and `npx mcp-dataverse install`, an interactive wizard that configures the environment, registers the server in VS Code and signs you in. Three authentication modes depending on where it runs: device code for local development (interactive Microsoft sign-in, token cached on disk), client credentials for CI/CD and Docker via an App Registration, and managed identity for Azure-hosted with no secrets at all. Cached tokens are encrypted with AES-256-GCM and never logged. `MCP_CONFIG_PATH` points at a `config.json` that overrides the other variables, and `DATAVERSE_ENV_URL` names your environment. `npx mcp-dataverse update` re-checks the setup without a reconfigure.

Setup effort

One command — npx mcp-dataverse install