Roadmap

The MCP Dataverse project follows semantic versioning and ships incremental improvements between milestones. Here’s what’s coming.


v0.4 — Streamable HTTP + Schema Consistency

Released

Goal: First-class HTTP/SSE support for multi-client and remote deployment scenarios, attribute-level schema management (create/update/delete columns + lookup), and fixes surfaced by the Web API audit. Released 2026-03-05 as v0.4.0 (67 tools across 25 categories).

The foundation already exists — StreamableHTTPServerTransport is implemented and functional (npx mcp-dataverse --transport http). This milestone polishes it for production and resolves the schema inconsistencies identified during 8 live testing sessions.

HTTP Transport

Item Status
StreamableHTTPServerTransport integration ✅ Done
enableJsonResponse toggle for non-streaming clients ✅ Done
Authentication over HTTP (session tokens) ✅ Done
Documentation & multi-client HTTP examples ✅ Done

Attribute Management

Item Status
dataverse_create_attribute — create columns (String, Integer, Decimal, Boolean, DateTime, Money, Memo, Picklist, BigInt) ✅ Done
dataverse_update_attribute — update column properties (display name, description, requirement level) ✅ Done
dataverse_delete_attribute — remove custom columns with confirmation guardrail ✅ Done
Lookup, MultiSelectPicklist, Image, AutoNumber attribute types ✅ Done

Schema Consistency

Item Status
Uniform parameter naming across all tools (camelCase convention) ✅ Done
confirm parameter documented consistently on all destructive tools ✅ Done
suggest_tools no longer exposes non-callable tools ✅ Done
errorCategory field in error responses (ENV_LIMITATION / PERMISSIONS / SCHEMA_MISMATCH) ✅ Done
Preflight checks for environment prerequisites (HasNotes, Change Tracking, Alternate Keys) ✅ Done
dataverse_search — actionable error when Relevance Search is disabled ✅ Done

Audit Fixes

Item Status
Add MSCRM.MergeLabels: true header on metadata PUT/PATCH to preserve multi-language labels ✅ Done
Fix batch request body to use CRLF (\r\n) per RFC 2046 ✅ Done
detect_duplicates — align description with actual implementation (FetchXML field-OR match) ✅ Done
search — construct URL from environmentUrl instead of relative ../../ hack ✅ Done
executeFunction — support aliased typed parameters (not just string) ✅ Done

Why it matters: HTTP transport unlocks remote servers, shared team instances, and integration with orchestrators that can’t spawn stdio processes. Schema consistency reduces AI agent confusion and improves first-call success rates. Attribute management brings column-level CRUD natively. Audit fixes harden Web API compliance.


v0.5 — Auth Methods & Completeness

Planned

Goal: Enterprise-grade authentication options so teams can deploy MCP Dataverse without PAC CLI, plus the remaining consistency fixes from v0.4.

Authentication Methods

Item Status
Azure AD app registration (Client Credentials) — service-to-service, CI/CD, unattended scenarios 🔜 Planned
Managed Identity — zero-secret auth for Azure-hosted deployments (App Service, Container Apps, VM) 🔜 Planned
authMethod config option ("pac" / "client-credentials" / "managed-identity") 🔜 Planned

Schema & Error Consistency

Item Status
errorCategory field in error responses (ENV_LIMITATION / PERMISSIONS / SCHEMA_MISMATCH) ✅ Done
dataverse_search — actionable error when Relevance Search is disabled ✅ Done
Uniform camelCase parameter naming across all tools ✅ Done

Why it matters: Client Credentials and Managed Identity unlock server-side deployments and CI/CD pipelines without any interactive login. Structured error categories let AI agents self-correct without human intervention.


v0.6 — MCP Prompts + Developer Tooling

Planned

Goal: Pre-built prompt templates for guided multi-step Dataverse workflows, plus developer tooling to generate ERDs and Web API code snippets.

MCP Prompts

Structured prompt templates that AI agents can invoke for guided, multi-step tasks:

Prompt Description
audit_entity Comprehensive entity audit (schema, records, plugins, dependencies)
schema_review Review table design for best practices
find_orphan_records Detect records with broken lookup references
solution_health Analyze solution composition and dependencies

Design: YAML-driven prompts for easy community contributions. Each prompt includes step sequences, variable bindings, and expected output structure.

Developer Tools

Item Status
generate_entity_diagram — export a Mermaid ERD for a table and its 1:N / N:N / Lookup relationships, ready to paste in docs or wikis 🔜 Planned
generate_api_snippet — generate ready-to-use Web API call snippets (cURL, JS fetch, Python requests) for any Dataverse CRUD operation 🔜 Planned

Why it matters: Full MCP spec coverage (tools + resources + prompts) — a first for any Dataverse MCP server. The ERD generator makes schema visible at a glance; the snippet generator lets AI agents write integration code, not just query through MCP.


v0.7 — Schema & Record Management

Planned

Goal: Table-level schema management, record-level security, deduplication, and solution lifecycle.

Schema Tools

Item Status
create_table — create custom entities via POST /EntityDefinitions 🔜 Planned
create_relationship — create standalone 1:N / N:N relationships 🔜 Planned
check_record_accessRetrievePrincipalAccess to check who can read/write/delete a record 🔜 Planned
Global OptionSet CRUD — create / update / delete shared option sets 🔜 Planned
Alternate Key CRUD — define and manage entity keys for upsert scenarios 🔜 Planned

Record Operations

Item Status
grant_access / revoke_accessGrantAccess / RevokeAccess for record-level sharing 🔜 Planned
merge_recordsMerge action for deduplication workflows 🔜 Planned
Solution import / export — ExportSolution / ImportSolution actions 🔜 Planned
FetchXML auto-pagination — transparent cookie-based paging for large result sets 🔜 Planned

Why it matters: Completes the entity lifecycle (create table → add columns → define relationships). Access control tools let AI agents manage sharing without dropping to raw API calls. Solution lifecycle tools support ALM workflows.


Feature Requests

Have an idea? Open an issue with the enhancement label.