mcp-dataverse 0.3.9 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +359 -35
- package/README.md +28 -5
- package/dist/chunk-FSM3J3WD.js +35 -0
- package/dist/dataverse-client-advanced-EASNSX3M.js +1 -0
- package/dist/doctor.js +1 -1
- package/dist/http-server.js +4 -3
- package/dist/server.js +20 -9
- package/package.json +2 -2
- package/server.json +3 -3
- package/dist/chunk-OXKMMPM3.js +0 -37
- package/dist/dataverse-client-advanced-T5ZJMRLK.js +0 -1
package/CAPABILITIES.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# MCP Dataverse Server — Complete Capabilities Reference
|
|
2
2
|
|
|
3
|
-
> **Version**: 0.
|
|
3
|
+
> **Version**: 0.4.6 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
73 tools across 25 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, RBAC, attribute management, environment variables, workflows, and more.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
- [Quick Start](#quick-start)
|
|
12
12
|
- [Architecture Overview](#architecture-overview)
|
|
13
|
-
- [Tool Reference (
|
|
13
|
+
- [Tool Reference (73 tools)](#tool-reference-73-tools)
|
|
14
14
|
- [1. Auth (1)](#1-auth-1-tool)
|
|
15
|
-
- [2. Metadata (
|
|
15
|
+
- [2. Metadata (9)](#2-metadata-9-tools)
|
|
16
16
|
- [3. Query (3)](#3-query-3-tools)
|
|
17
|
-
- [4. CRUD (
|
|
18
|
-
- [5. Relations (
|
|
17
|
+
- [4. CRUD (6)](#4-crud-6-tools)
|
|
18
|
+
- [5. Relations (4)](#5-relations-4-tools)
|
|
19
19
|
- [6. Actions & Functions (6)](#6-actions--functions-6-tools)
|
|
20
20
|
- [7. Batch (1)](#7-batch-1-tool)
|
|
21
21
|
- [8. Change Tracking (1)](#8-change-tracking-1-tool)
|
|
22
|
-
- [9. Solutions (
|
|
22
|
+
- [9. Solutions (2)](#9-solutions-2-tools)
|
|
23
23
|
- [10. Impersonation (1)](#10-impersonation-1-tool)
|
|
24
|
-
- [11. Customization (
|
|
25
|
-
- [12. Environment (
|
|
24
|
+
- [11. Customization (4)](#11-customization-4-tools)
|
|
25
|
+
- [12. Environment (4)](#12-environment-4-tools)
|
|
26
26
|
- [13. Trace (2)](#13-trace-2-tools)
|
|
27
27
|
- [14. Search (1)](#14-search-1-tool)
|
|
28
28
|
- [15. Audit (1)](#15-audit-1-tool)
|
|
@@ -31,7 +31,11 @@
|
|
|
31
31
|
- [18. Users (2)](#18-users-2-tools)
|
|
32
32
|
- [19. Views (1)](#19-views-1-tool)
|
|
33
33
|
- [20. Files (2)](#20-files-2-tools)
|
|
34
|
-
- [21. Org (
|
|
34
|
+
- [21. Org (2)](#21-org-2-tools)
|
|
35
|
+
- [22. RBAC (7)](#22-rbac-7-tools)
|
|
36
|
+
- [23. Workflows (4)](#23-workflows-4-tools)
|
|
37
|
+
- [24. Assistance (2)](#24-assistance-2-tools)
|
|
38
|
+
- [25. Attributes (4)](#25-attributes-4-tools)
|
|
35
39
|
- [Error Handling & Retry Behavior](#error-handling--retry-behavior)
|
|
36
40
|
- [Security](#security)
|
|
37
41
|
- [Limitations & Known Constraints](#limitations--known-constraints)
|
|
@@ -91,38 +95,40 @@ Server communicates over **stdio** (MCP SDK `StdioServerTransport`). Connect fro
|
|
|
91
95
|
|
|
92
96
|
```mermaid
|
|
93
97
|
graph LR
|
|
94
|
-
MCP["MCP Dataverse Server<br/><i>
|
|
98
|
+
MCP["MCP Dataverse Server<br/><i>73 tools · 25 categories</i>"]
|
|
95
99
|
|
|
96
100
|
MCP --> AUTH["🔑 Auth (1)"]
|
|
97
|
-
MCP --> META["📋 Metadata (
|
|
101
|
+
MCP --> META["📋 Metadata (9)"]
|
|
98
102
|
MCP --> QUERY["🔍 Query (3)"]
|
|
99
103
|
MCP --> CRUD["✏️ CRUD (6)"]
|
|
100
|
-
MCP --> REL["🔗 Relations (
|
|
104
|
+
MCP --> REL["🔗 Relations (4)"]
|
|
101
105
|
MCP --> ACT["⚡ Actions & Functions (6)"]
|
|
102
106
|
MCP --> BATCH["📦 Batch (1)"]
|
|
103
107
|
MCP --> TRACK["🔄 Change Tracking (1)"]
|
|
104
|
-
MCP --> SOL["🧩 Solutions (
|
|
108
|
+
MCP --> SOL["🧩 Solutions (2)"]
|
|
105
109
|
MCP --> IMP["👤 Impersonation (1)"]
|
|
106
|
-
MCP --> CUST["🔧 Customization (
|
|
107
|
-
MCP --> ENV["⚙️ Environment (
|
|
110
|
+
MCP --> CUST["🔧 Customization (4)"]
|
|
111
|
+
MCP --> ENV["⚙️ Environment (4)"]
|
|
108
112
|
MCP --> TRACE["🔎 Trace (2)"]
|
|
109
113
|
MCP --> SRCH["🔍 Search (1)"]
|
|
110
114
|
MCP --> AUDIT["📜 Audit (1)"]
|
|
111
115
|
MCP --> QUAL["✅ Quality (1)"]
|
|
112
116
|
MCP --> NOTE["📝 Annotations (2)"]
|
|
113
117
|
MCP --> USR["👥 Users (2)"]
|
|
118
|
+
MCP --> RBAC["🛡️ RBAC (7)"]
|
|
114
119
|
MCP --> VIEWS["👁️ Views (1)"]
|
|
115
120
|
MCP --> FILES["📁 Files (2)"]
|
|
116
|
-
MCP --> ORG["🏢 Org (
|
|
117
|
-
MCP -->
|
|
118
|
-
MCP --> ASSIST["🤖 Assistance (
|
|
121
|
+
MCP --> ORG["🏢 Org (2)"]
|
|
122
|
+
MCP --> WF["⚙️ Workflows (4)"]
|
|
123
|
+
MCP --> ASSIST["🤖 Assistance (2)"]
|
|
124
|
+
MCP --> ATTR["🏗️ Attributes (4)"]
|
|
119
125
|
```
|
|
120
126
|
|
|
121
127
|
All tool handlers validate inputs with **Zod** before calling the `DataverseAdvancedClient`. Auth tokens are cached and refreshed proactively; transient errors (429, 503, 504) are retried with exponential backoff.
|
|
122
128
|
|
|
123
129
|
---
|
|
124
130
|
|
|
125
|
-
## Tool Reference (
|
|
131
|
+
## Tool Reference (73 tools)
|
|
126
132
|
|
|
127
133
|
### 1. Auth (1 tool)
|
|
128
134
|
|
|
@@ -134,7 +140,7 @@ Returns the current authenticated user context (userId, businessUnitId, organiza
|
|
|
134
140
|
|
|
135
141
|
---
|
|
136
142
|
|
|
137
|
-
### 2. Metadata (
|
|
143
|
+
### 2. Metadata (9 tools)
|
|
138
144
|
|
|
139
145
|
#### `dataverse_list_tables`
|
|
140
146
|
|
|
@@ -273,7 +279,7 @@ Retrieves ALL matching records by auto-following `@odata.nextLink` pages. Use wh
|
|
|
273
279
|
|
|
274
280
|
---
|
|
275
281
|
|
|
276
|
-
### 4. CRUD (
|
|
282
|
+
### 4. CRUD (6 tools)
|
|
277
283
|
|
|
278
284
|
#### `dataverse_get`
|
|
279
285
|
|
|
@@ -354,7 +360,22 @@ Create-or-update via an alternate key (no GUID needed). Returns `"created"` or `
|
|
|
354
360
|
|
|
355
361
|
---
|
|
356
362
|
|
|
357
|
-
|
|
363
|
+
#### `dataverse_assign`
|
|
364
|
+
|
|
365
|
+
Assigns a Dataverse record to a different user or team owner. Sets the `ownerid` lookup field using OData bind syntax.
|
|
366
|
+
|
|
367
|
+
| Parameter | Type | Req | Notes |
|
|
368
|
+
| --------------- | ---------------------- | --- | ----------------------- |
|
|
369
|
+
| `entitySetName` | `string` | ✓ | OData entity set name |
|
|
370
|
+
| `id` | `string (UUID)` | ✓ | Record GUID to reassign |
|
|
371
|
+
| `ownerType` | `"systemuser"\|"team"` | ✓ | Target owner type |
|
|
372
|
+
| `ownerId` | `string (UUID)` | ✓ | GUID of user or team |
|
|
373
|
+
|
|
374
|
+
> "Reassign account a1b2c3d4 to user u1v2w3x4"
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
### 5. Relations (4 tools)
|
|
358
379
|
|
|
359
380
|
#### `dataverse_associate`
|
|
360
381
|
|
|
@@ -514,7 +535,7 @@ Delta-query for incremental sync. Pass `deltaToken: null` for initial snapshot;
|
|
|
514
535
|
|
|
515
536
|
---
|
|
516
537
|
|
|
517
|
-
### 9. Solutions (
|
|
538
|
+
### 9. Solutions (2 tools)
|
|
518
539
|
|
|
519
540
|
#### `dataverse_list_solutions`
|
|
520
541
|
|
|
@@ -591,7 +612,7 @@ Executes any other tool on behalf of a different Dataverse user by injecting `MS
|
|
|
591
612
|
|
|
592
613
|
---
|
|
593
614
|
|
|
594
|
-
### 11. Customization (
|
|
615
|
+
### 11. Customization (4 tools)
|
|
595
616
|
|
|
596
617
|
#### `dataverse_list_custom_actions`
|
|
597
618
|
|
|
@@ -651,7 +672,7 @@ Activates or deactivates a classic Dataverse workflow (statecode/statuscode upda
|
|
|
651
672
|
|
|
652
673
|
---
|
|
653
674
|
|
|
654
|
-
### 12. Environment (
|
|
675
|
+
### 12. Environment (4 tools)
|
|
655
676
|
|
|
656
677
|
#### `dataverse_get_environment_variable`
|
|
657
678
|
|
|
@@ -688,6 +709,24 @@ Sets or updates an environment variable's current value (creates or updates the
|
|
|
688
709
|
|
|
689
710
|
---
|
|
690
711
|
|
|
712
|
+
#### `dataverse_create_environment_variable`
|
|
713
|
+
|
|
714
|
+
Creates a new Dataverse environment variable definition and sets its initial value. Use when the variable does not yet exist.
|
|
715
|
+
|
|
716
|
+
| Parameter | Type | Req | Notes |
|
|
717
|
+
| -------------- | ---------------------------------------- | --- | ------------------------------------------------------- |
|
|
718
|
+
| `schemaName` | `string` | ✓ | Schema name (publisher prefix required, e.g. `new_MyVar`) |
|
|
719
|
+
| `displayName` | `string` | ✓ | Human-readable label |
|
|
720
|
+
| `type` | `"String"\|"Integer"\|"Boolean"\|"JSON"` | ✓ | Variable data type |
|
|
721
|
+
| `value` | `string` | ✓ | Initial value |
|
|
722
|
+
| `description` | `string` | — | Optional description |
|
|
723
|
+
| `defaultValue` | `string` | — | Optional default value |
|
|
724
|
+
| `confirm` | `true` | ✓ | Explicit confirmation required |
|
|
725
|
+
|
|
726
|
+
> "Create environment variable new_MaxRetries of type Integer with value 3"
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
691
730
|
### 13. Trace (2 tools)
|
|
692
731
|
|
|
693
732
|
#### `dataverse_get_plugin_trace_logs`
|
|
@@ -724,7 +763,7 @@ Retrieves AsyncOperation records for background/classic workflow executions. Not
|
|
|
724
763
|
|
|
725
764
|
#### `dataverse_search`
|
|
726
765
|
|
|
727
|
-
Full-text Relevance Search across all configured Dataverse tables. Returns ranked results with entity name, record ID, score, highlights, and matched fields. Requires **Relevance Search** enabled in Dataverse admin.
|
|
766
|
+
Full-text Relevance Search across all configured Dataverse tables. Returns ranked results with entity name, record ID, score, highlights, and matched fields. Uses the **Search API v2.0** endpoint. Requires **Relevance Search** enabled in Dataverse admin. If Relevance Search is disabled or no entities are configured for search, returns a structured error with `errorCategory: "ENV_LIMITATION"` and setup instructions.
|
|
728
767
|
|
|
729
768
|
| Parameter | Type | Req | Notes |
|
|
730
769
|
| ------------ | ------------------ | --- | --------------------------------------------------- |
|
|
@@ -801,7 +840,7 @@ Retrieves notes and file attachments linked to a record. Set `includeContent=tru
|
|
|
801
840
|
| Parameter | Type | Req | Notes |
|
|
802
841
|
| ---------------- | --------------- | --- | ---------------------------------------- |
|
|
803
842
|
| `recordId` | `string (UUID)` | ✓ | Parent record GUID |
|
|
804
|
-
| `includeContent` | `boolean` | — | Include `
|
|
843
|
+
| `includeContent` | `boolean` | — | Include `documentBody` (default `false`) |
|
|
805
844
|
| `top` | `number` | — | Default `20`, max `100` |
|
|
806
845
|
| `mimeTypeFilter` | `string` | — | e.g. `"application/pdf"` |
|
|
807
846
|
|
|
@@ -811,17 +850,17 @@ Retrieves notes and file attachments linked to a record. Set `includeContent=tru
|
|
|
811
850
|
|
|
812
851
|
#### `dataverse_create_annotation`
|
|
813
852
|
|
|
814
|
-
Creates a note or file attachment linked to a Dataverse record. Provide `
|
|
853
|
+
Creates a note or file attachment linked to a Dataverse record. Provide `noteText` for a text note, `documentBody` (base64) for a file, or both.
|
|
815
854
|
|
|
816
855
|
| Parameter | Type | Req | Notes |
|
|
817
856
|
| --------------- | --------------- | --- | ------------------------------------------------------- |
|
|
818
857
|
| `recordId` | `string (UUID)` | ✓ | Parent record GUID |
|
|
819
858
|
| `entitySetName` | `string` | ✓ | Parent entity set, e.g. `"accounts"` |
|
|
820
|
-
| `
|
|
859
|
+
| `noteText` | `string` | — | Text content (required if no `documentBody`) |
|
|
821
860
|
| `subject` | `string` | — | Note subject/title |
|
|
822
|
-
| `
|
|
823
|
-
| `
|
|
824
|
-
| `
|
|
861
|
+
| `fileName` | `string` | — | File name (for attachments) |
|
|
862
|
+
| `mimeType` | `string` | — | MIME type, e.g. `"application/pdf"` |
|
|
863
|
+
| `documentBody` | `string` | — | Base64-encoded file content (required if no `noteText`) |
|
|
825
864
|
|
|
826
865
|
> "Attach a PDF report to account a1b2c3d4"
|
|
827
866
|
|
|
@@ -942,7 +981,7 @@ Downloads a file from a Dataverse file-type column. Returns the file as a base64
|
|
|
942
981
|
|
|
943
982
|
---
|
|
944
983
|
|
|
945
|
-
### 21. Org (
|
|
984
|
+
### 21. Org (2 tools)
|
|
946
985
|
|
|
947
986
|
#### `dataverse_list_business_units`
|
|
948
987
|
|
|
@@ -957,6 +996,281 @@ Lists business units in the environment with name, ID, parent BU ID, disabled st
|
|
|
957
996
|
|
|
958
997
|
---
|
|
959
998
|
|
|
999
|
+
#### `dataverse_list_teams`
|
|
1000
|
+
|
|
1001
|
+
Lists Dataverse teams (owner teams and access teams) within one or all business units.
|
|
1002
|
+
|
|
1003
|
+
| Parameter | Type | Req | Notes |
|
|
1004
|
+
| ---------------- | ------------------------- | --- | ---------------------------------------------- |
|
|
1005
|
+
| `top` | `number` | — | Default `50`, max `200` |
|
|
1006
|
+
| `teamType` | `"Owner"\|"Access"\|"AAD"` | — | Filter by team type; omit for all |
|
|
1007
|
+
| `businessUnitId` | `string (UUID)` | — | Filter by business unit |
|
|
1008
|
+
|
|
1009
|
+
> "List all owner teams in the environment"
|
|
1010
|
+
|
|
1011
|
+
---
|
|
1012
|
+
|
|
1013
|
+
### 22. RBAC (7 tools)
|
|
1014
|
+
|
|
1015
|
+
#### `dataverse_list_roles`
|
|
1016
|
+
|
|
1017
|
+
Lists security roles in the environment, optionally filtered by name.
|
|
1018
|
+
|
|
1019
|
+
| Parameter | Type | Req | Notes |
|
|
1020
|
+
| ------------ | -------- | --- | ---------------------------- |
|
|
1021
|
+
| `nameFilter` | `string` | — | Substring match on role name |
|
|
1022
|
+
| `top` | `number` | — | Default `50`, max `200` |
|
|
1023
|
+
|
|
1024
|
+
> "List all security roles that contain 'Sales'"
|
|
1025
|
+
|
|
1026
|
+
```json
|
|
1027
|
+
{
|
|
1028
|
+
"total": 3,
|
|
1029
|
+
"roles": [{ "roleId": "...", "name": "Salesperson", "businessUnitId": "..." }]
|
|
1030
|
+
}
|
|
1031
|
+
```
|
|
1032
|
+
|
|
1033
|
+
---
|
|
1034
|
+
|
|
1035
|
+
#### `dataverse_assign_role_to_user`
|
|
1036
|
+
|
|
1037
|
+
Assigns a security role to a system user (idempotent — returns `"already_assigned"` if the role is already assigned).
|
|
1038
|
+
|
|
1039
|
+
| Parameter | Type | Req | Notes |
|
|
1040
|
+
| --------- | --------------- | --- | ----------------- |
|
|
1041
|
+
| `userId` | `string (UUID)` | ✓ | System user GUID |
|
|
1042
|
+
| `roleId` | `string (UUID)` | ✓ | Security role ID |
|
|
1043
|
+
|
|
1044
|
+
> "Assign role r1s2t3u4 to user u1v2w3x4"
|
|
1045
|
+
|
|
1046
|
+
---
|
|
1047
|
+
|
|
1048
|
+
#### `dataverse_remove_role_from_user`
|
|
1049
|
+
|
|
1050
|
+
Removes a security role from a system user.
|
|
1051
|
+
|
|
1052
|
+
| Parameter | Type | Req | Notes |
|
|
1053
|
+
| --------- | --------------- | --- | ---------------- |
|
|
1054
|
+
| `userId` | `string (UUID)` | ✓ | System user GUID |
|
|
1055
|
+
| `roleId` | `string (UUID)` | ✓ | Security role ID |
|
|
1056
|
+
|
|
1057
|
+
> "Remove role r1s2t3u4 from user u1v2w3x4"
|
|
1058
|
+
|
|
1059
|
+
---
|
|
1060
|
+
|
|
1061
|
+
#### `dataverse_assign_role_to_team`
|
|
1062
|
+
|
|
1063
|
+
Assigns a security role to a Dataverse team. All team members inherit the role permissions.
|
|
1064
|
+
|
|
1065
|
+
| Parameter | Type | Req | Notes |
|
|
1066
|
+
| --------- | --------------- | --- | ------------------------------ |
|
|
1067
|
+
| `teamId` | `string (UUID)` | ✓ | Team GUID |
|
|
1068
|
+
| `roleId` | `string (UUID)` | ✓ | Security role GUID |
|
|
1069
|
+
| `confirm` | `true` | ✓ | Explicit confirmation required |
|
|
1070
|
+
|
|
1071
|
+
> "Assign role r1s2t3u4 to team t1e2a3m4"
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
1075
|
+
### 23. Workflows (4 tools)
|
|
1076
|
+
|
|
1077
|
+
#### `dataverse_list_workflows`
|
|
1078
|
+
|
|
1079
|
+
Lists classic Dataverse workflows and modern cloud flows registered in the environment.
|
|
1080
|
+
|
|
1081
|
+
| Parameter | Type | Req | Notes |
|
|
1082
|
+
| ------------- | --------- | --- | -------------------------------------------- |
|
|
1083
|
+
| `top` | `number` | — | Default `50`, max `200` |
|
|
1084
|
+
| `activeOnly` | `boolean` | — | Return only activated workflows (default `false`) |
|
|
1085
|
+
| `nameFilter` | `string` | — | Substring match on workflow name |
|
|
1086
|
+
|
|
1087
|
+
> "List all active workflows on the account table"
|
|
1088
|
+
|
|
1089
|
+
---
|
|
1090
|
+
|
|
1091
|
+
#### `dataverse_get_workflow`
|
|
1092
|
+
|
|
1093
|
+
Retrieves a single workflow definition by ID, including its trigger, steps, and current state.
|
|
1094
|
+
|
|
1095
|
+
| Parameter | Type | Req | Notes |
|
|
1096
|
+
| ------------ | --------------- | --- | ------------- |
|
|
1097
|
+
| `workflowId` | `string (UUID)` | ✓ | Workflow GUID |
|
|
1098
|
+
|
|
1099
|
+
> "Get the definition of workflow w1x2y3z4"
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
### 24. Assistance (2 tools)
|
|
1104
|
+
|
|
1105
|
+
#### `dataverse_suggest_tools`
|
|
1106
|
+
|
|
1107
|
+
Returns a ranked list of MCP tools relevant to a natural-language task description. Use this when unsure which tool to call — it uses tag-based matching to surface the right tools.
|
|
1108
|
+
|
|
1109
|
+
| Parameter | Type | Req | Notes |
|
|
1110
|
+
| ------------- | -------- | --- | ---------------------------------- |
|
|
1111
|
+
| `task` | `string` | ✓ | Natural-language description of the task |
|
|
1112
|
+
| `top` | `number` | — | Max results (default `5`) |
|
|
1113
|
+
|
|
1114
|
+
> "Which tool should I use to create a new lookup column?"
|
|
1115
|
+
|
|
1116
|
+
---
|
|
1117
|
+
|
|
1118
|
+
#### `dataverse_list_guides`
|
|
1119
|
+
|
|
1120
|
+
Lists available built-in guides that walk through common multi-step Dataverse tasks.
|
|
1121
|
+
|
|
1122
|
+
| Parameter | Type | Req | Notes |
|
|
1123
|
+
| --------- | ---- | --- | ----- |
|
|
1124
|
+
| — | — | — | No parameters |
|
|
1125
|
+
|
|
1126
|
+
> "What guides are available in this MCP server?"
|
|
1127
|
+
|
|
1128
|
+
---
|
|
1129
|
+
|
|
1130
|
+
#### `dataverse_get_guide`
|
|
1131
|
+
|
|
1132
|
+
Retrieves the full step-by-step content for a specific guide by name.
|
|
1133
|
+
|
|
1134
|
+
| Parameter | Type | Req | Notes |
|
|
1135
|
+
| ----------- | -------- | --- | ------------------- |
|
|
1136
|
+
| `guideName` | `string` | ✓ | Guide name from `list_guides` |
|
|
1137
|
+
|
|
1138
|
+
> "Show me the steps for the entity-audit guide"
|
|
1139
|
+
|
|
1140
|
+
---
|
|
1141
|
+
|
|
1142
|
+
#### `dataverse_list_connection_references`
|
|
1143
|
+
|
|
1144
|
+
Lists connection references used in solutions (Power Automate connectors).
|
|
1145
|
+
|
|
1146
|
+
| Parameter | Type | Req | Notes |
|
|
1147
|
+
| -------------- | -------- | --- | -------------------------------- |
|
|
1148
|
+
| `top` | `number` | — | Default `50`, max `200` |
|
|
1149
|
+
| `nameFilter` | `string` | — | Substring match on display name |
|
|
1150
|
+
|
|
1151
|
+
> "List all SharePoint connection references in my environment"
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
#### `dataverse_list_tool_tags`
|
|
1156
|
+
|
|
1157
|
+
Lists all available tool tags with the number of tools in each category. Use this to discover what kinds of operations are available before calling `dataverse_suggest_tools`.
|
|
1158
|
+
|
|
1159
|
+
| Parameter | Type | Req | Notes |
|
|
1160
|
+
| --------- | ---- | --- | ------------- |
|
|
1161
|
+
| — | — | — | No parameters |
|
|
1162
|
+
|
|
1163
|
+
> "What categories of tools are available in this MCP server?"
|
|
1164
|
+
|
|
1165
|
+
---
|
|
1166
|
+
|
|
1167
|
+
### 25. Attributes (4 tools)
|
|
1168
|
+
|
|
1169
|
+
Attribute tools manage **column-level schema** in Dataverse tables. All write operations require `confirm: true` and auto-publish the entity definition by default.
|
|
1170
|
+
|
|
1171
|
+
#### `dataverse_create_attribute`
|
|
1172
|
+
|
|
1173
|
+
Creates a new column on an existing Dataverse table. Supports 11 attribute types with type-specific parameters.
|
|
1174
|
+
|
|
1175
|
+
| Parameter | Type | Req | Notes |
|
|
1176
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------- | --- | --------------------------------------------------------------- |
|
|
1177
|
+
| `entityLogicalName` | `string` | ✓ | Target table (e.g. `"account"`) |
|
|
1178
|
+
| `schemaName` | `string` | ✓ | Must include publisher prefix (e.g. `"new_CustomField"`) |
|
|
1179
|
+
| `attributeType` | `"String"\|"Memo"\|"Integer"\|"Decimal"\|"Money"\|"DateTime"\|"Boolean"\|"Picklist"\|"MultiSelectPicklist"\|"AutoNumber"\|"Image"` | ✓ | Column type |
|
|
1180
|
+
| `displayName` | `string` | ✓ | Human-readable label |
|
|
1181
|
+
| `description` | `string` | — | Column description |
|
|
1182
|
+
| `requiredLevel` | `"None"\|"ApplicationRequired"\|"Recommended"` | — | Requirement level (default `"None"`) |
|
|
1183
|
+
| `maxLength` | `number` | — | String/Memo max chars |
|
|
1184
|
+
| `minValue`/`maxValue`| `number` | — | Integer/Decimal range bounds |
|
|
1185
|
+
| `precision` | `number` | — | Decimal/Money decimal places |
|
|
1186
|
+
| `dateTimeFormat` | `"DateOnly"\|"DateAndTime"` | — | DateTime display format |
|
|
1187
|
+
| `defaultBooleanValue`| `boolean` | — | Default for Boolean columns |
|
|
1188
|
+
| `picklistOptions` | `{value: number, label: string}[]` | — | Option values for Picklist/MultiSelectPicklist |
|
|
1189
|
+
| `autoNumberFormat` | `string` | — | Format string for AutoNumber, e.g. `"INV-{SEQNUM:5}"` |
|
|
1190
|
+
| `languageCode` | `number` | — | Label language code (default `1033` = English) |
|
|
1191
|
+
| `autoPublish` | `boolean` | — | Publish after create (default `true`) |
|
|
1192
|
+
| `confirm` | `true` | ✓ | Must be `true` |
|
|
1193
|
+
|
|
1194
|
+
> "Add a text column 'new_ExternalId' to the account table with max 100 characters"
|
|
1195
|
+
|
|
1196
|
+
```json
|
|
1197
|
+
{
|
|
1198
|
+
"logicalName": "new_externalid",
|
|
1199
|
+
"schemaName": "new_ExternalId",
|
|
1200
|
+
"attributeType": "String",
|
|
1201
|
+
"entityLogicalName": "account",
|
|
1202
|
+
"published": true
|
|
1203
|
+
}
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
---
|
|
1207
|
+
|
|
1208
|
+
#### `dataverse_update_attribute`
|
|
1209
|
+
|
|
1210
|
+
Updates properties of an existing column. Only columns with `IsCustomizable = true` can be modified.
|
|
1211
|
+
|
|
1212
|
+
| Parameter | Type | Req | Notes |
|
|
1213
|
+
| --------------------- | ----------------------------------------------- | --- | ------------------------------------------- |
|
|
1214
|
+
| `entityLogicalName` | `string` | ✓ | Table containing the column |
|
|
1215
|
+
| `attributeLogicalName`| `string` | ✓ | Column logical name (e.g. `"new_myfield"`) |
|
|
1216
|
+
| `displayName` | `string` | — | New display label |
|
|
1217
|
+
| `description` | `string` | — | New description |
|
|
1218
|
+
| `requiredLevel` | `"None"\|"ApplicationRequired"\|"Recommended"` | — | New requirement level |
|
|
1219
|
+
| `maxLength` | `number` | — | Increase only (cannot decrease) |
|
|
1220
|
+
| `isSearchable` | `boolean` | — | Include in Quick Find views |
|
|
1221
|
+
| `languageCode` | `number` | — | Default `1033` |
|
|
1222
|
+
| `autoPublish` | `boolean` | — | Default `true` |
|
|
1223
|
+
| `confirm` | `true` | ✓ | Must be `true` |
|
|
1224
|
+
|
|
1225
|
+
> "Update new_externalid on account to be required"
|
|
1226
|
+
|
|
1227
|
+
---
|
|
1228
|
+
|
|
1229
|
+
#### `dataverse_delete_attribute`
|
|
1230
|
+
|
|
1231
|
+
⚠️ **DESTRUCTIVE** — permanently deletes a custom column and all its data from all records.
|
|
1232
|
+
|
|
1233
|
+
| Parameter | Type | Req | Notes |
|
|
1234
|
+
| --------------------- | -------- | --- | ------------------------------------------------ |
|
|
1235
|
+
| `entityLogicalName` | `string` | ✓ | Table containing the column |
|
|
1236
|
+
| `attributeLogicalName`| `string` | ✓ | Column logical name (must be a custom column) |
|
|
1237
|
+
| `autoPublish` | `boolean`| — | Publish after delete (default `true`) |
|
|
1238
|
+
| `confirm` | `true` | ✓ | Must be `true` |
|
|
1239
|
+
|
|
1240
|
+
> "Delete the column new_externalid from account"
|
|
1241
|
+
|
|
1242
|
+
---
|
|
1243
|
+
|
|
1244
|
+
#### `dataverse_create_lookup_attribute`
|
|
1245
|
+
|
|
1246
|
+
Creates a lookup (N:1) column on a table, simultaneously defining a 1:N relationship between two tables. This is the correct way to add a foreign-key-style reference to another table.
|
|
1247
|
+
|
|
1248
|
+
| Parameter | Type | Req | Notes |
|
|
1249
|
+
| --------------------- | -------- | --- | --------------------------------------------------------------------------- |
|
|
1250
|
+
| `entityLogicalName` | `string` | ✓ | Table that will contain the lookup column (the "many" side) |
|
|
1251
|
+
| `schemaName` | `string` | ✓ | Must include publisher prefix (e.g. `"new_ParentAccount"`) |
|
|
1252
|
+
| `displayName` | `string` | ✓ | Human-readable label |
|
|
1253
|
+
| `referencedEntity` | `string` | ✓ | Table being looked up (the "one" side, e.g. `"account"`) |
|
|
1254
|
+
| `description` | `string` | — | Column description |
|
|
1255
|
+
| `requiredLevel` | `"None"\|"ApplicationRequired"\|"Recommended"` | — | Default `"None"` |
|
|
1256
|
+
| `languageCode` | `number` | — | Default `1033` |
|
|
1257
|
+
| `autoPublish` | `boolean`| — | Default `true` |
|
|
1258
|
+
| `confirm` | `true` | ✓ | Must be `true` |
|
|
1259
|
+
|
|
1260
|
+
> "Add a lookup to 'account' on the contact table called new_PrimaryAccount"
|
|
1261
|
+
|
|
1262
|
+
```json
|
|
1263
|
+
{
|
|
1264
|
+
"lookupLogicalName": "new_primaryaccount",
|
|
1265
|
+
"relationshipSchemaName": "new_contact_primaryaccount",
|
|
1266
|
+
"referencedEntity": "account",
|
|
1267
|
+
"referencingEntity": "contact",
|
|
1268
|
+
"published": true
|
|
1269
|
+
}
|
|
1270
|
+
```
|
|
1271
|
+
|
|
1272
|
+
---
|
|
1273
|
+
|
|
960
1274
|
## Error Handling & Retry Behavior
|
|
961
1275
|
|
|
962
1276
|
All tool handlers return `{ isError: true, content: [{ type: "text", text: "Error: ..." }] }` on failure. Zod input validation runs before any network call.
|
|
@@ -971,6 +1285,16 @@ All tool handlers return `{ isError: true, content: [{ type: "text", text: "Erro
|
|
|
971
1285
|
|
|
972
1286
|
Dataverse error bodies are formatted as `Dataverse error <code>: <message>`. Timeouts (`ECONNABORTED`) produce `Request timed out. Check your Dataverse environment URL.`
|
|
973
1287
|
|
|
1288
|
+
### Error Categories
|
|
1289
|
+
|
|
1290
|
+
Certain tools include an `errorCategory` field in the error text when the failure has a well-known cause:
|
|
1291
|
+
|
|
1292
|
+
| `errorCategory` | Meaning | Example |
|
|
1293
|
+
| ----------------- | ------------------------------------------------------------ | --------------------------------------------------------- |
|
|
1294
|
+
| `ENV_LIMITATION` | Feature not enabled or unavailable in this environment | `dataverse_search` when Relevance Search is disabled |
|
|
1295
|
+
| `PERMISSIONS` | Operation denied due to insufficient privileges | Restricted table or action |
|
|
1296
|
+
| `SCHEMA_MISMATCH` | Supplied data conflicts with the table's metadata schema | Wrong attribute type in `dataverse_create_attribute` |
|
|
1297
|
+
|
|
974
1298
|
---
|
|
975
1299
|
|
|
976
1300
|
## Security
|
|
@@ -1036,4 +1360,4 @@ Dataverse error bodies are formatted as `Dataverse error <code>: <message>`. Tim
|
|
|
1036
1360
|
|
|
1037
1361
|
---
|
|
1038
1362
|
|
|
1039
|
-
_This document reflects the MCP Dataverse server codebase as of v0.
|
|
1363
|
+
_This document reflects the MCP Dataverse server codebase as of v0.4.6 — 73 tools across 25 categories._
|
package/README.md
CHANGED
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**The most complete MCP server for Microsoft Dataverse.**
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
63 tools · 4 resources · 10 guided workflows · Zero config auth
|
|
9
|
+
73 tools · 4 resources · 10 guided workflows · Zero config auth
|
|
12
10
|
|
|
13
11
|
[](https://www.npmjs.com/package/mcp-dataverse)
|
|
14
12
|
[](https://www.npmjs.com/package/mcp-dataverse)
|
|
@@ -80,6 +78,31 @@ Re-authenticate after ~90 days of inactivity: `npx mcp-dataverse-auth`
|
|
|
80
78
|
|
|
81
79
|
---
|
|
82
80
|
|
|
81
|
+
## HTTP Transport
|
|
82
|
+
|
|
83
|
+
Run as an HTTP server for multi-client use:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
MCP_TRANSPORT=http MCP_HTTP_PORT=3000 MCP_HTTP_SECRET=mysecret node dist/server.js
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Connect using VS Code / Copilot with:
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"servers": {
|
|
93
|
+
"dataverse": {
|
|
94
|
+
"type": "http",
|
|
95
|
+
"url": "http://localhost:3000/mcp",
|
|
96
|
+
"headers": {
|
|
97
|
+
"Authorization": "Bearer mysecret"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
83
106
|
## Troubleshooting
|
|
84
107
|
|
|
85
108
|
| Symptom | Fix |
|
|
@@ -102,8 +125,8 @@ MCP Dataverse is designed to be comprehensive, but most AI models work best with
|
|
|
102
125
|
|
|
103
126
|
| Version | Feature | Status |
|
|
104
127
|
| ------- | ------- | ------ |
|
|
105
|
-
| **v0.4** | HTTP transport +
|
|
106
|
-
| **v0.5** |
|
|
128
|
+
| **v0.4** | HTTP transport + attribute management + schema consistency | ✅ Released |
|
|
129
|
+
| **v0.5** | Enterprise auth (Client Credentials, Managed Identity) + MCP Prompts | 🔴 Planned |
|
|
107
130
|
|
|
108
131
|
[→ Full Roadmap](https://codeurali.github.io/mcp-dataverse/roadmap)
|
|
109
132
|
|