You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CAPABILITIES.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
# MCP Dataverse Server — Complete Capabilities Reference
2
2
3
-
> **Version**: 0.3.2 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
3
+
> **Version**: 0.3.6 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
4
4
5
-
54 tools across 23 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, environment variables, and more.
5
+
63 tools across 24 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, RBAC, environment variables, workflows, and more.
|**UUID required for get/update/delete**| Alternate-key retrieval via `dataverse_get` is not supported; use `dataverse_upsert` or `dataverse_query` instead. |
1015
-
|**No ETag conditional update**|`dataverse_update`sends `If-Match: *`. ETag-based optimistic concurrency is not exposed. |
1015
+
|**ETag conditional update**|`dataverse_update`supports optional `etag` parameter for optimistic concurrency (`If-Match: <etag>`). When omitted, sends `If-Match: *`.|
1016
1016
1017
1017
### Authentication
1018
1018
@@ -1036,4 +1036,4 @@ Dataverse error bodies are formatted as `Dataverse error <code>: <message>`. Tim
1036
1036
1037
1037
---
1038
1038
1039
-
_This document reflects the MCP Dataverse server codebase as of v0.2.0 — 50 tools across 22 categories._
1039
+
_This document reflects the MCP Dataverse server codebase as of v0.3.6 — 63 tools across 24 categories._
-**Upcoming auth methods** documented — Azure AD (Client Credentials) and Managed Identity planned, architecture confirmed ready
16
+
17
+
### Changed
18
+
19
+
- CAPABILITIES.md updated to 63 tools, version alignment, ETag fix documented
20
+
- README.md refreshed with new docs site URLs and community links
21
+
- CHANGELOG backfilled with all versions from v0.2.0 through v0.3.6
22
+
23
+
---
24
+
25
+
## [0.3.6] — 2026-03-02
26
+
27
+
### Fixed
28
+
29
+
-**BUG-021 final fix** — `dataverse_update_entity`: `HasNotes` now sent as plain `boolean` (was incorrectly wrapped in `{ Value: bool }` — Dataverse expects `Edm.Boolean`, not `BooleanManagedProperty`)
30
+
-`dataverse_update_entity`: graceful error handling for `0x80060888` — returns structured JSON with actionable suggestions (e.g. enable org-level audit) instead of raw exception
31
+
-`IsAuditEnabled` / `ChangeTrackingEnabled` both return clear guidance when the operation is blocked at org level
32
+
33
+
---
34
+
35
+
## [0.3.5] — 2026-03-01
36
+
37
+
### Fixed
38
+
39
+
-**BUG-021** — `dataverse_update_entity`: `IsAuditEnabled` wrapped as `BooleanManagedProperty` (`{ Value: bool }`); `@odata.type: "#Microsoft.Dynamics.CRM.EntityMetadata"` added to PATCH body
40
+
-**BUG-022** — `dataverse_assign_role_to_user`: idempotence now functional — pre-check via `$expand=systemuserroles_association` before `associate`; returns `"already_assigned"` if role already present
41
+
-**BUG-023** — `dataverse_remove_role_from_user`: idempotence now functional — pre-check before `disassociate`; returns `"not_assigned"` if role absent
42
+
43
+
---
44
+
45
+
## [0.3.4] — 2026-03-01
46
+
47
+
### Added
48
+
49
+
-`dataverse_list_connection_references` — list Connection References in the environment (active/inactive count, connector details)
50
+
51
+
---
52
+
53
+
## [0.3.3] — 2026-03-01
54
+
55
+
### Added
56
+
57
+
-`dataverse_list_roles` — list Dataverse security roles with optional `nameContains` filter
58
+
-`dataverse_assign_role_to_user` — assign a security role to a user (`confirm: true` required)
59
+
-`dataverse_remove_role_from_user` — remove a security role from a user (`confirm: true` required)
60
+
61
+
---
62
+
63
+
## [0.3.2] — 2026-03-01
64
+
65
+
### Added
66
+
67
+
-`dataverse_update_entity` — modify entity metadata flags (HasNotes, ChangeTracking, Audit) with `confirm: true` required; auto-publishes by default
68
+
-`dataverse_create_environment_variable` — create an environment variable definition + value in Dataverse (`confirm: true` required)
69
+
-**Write guardrails** — `checkWriteGuardrails` on destructive tools surfaces `[WARN] DESTRUCTIVE_OP` in `data.warnings[]`
70
+
71
+
---
72
+
73
+
## [0.3.1] — 2026-03-01
74
+
75
+
### Fixed
76
+
77
+
-**BUG-018** — `dataverse_query`: `count=true` now shows total in summary (`"N records returned from X (total in dataset: Y)"`)
78
+
-**BUG-019** — `dataverse_get`: `expand` parameter now properly forwarded to `getRecord` (was silently ignored)
-`dataverse_list_workflows` — **reimplemented**: queries the real Dataverse `workflows` entity (Cloud Flows, Business Rules, Classic Workflows); supports `category`, `nameContains`, `top` parameters
92
+
-`dataverse_get_workflow` — **reimplemented**: retrieves a Dataverse Process by GUID with enriched `categoryLabel` / `stateLabel`
93
+
-`dataverse_list_guides` — new tool replacing old `list_workflows` behavior (lists 10 built-in MCP operational guides)
94
+
-`dataverse_get_guide` — new tool replacing old `get_workflow` behavior (returns step-by-step MCP guide by name)
95
+
96
+
### Fixed
97
+
98
+
-**BUG-013** — `dataverse_get_attribute_option_set`: summary showed "0 options" — handler used `Options` (PascalCase) but client returns `options` (camelCase)
99
+
-**BUG-014** — `dataverse_list_dependencies`: summary showed "1 dependencies" — fallback wrapped entire result object; now reads `count` directly
100
+
-**BUG-015** — `dataverse_retrieve_multiple_with_paging`: summary showed "X records across 1 pages" — used `result.pages` instead of `result.pageCount`
101
+
-`dataverse_publish_customizations`: added 120 s timeout for `PublishAllXml` / `PublishXml` (previously timed out on large solutions)
102
+
-`dataverse_list_users`: removed `.refine()` — all parameters now truly optional
103
+
-`dataverse_batch_execute`: summary now correctly shows `"2/2 operations succeeded"` instead of `"0/N"`
104
+
-`dataverse_solution_components`: summary count now accurate
105
+
-`dataverse_create_annotation`: actionable error message when `HasNotes=false` (instructions to enable Notes in Power Apps maker portal)
**[→ Full Documentation](https://codeurali.github.io/mcp-dataverse-docs)**
17
+
**[→ Full Documentation](https://codeurali.github.io/mcp-dataverse)**
18
18
19
19
</div>
20
20
@@ -41,7 +41,7 @@ npx mcp-dataverse install
41
41
42
42
The interactive wizard configures your environment, registers the server in VS Code, and authenticates your Microsoft account in under 2 minutes.
43
43
44
-
> Requires Node.js 20+. For other clients (Claude, Cursor, Windsurf…) see [Multi-Client Setup](https://codeurali.github.io/mcp-dataverse-docs/multi-client-setup).
44
+
> Requires Node.js 20+. For other clients (Claude, Cursor, Windsurf…) see [Multi-Client Setup](https://codeurali.github.io/mcp-dataverse/multi-client-setup).
45
45
46
46
---
47
47
@@ -59,33 +59,52 @@ Re-authenticate after ~90 days of inactivity: `npx mcp-dataverse-auth`
| No sign-in prompt | Open **View → Output → MCP** — the device code is displayed there |
85
+
|`No MSAL accounts found`| Run `npx mcp-dataverse-auth` then restart the server |
86
+
|`Authentication timed out`| 5-minute window expired — restart MCP for a new code |
87
+
| Server not appearing in Agent mode | Run `npx mcp-dataverse install` or `npx mcp-dataverse doctor`|
88
+
| HTTP errors | Run `npx mcp-dataverse doctor` to diagnose config and connectivity |
89
+
90
+
---
91
+
92
+
## Battle-Tested
93
+
94
+
All 63 tools tested on a real Dataverse production environment across 8 live sessions — **55 ✅ · 9 ⚠️ · 1 ❌ (env-specific)**. [Details & test results →](https://codeurali.github.io/mcp-dataverse/community)
95
+
96
+
---
97
+
98
+
## Roadmap
99
+
100
+
| Version | Feature | Status |
101
+
| ------- | ------- | ------ |
102
+
|**v0.4**| Streamable HTTP transport | 🟢 90% done |
0 commit comments