mcp-dataverse 0.3.2 → 0.3.4
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 +2 -2
- package/README.md +22 -160
- package/package.json +2 -5
package/CAPABILITIES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MCP Dataverse Server — Complete Capabilities Reference
|
|
2
2
|
|
|
3
|
-
> **Version**: 0.3.
|
|
3
|
+
> **Version**: 0.3.2 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
|
|
4
4
|
|
|
5
5
|
54 tools across 23 categories for full Dataverse lifecycle: schema, CRUD, FetchXML, solutions, plugins, audit, files, users, teams, environment variables, and more.
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
- [Quick Start](#quick-start)
|
|
12
12
|
- [Architecture Overview](#architecture-overview)
|
|
13
|
-
- [Tool Reference (
|
|
13
|
+
- [Tool Reference (54 tools)](#tool-reference-54-tools)
|
|
14
14
|
- [1. Auth (1)](#1-auth-1-tool)
|
|
15
15
|
- [2. Metadata (8)](#2-metadata-8-tools)
|
|
16
16
|
- [3. Query (3)](#3-query-3-tools)
|
package/README.md
CHANGED
|
@@ -10,12 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
[](https://www.npmjs.com/package/mcp-dataverse)
|
|
12
12
|
[](https://www.npmjs.com/package/mcp-dataverse)
|
|
13
|
-
[](https://github.com/codeurali/mcp-dataverse/actions/workflows/ci.yml)
|
|
14
13
|
[](https://nodejs.org)
|
|
15
14
|
[](https://www.typescriptlang.org)
|
|
16
15
|
[](LICENSE)
|
|
17
16
|
|
|
18
|
-
[
|
|
17
|
+
**[→ Full Documentation](https://codeurali.github.io/mcp-dataverse-docs)**
|
|
19
18
|
|
|
20
19
|
</div>
|
|
21
20
|
|
|
@@ -23,7 +22,7 @@
|
|
|
23
22
|
|
|
24
23
|
## Why MCP Dataverse?
|
|
25
24
|
|
|
26
|
-
AI agents hallucinate schema, guess column names, and build broken OData queries. This server gives them **real-time access** to your Dataverse environment — schema, records, metadata, solutions — through the Model Context Protocol.
|
|
25
|
+
AI agents hallucinate schema, guess column names, and build broken OData queries. This server gives them **real-time access** to your Dataverse environment — schema, records, metadata, solutions — through the [Model Context Protocol](https://modelcontextprotocol.io).
|
|
27
26
|
|
|
28
27
|
- **No Azure AD app registration** — device code flow, zero pre-configuration
|
|
29
28
|
- **Works with any MCP client** — VS Code, Claude, Cursor, Windsurf, Gemini, Codex CLI
|
|
@@ -40,165 +39,41 @@ AI agents hallucinate schema, guess column names, and build broken OData queries
|
|
|
40
39
|
npx mcp-dataverse install
|
|
41
40
|
```
|
|
42
41
|
|
|
43
|
-
The interactive wizard configures your environment, registers the server in VS Code, and authenticates your Microsoft account
|
|
42
|
+
The interactive wizard configures your environment, registers the server in VS Code, and authenticates your Microsoft account in under 2 minutes.
|
|
44
43
|
|
|
45
|
-
> Requires Node.js 20
|
|
46
|
-
|
|
47
|
-
<details>
|
|
48
|
-
<summary><strong>Manual setup (mcp.json)</strong></summary>
|
|
49
|
-
|
|
50
|
-
Add to `.vscode/mcp.json` or user-level MCP configuration:
|
|
51
|
-
|
|
52
|
-
```jsonc
|
|
53
|
-
{
|
|
54
|
-
"servers": {
|
|
55
|
-
"mcp-dataverse": {
|
|
56
|
-
"type": "stdio",
|
|
57
|
-
"command": "npx",
|
|
58
|
-
"args": ["-y", "mcp-dataverse"],
|
|
59
|
-
"env": {
|
|
60
|
-
"MCP_CONFIG_PATH": "/path/to/.mcp-dataverse/config.json"
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
</details>
|
|
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).
|
|
68
45
|
|
|
69
46
|
---
|
|
70
47
|
|
|
71
48
|
## Authentication
|
|
72
49
|
|
|
73
|
-
**No PAC CLI, no app registration, no client secret.**
|
|
50
|
+
**No PAC CLI, no app registration, no client secret.** Uses Microsoft's device code flow (MSAL):
|
|
74
51
|
|
|
75
|
-
1. **First tool call** → a sign-in code appears in the Output panel (`View → Output → MCP`)
|
|
76
|
-
2. Open `https://microsoft.com/devicelogin` →
|
|
52
|
+
1. **First tool call** → a sign-in code appears in the MCP Output panel (`View → Output → MCP`)
|
|
53
|
+
2. Open `https://microsoft.com/devicelogin` → enter the code → sign in with your work account
|
|
77
54
|
3. **Done.** Token is cached encrypted — all future starts are silent
|
|
78
55
|
|
|
79
|
-
Re-
|
|
56
|
+
Re-authenticate after ~90 days of inactivity: `npx mcp-dataverse-auth`
|
|
80
57
|
|
|
81
58
|
---
|
|
82
59
|
|
|
83
60
|
## Capabilities
|
|
84
61
|
|
|
85
|
-
|
|
|
86
|
-
|
|
87
|
-
| **
|
|
88
|
-
| **
|
|
89
|
-
| **10 Workflows** | Guided multi-step sequences for common tasks (explore schema, create record, bulk operations…) |
|
|
90
|
-
| **Tool Router** | Intent-based tool suggestion — ask what you need, get the right tools |
|
|
91
|
-
| **Progress Notifications** | Real-time progress for paging and batch operations |
|
|
92
|
-
| **HTTP + SSE Transport** | Supports both stdio (default) and HTTP/SSE (`--transport http --port 3001`) |
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Tools (54)
|
|
97
|
-
|
|
98
|
-
### Core (50 tools)
|
|
99
|
-
|
|
100
|
-
| Category | Count | Tools |
|
|
101
|
-
|----------|-------|-------|
|
|
102
|
-
| **Metadata** | 8 | List tables, get schema, relationships, option sets, entity keys |
|
|
103
|
-
| **Query** | 3 | OData query, FetchXML, paginated retrieval |
|
|
62
|
+
| Category | Count | Description |
|
|
63
|
+
|----------|-------|-------------|
|
|
64
|
+
| **Metadata** | 8 | Tables, schema, relationships, option sets, entity keys |
|
|
65
|
+
| **Query** | 3 | OData, FetchXML, paginated retrieval |
|
|
104
66
|
| **CRUD** | 6 | Get, create, update, delete, upsert, assign |
|
|
105
|
-
| **
|
|
106
|
-
| **
|
|
107
|
-
| **Batch** | 1 | Up to 1000 operations in a single atomic request |
|
|
67
|
+
| **Actions & Functions** | 6 | Bound/unbound Dataverse actions and functions |
|
|
68
|
+
| **Batch** | 1 | Up to 1000 operations atomically |
|
|
108
69
|
| **Solutions** | 3 | List solutions, components, publish customizations |
|
|
109
|
-
| **
|
|
110
|
-
| **
|
|
111
|
-
| **Audit** | 1 | Record change history |
|
|
112
|
-
| **Trace** | 2 | Plugin trace logs, workflow execution logs |
|
|
113
|
-
| **Environment** | 2 | Get/set environment variables |
|
|
114
|
-
| **Users & Teams** | 3 | List users, roles, teams |
|
|
70
|
+
| **Search** | 1 | Full-text Relevance Search |
|
|
71
|
+
| **Users & Teams** | 3 | Users, roles, teams |
|
|
115
72
|
| **Files** | 2 | Upload/download file and image columns |
|
|
116
|
-
| **
|
|
117
|
-
| **
|
|
118
|
-
| **Org** | 1 | Business units hierarchy |
|
|
119
|
-
| **Tracking** | 1 | Delta change detection with tokens |
|
|
120
|
-
| **Impersonation** | 1 | Execute any tool on behalf of another user |
|
|
121
|
-
| **Quality** | 1 | Duplicate detection |
|
|
122
|
-
| **Auth** | 1 | WhoAmI connection verification |
|
|
123
|
-
|
|
124
|
-
### Assistance (4 tools)
|
|
125
|
-
|
|
126
|
-
| Tool | Purpose |
|
|
127
|
-
|------|---------|
|
|
128
|
-
| `dataverse_suggest_tools` | Describe your intent → get the right tools with usage examples |
|
|
129
|
-
| `dataverse_list_tool_tags` | Browse all tools by category tag |
|
|
130
|
-
| `dataverse_list_workflows` | List available guided workflows |
|
|
131
|
-
| `dataverse_get_workflow` | Get step-by-step instructions for a specific workflow |
|
|
132
|
-
|
|
133
|
-
> Full schema and parameter details → [CAPABILITIES.md](CAPABILITIES.md)
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## Architecture
|
|
138
|
-
|
|
139
|
-
```mermaid
|
|
140
|
-
flowchart LR
|
|
141
|
-
CLIENT["MCP Client\nCopilot · Claude · Cursor · Windsurf…"]
|
|
142
|
-
|
|
143
|
-
CLIENT -->|stdio / HTTP+SSE| SERVER
|
|
144
|
-
|
|
145
|
-
subgraph SERVER["MCP Server"]
|
|
146
|
-
direction TB
|
|
147
|
-
REGISTRY["Tool Registry — O(1) dispatch"]
|
|
148
|
-
TOOLS["54 Tools · 4 Resources"]
|
|
149
|
-
GUARD["Guardrails · Annotations · Structured Outputs"]
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
SERVER --> HTTP
|
|
153
|
-
|
|
154
|
-
subgraph HTTP["HTTP Layer"]
|
|
155
|
-
direction TB
|
|
156
|
-
HTTPC["HttpClient — native fetch · retry · timeout"]
|
|
157
|
-
AUTH["AuthProvider — MSAL device code flow"]
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
HTTP --> API["Dataverse\nWeb API v9.2"]
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
**Stack**: TypeScript strict · Node.js 20+ · Zod validation · 459 tests · GitHub Actions CI
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Configuration
|
|
168
|
-
|
|
169
|
-
`~/.mcp-dataverse/config.json` (created by the install wizard):
|
|
170
|
-
|
|
171
|
-
```json
|
|
172
|
-
{
|
|
173
|
-
"environmentUrl": "https://yourorg.crm.dynamics.com",
|
|
174
|
-
"requestTimeoutMs": 30000,
|
|
175
|
-
"maxRetries": 3
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Config resolution: `MCP_CONFIG_PATH` env var → `~/.mcp-dataverse/config.json` → `./config.json`
|
|
180
|
-
|
|
181
|
-
---
|
|
73
|
+
| **+ more** | … | Audit, trace logs, delta tracking, impersonation, annotations… |
|
|
74
|
+
| **Assistance** | 4 | Tool router, workflow guide |
|
|
182
75
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
| Command | Description |
|
|
186
|
-
|---------|-------------|
|
|
187
|
-
| `npx mcp-dataverse install` | Interactive setup wizard |
|
|
188
|
-
| `npx mcp-dataverse doctor` | Diagnose configuration and connectivity issues |
|
|
189
|
-
| `npx mcp-dataverse-auth [url]` | Re-authenticate or switch environment |
|
|
190
|
-
| `npx mcp-dataverse --transport http --port 3001` | Start with HTTP/SSE transport |
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Security
|
|
195
|
-
|
|
196
|
-
- **Zero credentials in code** — device code flow, no client secrets
|
|
197
|
-
- **Encrypted token cache** — AES-256-GCM in `~/.mcp-dataverse/`
|
|
198
|
-
- **Tokens never logged** — only diagnostic messages on stderr
|
|
199
|
-
- **Destructive guardrails** — delete operations require explicit `confirm: true`
|
|
200
|
-
- **User-scoped access** — no privilege escalation beyond the authenticated user
|
|
201
|
-
- **Zod validation** — all tool inputs validated at the boundary
|
|
76
|
+
[→ Full Capabilities Reference](https://codeurali.github.io/mcp-dataverse-docs/capabilities)
|
|
202
77
|
|
|
203
78
|
---
|
|
204
79
|
|
|
@@ -208,25 +83,12 @@ Config resolution: `MCP_CONFIG_PATH` env var → `~/.mcp-dataverse/config.json`
|
|
|
208
83
|
|---------|-----|
|
|
209
84
|
| No sign-in prompt | Open **View → Output → MCP** — the device code is displayed there |
|
|
210
85
|
| `No MSAL accounts found` | Run `npx mcp-dataverse-auth` then restart the server |
|
|
211
|
-
| `Authentication timed out` |
|
|
86
|
+
| `Authentication timed out` | 5-minute window expired — restart MCP for a new code |
|
|
212
87
|
| Server not appearing in Agent mode | Run `npx mcp-dataverse install` or `npx mcp-dataverse doctor` |
|
|
213
|
-
| HTTP errors | Run `npx mcp-dataverse doctor` to
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## Contributing
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
git clone https://github.com/codeurali/mcp-dataverse.git && cd mcp-dataverse
|
|
221
|
-
npm install
|
|
222
|
-
npm run build
|
|
223
|
-
npm test # 459 tests across 38 suites
|
|
224
|
-
npm run lint # ESLint strict
|
|
225
|
-
npm run typecheck # TypeScript strict mode
|
|
226
|
-
```
|
|
88
|
+
| HTTP errors | Run `npx mcp-dataverse doctor` to diagnose config and connectivity |
|
|
227
89
|
|
|
228
90
|
---
|
|
229
91
|
|
|
230
92
|
## License
|
|
231
93
|
|
|
232
|
-
[MIT](LICENSE) © [
|
|
94
|
+
[MIT](LICENSE) © [Ali Taggaz](https://www.linkedin.com/in/alitaggaz/)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-dataverse",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "MCP Server for Microsoft Dataverse Web API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/server.js",
|
|
@@ -21,10 +21,7 @@
|
|
|
21
21
|
"copilot",
|
|
22
22
|
"model-context-protocol"
|
|
23
23
|
],
|
|
24
|
-
"
|
|
25
|
-
"type": "git",
|
|
26
|
-
"url": "https://github.com/codeurali/mcp-dataverse.git"
|
|
27
|
-
},
|
|
24
|
+
"homepage": "https://codeurali.github.io/mcp-dataverse-docs",
|
|
28
25
|
"files": [
|
|
29
26
|
"dist/**",
|
|
30
27
|
"README.md",
|