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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # MCP Dataverse Server — Complete Capabilities Reference
2
2
 
3
- > **Version**: 0.3.1 | **API Version**: Dataverse Web API v9.2 | **Transport**: stdio · HTTP/SSE
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 (50 tools)](#tool-reference-50-tools)
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
  [![npm](https://img.shields.io/npm/v/mcp-dataverse)](https://www.npmjs.com/package/mcp-dataverse)
12
12
  [![npm downloads](https://img.shields.io/npm/dm/mcp-dataverse)](https://www.npmjs.com/package/mcp-dataverse)
13
- [![CI](https://github.com/codeurali/mcp-dataverse/actions/workflows/ci.yml/badge.svg)](https://github.com/codeurali/mcp-dataverse/actions/workflows/ci.yml)
14
13
  [![Node 20+](https://img.shields.io/badge/Node.js-20%2B-green)](https://nodejs.org)
15
14
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.4-blue)](https://www.typescriptlang.org)
16
15
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
17
16
 
18
- [Install](#install) · [Capabilities](#capabilities) · [Tools](#tools-54) · [Multi-Client Setup](docs/multi-client-setup.md) · [Full Reference](CAPABILITIES.md)
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. Done in under 2 minutes.
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+ and VS Code 1.99+. For other clients (Claude, Cursor, Windsurf…), see [Multi-Client Setup](docs/multi-client-setup.md).
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.** The server uses Microsoft's device code flow (MSAL Public Client).
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` → paste the code → sign in with your work account
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-authentication is only needed after ~90 days of inactivity: `npx mcp-dataverse-auth`
56
+ Re-authenticate after ~90 days of inactivity: `npx mcp-dataverse-auth`
80
57
 
81
58
  ---
82
59
 
83
60
  ## Capabilities
84
61
 
85
- | Capability | Description |
86
- |---|---|
87
- | **54 Tools** | Full Dataverse lifecycle schema, CRUD, query, FetchXML, batch, search, audit, files, solutions, and more |
88
- | **4 Resources** | `dataverse://tables`, schema templates, relationship templates, server instructions |
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
- | **Relations** | 2 | Associate, disassociate |
106
- | **Actions & Functions** | 6 | Execute bound/unbound actions and functions, dependency checks |
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
- | **Customization** | 3 | Custom actions, plugin steps, workflow state |
110
- | **Search** | 1 | Dataverse Relevance Search (full-text) |
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
- | **Annotations** | 2 | Notes and attachments (read + create) |
117
- | **Views** | 1 | System and personal saved views |
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
- ## CLI Commands
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` | The 5-minute window expired — restart the MCP server for a new code |
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 check config, auth, and connectivity |
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) © [codeurali](https://github.com/codeurali)
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.2",
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
- "repository": {
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",