mcp-dataverse 0.2.3 → 0.2.5
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 +35 -25
- package/dist/config/config.loader.d.ts.map +1 -1
- package/dist/config/config.loader.js +5 -2
- package/dist/config/config.loader.js.map +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +111 -51
- package/dist/install.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -8,22 +8,33 @@ MCP server that exposes the Microsoft Dataverse Web API as **50 AI-callable tool
|
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
11
|
-
### ✅ Recommended — VS Code
|
|
11
|
+
### ✅ Recommended — Interactive CLI (VS Code 1.99+)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npx mcp-dataverse install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The wizard will:
|
|
18
|
+
|
|
19
|
+
1. Ask for your Dataverse environment URL
|
|
20
|
+
2. Save configuration to `~/.mcp-dataverse/config.json`
|
|
21
|
+
3. Register the server in VS Code and/or VS Code Insiders via `code --add-mcp`
|
|
22
|
+
4. Authenticate with your Microsoft account (device code flow)
|
|
23
|
+
|
|
24
|
+
After the wizard completes, the server is immediately available in VS Code — open Copilot chat and the 50 Dataverse tools are ready.
|
|
25
|
+
|
|
26
|
+
> **Requires VS Code 1.99+** — the CLI registration uses `code --add-mcp`, introduced in March 2025. If neither `code` nor `code-insiders` is on your PATH, the wizard prints a manual snippet to copy-paste. Custom VS Code profiles are also detected and patched automatically.
|
|
27
|
+
|
|
28
|
+
---
|
|
14
29
|
|
|
15
|
-
|
|
16
|
-
2. Press **Ctrl+Shift+P** (or **Cmd+Shift+P** on macOS)
|
|
17
|
-
3. Type **`MCP: Add Server`** and select it
|
|
18
|
-
4. Choose **`NPM Package`**
|
|
19
|
-
5. Enter the package name: **`mcp-dataverse`**
|
|
20
|
-
6. Choose the scope: **User** (available in all workspaces) or **Workspace** (current project only)
|
|
30
|
+
### Alternative — VS Code Command Palette
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
1. Press **Ctrl+Shift+P** (or **Cmd+Shift+P** on macOS)
|
|
33
|
+
2. Type **`MCP: Add Server`** → choose **`NPM Package`** → enter **`mcp-dataverse`**
|
|
34
|
+
3. Choose the scope: **User** or **Workspace**
|
|
35
|
+
4. Edit the generated entry to add your environment URL:
|
|
23
36
|
|
|
24
37
|
```jsonc
|
|
25
|
-
// ~/.config/Code/User/mcp.json (User scope)
|
|
26
|
-
// or .vscode/mcp.json (Workspace scope)
|
|
27
38
|
{
|
|
28
39
|
"servers": {
|
|
29
40
|
"mcp-dataverse": {
|
|
@@ -31,33 +42,31 @@ VS Code will create or update `mcp.json` automatically. Then **edit the generate
|
|
|
31
42
|
"command": "npx",
|
|
32
43
|
"args": ["-y", "mcp-dataverse"],
|
|
33
44
|
"env": {
|
|
34
|
-
"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
45
|
+
"MCP_CONFIG_PATH": "/path/to/.mcp-dataverse/config.json"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
38
49
|
}
|
|
39
50
|
```
|
|
40
51
|
|
|
41
|
-
Replace `https://yourorg.crm.dynamics.com` with your actual Dataverse environment URL.
|
|
42
|
-
|
|
43
52
|
---
|
|
44
53
|
|
|
45
54
|
### Manual (mcp.json)
|
|
46
55
|
|
|
47
|
-
Create or edit `.vscode/mcp.json`
|
|
56
|
+
Create or edit `.vscode/mcp.json` (workspace scope) or the user-level `mcp.json` (**Ctrl+Shift+P** → **MCP: Open User Configuration**):
|
|
48
57
|
|
|
49
58
|
```jsonc
|
|
50
59
|
{
|
|
51
60
|
"servers": {
|
|
52
|
-
"dataverse": {
|
|
61
|
+
"mcp-dataverse": {
|
|
53
62
|
"type": "stdio",
|
|
54
63
|
"command": "npx",
|
|
55
64
|
"args": ["-y", "mcp-dataverse"],
|
|
56
65
|
"env": {
|
|
57
|
-
"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
66
|
+
"MCP_CONFIG_PATH": "/path/to/.mcp-dataverse/config.json"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
61
70
|
}
|
|
62
71
|
```
|
|
63
72
|
|
|
@@ -313,5 +322,6 @@ GitHub Copilot → stdio → MCP Server → Tool Router → DataverseClient →
|
|
|
313
322
|
| Browser didn't open automatically | Copy the URL from the Output panel manually: `https://microsoft.com/devicelogin` |
|
|
314
323
|
| `No MSAL accounts found` | Run `npx mcp-dataverse-auth` to re-authenticate, then restart the server |
|
|
315
324
|
| `Authentication timed out` | The 5-minute window expired — restart the MCP server to get a new code |
|
|
316
|
-
| `"https://" is required` | Check
|
|
317
|
-
| Server not appearing in Copilot Agent mode |
|
|
325
|
+
| `"https://" is required` | Check your `~/.mcp-dataverse/config.json` — URL must start with `https://` |
|
|
326
|
+
| Server not appearing in Copilot Agent mode | Re-run `npx mcp-dataverse install`; check **Output → MCP** panel for errors |
|
|
327
|
+
| Install wizard says "not found on PATH" | Install VS Code Shell Command (**Ctrl+Shift+P** → *Shell Command: Install...*) or use the manual snippet provided |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.loader.d.ts","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.loader.d.ts","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI/D,wBAAgB,UAAU,IAAI,MAAM,CA0CnC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { readFileSync, existsSync } from "fs";
|
|
2
2
|
import { join } from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
3
4
|
import { ConfigSchema } from "./config.schema.js";
|
|
4
5
|
const CONFIG_FILE_NAME = "config.json";
|
|
5
6
|
export function loadConfig() {
|
|
6
|
-
// Priority: env vars > MCP_CONFIG_PATH
|
|
7
|
-
const
|
|
7
|
+
// Priority: env vars > 1. MCP_CONFIG_PATH > 2. ~/.mcp-dataverse/config.json > 3. cwd/config.json
|
|
8
|
+
const defaultConfigPath = join(homedir(), ".mcp-dataverse", CONFIG_FILE_NAME);
|
|
9
|
+
const configPath = process.env["MCP_CONFIG_PATH"] ??
|
|
10
|
+
(existsSync(defaultConfigPath) ? defaultConfigPath : join(process.cwd(), CONFIG_FILE_NAME));
|
|
8
11
|
let rawConfig = {};
|
|
9
12
|
if (existsSync(configPath)) {
|
|
10
13
|
const fileContent = readFileSync(configPath, "utf-8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,UAAU,UAAU;IACxB,
|
|
1
|
+
{"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,UAAU,UAAU;IACxB,iGAAiG;IACjG,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9E,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE9F,IAAI,SAAS,GAA4B,EAAE,CAAC;IAE5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA4B,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,mBAAmB,UAAU,8DAA8D,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,4EAA4E;IAC5E,iFAAiF;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjF,IAAI,MAAM;QAAE,SAAS,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;IAEjD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvE,IAAI,SAAS;QAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,UAAU;QAAE,SAAS,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";AAyJA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA6FhD"}
|
package/dist/install.js
CHANGED
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
* Steps:
|
|
7
7
|
* 1. Prompt for Dataverse environment URL
|
|
8
8
|
* 2. Save config to ~/.mcp-dataverse/config.json
|
|
9
|
-
* 3. Register the server in VS Code
|
|
9
|
+
* 3. Register the server in VS Code via `code --add-mcp` CLI
|
|
10
10
|
* 4. Authenticate via Microsoft device code flow
|
|
11
11
|
*/
|
|
12
12
|
import { createInterface } from "readline/promises";
|
|
13
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
14
|
+
import { execFileSync } from "child_process";
|
|
14
15
|
import { homedir } from "os";
|
|
15
|
-
import {
|
|
16
|
+
import { join } from "path";
|
|
16
17
|
import { DeviceCodeAuthProvider } from "./auth/device-code-auth-provider.js";
|
|
17
18
|
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
18
19
|
const CACHE_DIR = join(homedir(), ".mcp-dataverse");
|
|
@@ -20,56 +21,100 @@ const CONFIG_FILE = join(CACHE_DIR, "config.json");
|
|
|
20
21
|
// ── Output helpers ─────────────────────────────────────────────────────────────
|
|
21
22
|
const out = (msg) => process.stdout.write(msg + "\n");
|
|
22
23
|
const hr = () => process.stdout.write("─".repeat(58) + "\n");
|
|
23
|
-
// ── VS Code mcp
|
|
24
|
+
// ── VS Code CLI registration via --add-mcp ─────────────────────────────────────
|
|
25
|
+
function registerViaCodeCli(configFilePath) {
|
|
26
|
+
const serverDef = JSON.stringify({
|
|
27
|
+
name: "mcp-dataverse",
|
|
28
|
+
type: "stdio",
|
|
29
|
+
command: "npx",
|
|
30
|
+
args: ["-y", "mcp-dataverse"],
|
|
31
|
+
env: { MCP_CONFIG_PATH: configFilePath },
|
|
32
|
+
});
|
|
33
|
+
const clis = [
|
|
34
|
+
{ label: "VS Code Insiders", bin: "code-insiders" },
|
|
35
|
+
{ label: "VS Code Stable", bin: "code" },
|
|
36
|
+
];
|
|
37
|
+
const results = [];
|
|
38
|
+
for (const { label, bin } of clis) {
|
|
39
|
+
try {
|
|
40
|
+
// On Windows, VS Code CLI is a .cmd batch file — execFileSync can't run
|
|
41
|
+
// .cmd directly, so we go through cmd.exe /c.
|
|
42
|
+
const args = process.platform === "win32"
|
|
43
|
+
? ["/c", bin, "--add-mcp", serverDef]
|
|
44
|
+
: ["--add-mcp", serverDef];
|
|
45
|
+
const exe = process.platform === "win32" ? "cmd.exe" : bin;
|
|
46
|
+
execFileSync(exe, args, { stdio: "pipe", timeout: 15_000 });
|
|
47
|
+
results.push({ label, ok: true });
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
results.push({ label, ok: false });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return results;
|
|
54
|
+
}
|
|
55
|
+
// ── Patch custom VS Code profiles ──────────────────────────────────────────────
|
|
56
|
+
// `--add-mcp` only writes to the default profile. If the user runs VS Code with
|
|
57
|
+
// a custom profile, that profile has its own mcp.json that we need to patch too.
|
|
24
58
|
function getVSCodeUserDirs() {
|
|
25
59
|
const home = homedir();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
60
|
+
switch (process.platform) {
|
|
61
|
+
case "win32": {
|
|
62
|
+
const appData = process.env.APPDATA ?? join(home, "AppData", "Roaming");
|
|
63
|
+
return [
|
|
64
|
+
{ label: "VS Code Insiders", dir: join(appData, "Code - Insiders", "User") },
|
|
65
|
+
{ label: "VS Code Stable", dir: join(appData, "Code", "User") },
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
case "darwin":
|
|
69
|
+
return [
|
|
70
|
+
{ label: "VS Code Insiders", dir: join(home, "Library", "Application Support", "Code - Insiders", "User") },
|
|
71
|
+
{ label: "VS Code Stable", dir: join(home, "Library", "Application Support", "Code", "User") },
|
|
72
|
+
];
|
|
73
|
+
default:
|
|
74
|
+
return [
|
|
75
|
+
{ label: "VS Code Insiders", dir: join(home, ".config", "Code - Insiders", "User") },
|
|
76
|
+
{ label: "VS Code Stable", dir: join(home, ".config", "Code", "User") },
|
|
77
|
+
];
|
|
39
78
|
}
|
|
40
|
-
const base = join(home, ".config");
|
|
41
|
-
return [
|
|
42
|
-
{ label: "VS Code Insiders", mcpJson: join(base, "Code - Insiders", "User", "mcp.json") },
|
|
43
|
-
{ label: "VS Code Stable", mcpJson: join(base, "Code", "User", "mcp.json") },
|
|
44
|
-
];
|
|
45
79
|
}
|
|
46
|
-
|
|
47
|
-
function patchVSCodeMcpJson(configFilePath) {
|
|
48
|
-
const updated = [];
|
|
80
|
+
function patchProfileConfigs(configFilePath) {
|
|
49
81
|
const serverEntry = {
|
|
50
82
|
type: "stdio",
|
|
51
83
|
command: "npx",
|
|
52
84
|
args: ["-y", "mcp-dataverse"],
|
|
53
85
|
env: { MCP_CONFIG_PATH: configFilePath },
|
|
54
86
|
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
87
|
+
const patched = [];
|
|
88
|
+
for (const { dir } of getVSCodeUserDirs()) {
|
|
89
|
+
const profilesDir = join(dir, "profiles");
|
|
90
|
+
if (!existsSync(profilesDir))
|
|
58
91
|
continue;
|
|
59
|
-
let
|
|
60
|
-
|
|
92
|
+
let entries;
|
|
93
|
+
try {
|
|
94
|
+
entries = readdirSync(profilesDir);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
for (const profile of entries) {
|
|
100
|
+
const mcpPath = join(profilesDir, profile, "mcp.json");
|
|
101
|
+
if (!existsSync(mcpPath))
|
|
102
|
+
continue;
|
|
61
103
|
try {
|
|
62
|
-
|
|
104
|
+
const raw = readFileSync(mcpPath, "utf-8");
|
|
105
|
+
const json = JSON.parse(raw);
|
|
106
|
+
if (!json.servers)
|
|
107
|
+
json.servers = {};
|
|
108
|
+
json.servers["mcp-dataverse"] = serverEntry;
|
|
109
|
+
writeFileSync(mcpPath, JSON.stringify(json, null, "\t") + "\n", "utf-8");
|
|
110
|
+
patched.push(mcpPath);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// skip malformed files
|
|
63
114
|
}
|
|
64
|
-
catch { /* start fresh */ }
|
|
65
115
|
}
|
|
66
|
-
if (!data["servers"] || typeof data["servers"] !== "object")
|
|
67
|
-
data["servers"] = {};
|
|
68
|
-
data["servers"]["mcp-dataverse"] = serverEntry;
|
|
69
|
-
writeFileSync(mcpJson, JSON.stringify(data, null, 2) + "\n", "utf-8");
|
|
70
|
-
updated.push({ label, path: mcpJson });
|
|
71
116
|
}
|
|
72
|
-
return
|
|
117
|
+
return patched;
|
|
73
118
|
}
|
|
74
119
|
// ── URL validation ─────────────────────────────────────────────────────────────
|
|
75
120
|
function isValidDataverseUrl(raw) {
|
|
@@ -87,7 +132,7 @@ function isValidDataverseUrl(raw) {
|
|
|
87
132
|
}
|
|
88
133
|
// ── Manual mcp.json snippet ────────────────────────────────────────────────────
|
|
89
134
|
function printManualSnippet(configFilePath) {
|
|
90
|
-
out(" Add this to your VS Code
|
|
135
|
+
out(" Add this to your VS Code mcp.json (Ctrl+Shift+P → MCP: Open User Configuration):");
|
|
91
136
|
out("");
|
|
92
137
|
out(' "mcp-dataverse": {');
|
|
93
138
|
out(' "type": "stdio",');
|
|
@@ -106,7 +151,7 @@ export async function runInstall() {
|
|
|
106
151
|
out("This wizard will:");
|
|
107
152
|
out(" 1. Ask for your Dataverse environment URL");
|
|
108
153
|
out(" 2. Save configuration to ~/.mcp-dataverse/config.json");
|
|
109
|
-
out(" 3. Register the server in VS Code
|
|
154
|
+
out(" 3. Register the server in VS Code via CLI");
|
|
110
155
|
out(" 4. Authenticate with your Microsoft account");
|
|
111
156
|
out("");
|
|
112
157
|
hr();
|
|
@@ -130,18 +175,28 @@ export async function runInstall() {
|
|
|
130
175
|
writeFileSync(CONFIG_FILE, JSON.stringify({ environmentUrl }, null, 2) + "\n", "utf-8");
|
|
131
176
|
out(` ✓ ${CONFIG_FILE}`);
|
|
132
177
|
out("");
|
|
133
|
-
// ── Step 3:
|
|
178
|
+
// ── Step 3: Register in VS Code via --add-mcp CLI ────────────────────────────
|
|
134
179
|
out("Registering in VS Code…");
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
180
|
+
const results = registerViaCodeCli(CONFIG_FILE);
|
|
181
|
+
const registered = results.filter((r) => r.ok);
|
|
182
|
+
if (registered.length > 0) {
|
|
183
|
+
for (const { label } of registered)
|
|
184
|
+
out(` ✓ ${label}: registered via --add-mcp`);
|
|
185
|
+
const skipped = results.filter((r) => !r.ok);
|
|
186
|
+
for (const { label } of skipped)
|
|
187
|
+
out(` – ${label}: not found on PATH (skipped)`);
|
|
139
188
|
}
|
|
140
189
|
else {
|
|
141
|
-
out("
|
|
190
|
+
out(" ⚠ Neither 'code' nor 'code-insiders' found on PATH.");
|
|
191
|
+
out(" Register manually:");
|
|
142
192
|
out("");
|
|
143
193
|
printManualSnippet(CONFIG_FILE);
|
|
144
194
|
}
|
|
195
|
+
// Also patch any custom VS Code profiles (--add-mcp only covers the default)
|
|
196
|
+
const profilePatches = patchProfileConfigs(CONFIG_FILE);
|
|
197
|
+
if (profilePatches.length > 0) {
|
|
198
|
+
out(` + Patched ${profilePatches.length} custom profile(s)`);
|
|
199
|
+
}
|
|
145
200
|
out("");
|
|
146
201
|
hr();
|
|
147
202
|
// ── Step 4: Authenticate ─────────────────────────────────────────────────────
|
|
@@ -155,9 +210,14 @@ export async function runInstall() {
|
|
|
155
210
|
out("");
|
|
156
211
|
out(" ✓ Setup complete!");
|
|
157
212
|
out("");
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
213
|
+
if (registered.length > 0) {
|
|
214
|
+
out(" The MCP server is now registered in VS Code.");
|
|
215
|
+
out(" Open VS Code → Copilot chat → the 50 Dataverse tools are ready to use.");
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
out(" Configuration and authentication are ready.");
|
|
219
|
+
out(" Register the server manually (see snippet above), then restart VS Code.");
|
|
220
|
+
}
|
|
161
221
|
out("");
|
|
162
222
|
}
|
|
163
223
|
catch (err) {
|
|
@@ -165,8 +225,8 @@ export async function runInstall() {
|
|
|
165
225
|
hr();
|
|
166
226
|
out(` ✗ Authentication failed: ${msg}`);
|
|
167
227
|
out("");
|
|
168
|
-
out(" Configuration was saved. Authenticate later
|
|
169
|
-
out(
|
|
228
|
+
out(" Configuration was saved. Authenticate later by restarting the MCP server —");
|
|
229
|
+
out(" it will prompt for device code on startup.");
|
|
170
230
|
out("");
|
|
171
231
|
process.exit(1);
|
|
172
232
|
}
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"url": "https://github.com/codeurali/mcp-dataverse",
|
|
16
16
|
"source": "github"
|
|
17
17
|
},
|
|
18
|
-
"version": "0.2.
|
|
18
|
+
"version": "0.2.5",
|
|
19
19
|
"packages": [
|
|
20
20
|
{
|
|
21
21
|
"registryType": "npm",
|
|
22
22
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
23
23
|
"identifier": "mcp-dataverse",
|
|
24
|
-
"version": "0.2.
|
|
24
|
+
"version": "0.2.5",
|
|
25
25
|
"transport": {
|
|
26
26
|
"type": "stdio"
|
|
27
27
|
},
|