mcp-dataverse 0.1.7 → 0.1.8

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/README.md CHANGED
@@ -10,18 +10,22 @@ MCP server that exposes the Microsoft Dataverse Web API as **50 AI-callable tool
10
10
 
11
11
  ### One-click (VS Code)
12
12
 
13
- [![Install in VS Code](https://img.shields.io/badge/VS%20Code-Install-0078d4?logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522mcp-dataverse%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522mcp-dataverse%2522%255D%257D) [![Install in VS Code Insiders](https://img.shields.io/badge/VS%20Code%20Insiders-Install-24bfa5?logo=visualstudiocode)](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522mcp-dataverse%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522mcp-dataverse%2522%255D%257D)
13
+ [![Install in VS Code](https://img.shields.io/badge/VS%20Code-Install-0078d4?logo=visualstudiocode)](https://vscode.dev/redirect/mcp/install?name=mcp-dataverse&config=%7B%22args%22%3A%5B%22-y%22%2C%22mcp-dataverse%22%5D%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22env%22%3A%7B%22DATAVERSE_ENV_URL%22%3A%22%24%7Binput%3Adataverse_env_url%7D%22%2C%22AUTH_MODE%22%3A%22%24%7Binput%3Adataverse_auth_mode%7D%22%2C%22PAC_PROFILE_NAME%22%3A%22%24%7Binput%3Adataverse_pac_profile%7D%22%7D%7D&inputs=%5B%7B%22id%22%3A%22dataverse_env_url%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Dataverse%20URL%20%28e.g.%20https%3A%2F%2Fyourorg.crm.dynamics.com%29%22%7D%2C%7B%22default%22%3A%22pac%22%2C%22id%22%3A%22dataverse_auth_mode%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Auth%20mode%3A%20pac%20%28default%29%20or%20msal%22%7D%2C%7B%22default%22%3A%22default%22%2C%22id%22%3A%22dataverse_pac_profile%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22PAC%20CLI%20profile%20name%20%28default%3A%20default%29%22%7D%5D) [![Install in VS Code Insiders](https://img.shields.io/badge/VS%20Code%20Insiders-Install-24bfa5?logo=visualstudiocode)](https://insiders.vscode.dev/redirect/mcp/install?name=mcp-dataverse&config=%7B%22args%22%3A%5B%22-y%22%2C%22mcp-dataverse%22%5D%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22env%22%3A%7B%22DATAVERSE_ENV_URL%22%3A%22%24%7Binput%3Adataverse_env_url%7D%22%2C%22AUTH_MODE%22%3A%22%24%7Binput%3Adataverse_auth_mode%7D%22%2C%22PAC_PROFILE_NAME%22%3A%22%24%7Binput%3Adataverse_pac_profile%7D%22%7D%7D&inputs=%5B%7B%22id%22%3A%22dataverse_env_url%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Dataverse%20URL%20%28e.g.%20https%3A%2F%2Fyourorg.crm.dynamics.com%29%22%7D%2C%7B%22default%22%3A%22pac%22%2C%22id%22%3A%22dataverse_auth_mode%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Auth%20mode%3A%20pac%20%28default%29%20or%20msal%22%7D%2C%7B%22default%22%3A%22default%22%2C%22id%22%3A%22dataverse_pac_profile%22%2C%22password%22%3Afalse%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22PAC%20CLI%20profile%20name%20%28default%3A%20default%29%22%7D%5D)
14
+
15
+ > VS Code will prompt for your Dataverse URL, auth mode, and PAC profile during installation.
14
16
 
15
17
  ### Command line
16
18
 
17
19
  ```bash
18
20
  # VS Code
19
- code --add-mcp '{"name":"mcp-dataverse","command":"npx","args":["-y","mcp-dataverse"]}'
21
+ code --add-mcp '{"name":"dataverse","type":"stdio","command":"npx","args":["-y","mcp-dataverse"],"env":{"DATAVERSE_ENV_URL":"https://yourorg.crm.dynamics.com","AUTH_MODE":"pac"}}'
20
22
 
21
23
  # VS Code Insiders
22
- code-insiders --add-mcp '{"name":"mcp-dataverse","command":"npx","args":["-y","mcp-dataverse"]}'
24
+ code-insiders --add-mcp '{"name":"dataverse","type":"stdio","command":"npx","args":["-y","mcp-dataverse"],"env":{"DATAVERSE_ENV_URL":"https://yourorg.crm.dynamics.com","AUTH_MODE":"pac"}}'
23
25
  ```
24
26
 
27
+ > Replace `https://yourorg.crm.dynamics.com` with your actual Dataverse environment URL.
28
+
25
29
  ### Manual (mcp.json)
26
30
 
27
31
  Add to your `.vscode/mcp.json` (or user settings):
@@ -32,7 +36,11 @@ Add to your `.vscode/mcp.json` (or user settings):
32
36
  "dataverse": {
33
37
  "type": "stdio",
34
38
  "command": "npx",
35
- "args": ["-y", "mcp-dataverse"]
39
+ "args": ["-y", "mcp-dataverse"],
40
+ "env": {
41
+ "DATAVERSE_ENV_URL": "https://yourorg.crm.dynamics.com",
42
+ "AUTH_MODE": "pac"
43
+ }
36
44
  }
37
45
  }
38
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.loader.d.ts","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI/D,wBAAgB,UAAU,IAAI,MAAM,CAqDnC"}
1
+ {"version":3,"file":"config.loader.d.ts","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI/D,wBAAgB,UAAU,IAAI,MAAM,CAuDnC"}
@@ -15,31 +15,33 @@ export function loadConfig() {
15
15
  throw new Error(`Invalid JSON in ${configPath}. Check for syntax errors (trailing commas, missing quotes).`);
16
16
  }
17
17
  }
18
- // Override with env vars if present
19
- if (process.env["DATAVERSE_ENV_URL"]) {
20
- rawConfig["environmentUrl"] = process.env["DATAVERSE_ENV_URL"];
21
- }
22
- if (process.env["AUTH_MODE"]) {
23
- rawConfig["authMode"] = process.env["AUTH_MODE"];
24
- }
25
- if (process.env["PAC_PROFILE_NAME"]) {
26
- rawConfig["pacProfileName"] = process.env["PAC_PROFILE_NAME"];
27
- }
28
- if (process.env["TENANT_ID"]) {
29
- rawConfig["tenantId"] = process.env["TENANT_ID"];
30
- }
31
- if (process.env["CLIENT_ID"]) {
32
- rawConfig["clientId"] = process.env["CLIENT_ID"];
33
- }
34
- if (process.env["CLIENT_SECRET"]) {
35
- rawConfig["clientSecret"] = process.env["CLIENT_SECRET"];
36
- }
37
- if (process.env["REQUEST_TIMEOUT_MS"]) {
38
- rawConfig["requestTimeoutMs"] = Number(process.env["REQUEST_TIMEOUT_MS"]);
39
- }
40
- if (process.env["MAX_RETRIES"]) {
41
- rawConfig["maxRetries"] = Number(process.env["MAX_RETRIES"]);
42
- }
18
+ // Override with env vars if present.
19
+ // Accepts both SCREAMING_SNAKE_CASE (documented, server.json) and camelCase
20
+ // (generated by VS Code when it reads config.example.json from the npm package).
21
+ const envUrl = process.env["DATAVERSE_ENV_URL"] ?? process.env["environmentUrl"];
22
+ if (envUrl)
23
+ rawConfig["environmentUrl"] = envUrl;
24
+ const authMode = process.env["AUTH_MODE"] ?? process.env["authMode"];
25
+ if (authMode)
26
+ rawConfig["authMode"] = authMode;
27
+ const pacProfile = process.env["PAC_PROFILE_NAME"] ?? process.env["pacProfileName"];
28
+ if (pacProfile)
29
+ rawConfig["pacProfileName"] = pacProfile;
30
+ const tenantId = process.env["TENANT_ID"] ?? process.env["tenantId"];
31
+ if (tenantId)
32
+ rawConfig["tenantId"] = tenantId;
33
+ const clientId = process.env["CLIENT_ID"] ?? process.env["clientId"];
34
+ if (clientId)
35
+ rawConfig["clientId"] = clientId;
36
+ const clientSecret = process.env["CLIENT_SECRET"] ?? process.env["clientSecret"];
37
+ if (clientSecret)
38
+ rawConfig["clientSecret"] = clientSecret;
39
+ const timeoutMs = process.env["REQUEST_TIMEOUT_MS"] ?? process.env["requestTimeoutMs"];
40
+ if (timeoutMs)
41
+ rawConfig["requestTimeoutMs"] = Number(timeoutMs);
42
+ const maxRetries = process.env["MAX_RETRIES"] ?? process.env["maxRetries"];
43
+ if (maxRetries)
44
+ rawConfig["maxRetries"] = Number(maxRetries);
43
45
  const result = ConfigSchema.safeParse(rawConfig);
44
46
  if (!result.success) {
45
47
  throw new Error(`Invalid configuration:\n${result.error.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-dataverse",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "MCP Server for Microsoft Dataverse Web API",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
@@ -26,8 +26,6 @@
26
26
  },
27
27
  "files": [
28
28
  "dist/**",
29
- "config.example.json",
30
- ".env.example",
31
29
  "README.md",
32
30
  "LICENSE",
33
31
  "CAPABILITIES.md",
package/server.json CHANGED
@@ -15,14 +15,12 @@
15
15
  "url": "https://github.com/codeurali/mcp-dataverse",
16
16
  "source": "github"
17
17
  },
18
- "version": "0.1.7",
19
- "packages": [
18
+ "version": "0.1.8",
20
19
  {
21
20
  "registryType": "npm",
22
21
  "registryBaseUrl": "https://registry.npmjs.org",
23
22
  "identifier": "mcp-dataverse",
24
- "version": "0.1.7",
25
- "transport": {
23
+ "version": "0.1.8", {
26
24
  "type": "stdio"
27
25
  },
28
26
  "environmentVariables": [
package/.env.example DELETED
@@ -1,15 +0,0 @@
1
- # MCP Dataverse Configuration
2
- # Set these environment variables (or use config.json for local dev)
3
-
4
- DATAVERSE_ENV_URL=https://yourorg.crm.dynamics.com
5
- AUTH_MODE=pac
6
- PAC_PROFILE_NAME=default
7
-
8
- # MSAL client credentials (required if AUTH_MODE=msal)
9
- TENANT_ID=
10
- CLIENT_ID=
11
- CLIENT_SECRET=
12
-
13
- # Tuning (optional)
14
- # REQUEST_TIMEOUT_MS=30000
15
- # MAX_RETRIES=3
@@ -1,10 +0,0 @@
1
- {
2
- "environmentUrl": "https://yourorg.crm.dynamics.com",
3
- "authMode": "pac",
4
- "pacProfileName": "default",
5
- "tenantId": "",
6
- "clientId": "",
7
- "clientSecret": "",
8
- "requestTimeoutMs": 30000,
9
- "maxRetries": 3
10
- }