@dataflint/mcp-server 1.0.5 → 1.0.10

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 DataFlint
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -136,4 +136,4 @@ Check the MCP server logs for configuration details:
136
136
 
137
137
  ## License
138
138
 
139
- Proprietary - All rights reserved by DataFlint
139
+ MIT License - see [LICENSE](./LICENSE) for details.
package/USER_GUIDE.md ADDED
@@ -0,0 +1,26 @@
1
+ # DataFlint MCP - Quick Setup
2
+
3
+ Use Claude to analyze your Apache Spark jobs with DataFlint!
4
+
5
+ ## Setup (2 Steps)
6
+
7
+ **1. Add to Claude config file:**
8
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
9
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
10
+
11
+ ```json
12
+ {"mcpServers": {"dataflint": {"command": "npx", "args": ["-y", "@dataflint/mcp-server"]}}}
13
+ ```
14
+
15
+ **2. Restart Claude Desktop** (⌘+Q on Mac, then reopen)
16
+
17
+ First launch takes 10-15 seconds to download. Test with: *"What DataFlint tools are available?"*
18
+
19
+ ## Authentication
20
+ Browser opens automatically on first use. Log in once, credentials are saved.
21
+
22
+ ## Troubleshooting
23
+ - **No tools?** Check JSON syntax, fully restart Claude, wait 15-20 seconds
24
+ - **"npx not found"?** Install Node.js from [nodejs.org](https://nodejs.org/)
25
+
26
+ **Help:** support@dataflint.io | [Docs](https://docs.dataflint.io) | [GitHub Issues](https://github.com/dataflint/vscode-extension/issues)
@@ -1,222 +1,279 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __commonJS = (cb, mod) => function __require() {
4
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
5
+ };
6
+
7
+ // ../shared-auth-config/dist/customer-auth-configs.js
8
+ var require_customer_auth_configs = __commonJS({
9
+ "../shared-auth-config/dist/customer-auth-configs.js"(exports2) {
10
+ "use strict";
11
+ Object.defineProperty(exports2, "__esModule", { value: true });
12
+ exports2.customerAuthConfigs = void 0;
13
+ exports2.customerAuthConfigs = {
14
+ // Customer domain hash Auth0 configuration
15
+ "857064adfec4e0e5e37be8afef397155db006bb6009d1b395388d9174eb40795": {
16
+ clientId: "CWvpqujjEV2aoRSDVWFSh1U6HQALygB0",
17
+ domainProducer: (customerDomain) => `https://dataflint-${customerDomain}.us.auth0.com/`
18
+ },
19
+ cafe6e0af028d729afd3c4a386482621af90e8e117b1216f2bbc08e86a5e9445: {
20
+ clientId: "HRLICLhE0BP4AeZ8dSPAoDHFmMZVacxi"
21
+ },
22
+ "1613f29ea956158d2ad56a10780feb45d78755819565e76c4bf0d9069d17aab9": {
23
+ clientId: "CnyJJKVqes0Y0uU57GreAeaPbJlm4l4w"
24
+ },
25
+ eae8e3404182477f008479b38a6629ee86b23cefe2c418c5dc5c2f0d02af5475: {
26
+ clientId: "etY3z44ssWohe77PEBIMPzktW4BmvWGT"
27
+ },
28
+ // dataflint-demo (added from commit f38928c)
29
+ cc1677626e05d82b301cc83c22a850eac849555e704f288083108d79f600cea1: {
30
+ clientId: "u9W23NGvlV58W2N9WXMMhsM12bKK8oGI"
31
+ }
32
+ };
33
+ }
17
34
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
35
+
36
+ // ../shared-auth-config/dist/index.js
37
+ var require_dist = __commonJS({
38
+ "../shared-auth-config/dist/index.js"(exports2) {
39
+ "use strict";
40
+ var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
41
+ if (k2 === void 0) k2 = k;
42
+ var desc = Object.getOwnPropertyDescriptor(m, k);
43
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
44
+ desc = { enumerable: true, get: function() {
45
+ return m[k];
46
+ } };
47
+ }
48
+ Object.defineProperty(o, k2, desc);
49
+ } : function(o, m, k, k2) {
50
+ if (k2 === void 0) k2 = k;
51
+ o[k2] = m[k];
52
+ });
53
+ var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
54
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
55
+ } : function(o, v) {
56
+ o["default"] = v;
57
+ });
58
+ var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ function() {
59
+ var ownKeys = function(o) {
60
+ ownKeys = Object.getOwnPropertyNames || function(o2) {
61
+ var ar = [];
62
+ for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;
63
+ return ar;
24
64
  };
25
65
  return ownKeys(o);
26
- };
27
- return function (mod) {
66
+ };
67
+ return function(mod) {
28
68
  if (mod && mod.__esModule) return mod;
29
69
  var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
70
+ if (mod != null) {
71
+ for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]);
72
+ }
73
+ __setModuleDefault2(result, mod);
32
74
  return result;
75
+ };
76
+ }();
77
+ Object.defineProperty(exports2, "__esModule", { value: true });
78
+ exports2.customerAuthConfigs = void 0;
79
+ exports2.getCustomerAuthConfig = getCustomerAuthConfig;
80
+ var crypto2 = __importStar2(require("crypto"));
81
+ var customer_auth_configs_1 = require_customer_auth_configs();
82
+ Object.defineProperty(exports2, "customerAuthConfigs", { enumerable: true, get: function() {
83
+ return customer_auth_configs_1.customerAuthConfigs;
84
+ } });
85
+ function getCustomerAuthConfig(customerDomain) {
86
+ var _a;
87
+ const customerHash = crypto2.createHash("sha256").update(customerDomain).digest("hex");
88
+ const customerConfig = customer_auth_configs_1.customerAuthConfigs[customerHash];
89
+ if (!customerConfig) {
90
+ return null;
91
+ }
92
+ return {
93
+ // Use custom Auth0 domain if domainProducer is defined, otherwise use default
94
+ domain: ((_a = customerConfig.domainProducer) == null ? void 0 : _a.call(customerConfig, customerDomain)) || "https://dataflint.us.auth0.com/",
95
+ // Customer-specific Auth0 client ID
96
+ clientId: customerConfig.clientId,
97
+ // Customer-specific API audience
98
+ audience: `https://api.${customerDomain}.dataflint.io`,
99
+ // Customer-specific server URL
100
+ serverUrl: `https://api.${customerDomain}.dataflint.io`
101
+ };
102
+ }
103
+ }
104
+ });
105
+
106
+ // dist/standalone/config.js
107
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
108
+ if (k2 === void 0) k2 = k;
109
+ var desc = Object.getOwnPropertyDescriptor(m, k);
110
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
111
+ desc = { enumerable: true, get: function() {
112
+ return m[k];
113
+ } };
114
+ }
115
+ Object.defineProperty(o, k2, desc);
116
+ } : function(o, m, k, k2) {
117
+ if (k2 === void 0) k2 = k;
118
+ o[k2] = m[k];
119
+ });
120
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
121
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
122
+ } : function(o, v) {
123
+ o["default"] = v;
124
+ });
125
+ var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() {
126
+ var ownKeys = function(o) {
127
+ ownKeys = Object.getOwnPropertyNames || function(o2) {
128
+ var ar = [];
129
+ for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;
130
+ return ar;
33
131
  };
34
- })();
132
+ return ownKeys(o);
133
+ };
134
+ return function(mod) {
135
+ if (mod && mod.__esModule) return mod;
136
+ var result = {};
137
+ if (mod != null) {
138
+ for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
139
+ }
140
+ __setModuleDefault(result, mod);
141
+ return result;
142
+ };
143
+ }();
35
144
  Object.defineProperty(exports, "__esModule", { value: true });
36
145
  exports.StandaloneConfigService = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const os = __importStar(require("os"));
40
- const crypto = __importStar(require("crypto"));
41
- const shared_auth_config_1 = require("@dataflint/shared-auth-config");
42
- /**
43
- * Configuration service for standalone MCP server
44
- * Implements IConfigService without VS Code dependencies
45
- */
46
- class StandaloneConfigService {
47
- config;
48
- credentialsPath;
49
- constructor(config = {}) {
50
- this.config = this.mergeWithDefaults(config);
51
- // Generate credentials path based on clientId hash to avoid collisions
52
- if (config.credentialsPath) {
53
- this.credentialsPath = config.credentialsPath;
54
- }
55
- else {
56
- const clientIdHash = crypto
57
- .createHash("sha256")
58
- .update(this.config.clientId)
59
- .digest("hex")
60
- .substring(0, 8); // Use first 8 chars of hash
61
- this.credentialsPath = path.join(os.homedir(), ".dataflint", `credentials-${clientIdHash}.json`);
62
- }
63
- // Ensure .dataflint directory exists
64
- this.ensureDataflintDirectory();
65
- }
66
- ensureDataflintDirectory() {
67
- const dataflintDir = path.dirname(this.credentialsPath);
68
- if (!fs.existsSync(dataflintDir)) {
69
- fs.mkdirSync(dataflintDir, { recursive: true, mode: 0o700 });
70
- }
71
- }
72
- mergeWithDefaults(config) {
73
- // Environment variable overrides
74
- const envConfig = {
75
- serverUrl: process.env.DATAFLINT_SERVER_URL,
76
- authDomain: process.env.DATAFLINT_AUTH_DOMAIN,
77
- clientId: process.env.DATAFLINT_CLIENT_ID,
78
- audience: process.env.DATAFLINT_AUDIENCE,
79
- scope: process.env.DATAFLINT_SCOPE,
80
- adminCompanyDomain: process.env.DATAFLINT_ADMIN_COMPANY_DOMAIN,
81
- customerDomain: process.env.DATAFLINT_CUSTOMER_DOMAIN,
82
- };
83
- // Config file (if exists)
84
- const configFilePath = path.join(os.homedir(), ".dataflint", "config.json");
85
- let fileConfig = {};
86
- if (fs.existsSync(configFilePath)) {
87
- try {
88
- const fileContent = fs.readFileSync(configFilePath, "utf8");
89
- fileConfig = JSON.parse(fileContent);
90
- }
91
- catch (error) {
92
- // Ignore file reading errors, use defaults
93
- }
94
- }
95
- // Check for customer domain (highest priority for auth config)
96
- const customerDomain = config.customerDomain ||
97
- envConfig.customerDomain ||
98
- fileConfig.customerDomain;
99
- if (customerDomain) {
100
- // Customer domain provided - resolve customer-specific config
101
- console.error(`[CONFIG] Customer domain detected: ${customerDomain}`);
102
- const customerConfig = (0, shared_auth_config_1.getCustomerAuthConfig)(customerDomain);
103
- if (!customerConfig) {
104
- console.error(`[CONFIG] ERROR: Unknown customer domain: ${customerDomain}`);
105
- throw new Error(`Unknown customer domain: "${customerDomain}". ` +
106
- `This customer is not registered in the system. ` +
107
- `Please check the domain name or contact support.`);
108
- }
109
- console.error(`[CONFIG] Using customer-specific configuration:`);
110
- console.error(`[CONFIG] - Server URL: ${customerConfig.serverUrl}`);
111
- console.error(`[CONFIG] - Auth0 Domain: ${customerConfig.domain}`);
112
- console.error(`[CONFIG] - Client ID: ${customerConfig.clientId.substring(0, 8)}...`);
113
- // Return customer-specific configuration
114
- // Customer config takes precedence over everything else
115
- return {
116
- serverUrl: customerConfig.serverUrl,
117
- authDomain: customerConfig.domain,
118
- clientId: customerConfig.clientId,
119
- audience: customerConfig.audience,
120
- scope: "openid profile email offline_access",
121
- // Credentials path only configurable via CLI argument for security
122
- credentialsPath: config.credentialsPath,
123
- adminCompanyDomain: config.adminCompanyDomain ||
124
- envConfig.adminCompanyDomain ||
125
- fileConfig.adminCompanyDomain ||
126
- "none",
127
- customerDomain: customerDomain,
128
- };
129
- }
130
- // No customer domain - use existing merge logic
131
- console.error(`[CONFIG] No customer domain - using default/explicit configuration`);
132
- return {
133
- serverUrl: config.serverUrl ||
134
- envConfig.serverUrl ||
135
- fileConfig.serverUrl ||
136
- "https://api.dataflint.io",
137
- authDomain: config.authDomain ||
138
- envConfig.authDomain ||
139
- fileConfig.authDomain ||
140
- "https://dataflint.us.auth0.com/",
141
- clientId: config.clientId ||
142
- envConfig.clientId ||
143
- fileConfig.clientId ||
144
- "1NdbhkYoLyqQWtevBNal1BozB9pSZe3g",
145
- audience: config.audience ||
146
- envConfig.audience ||
147
- fileConfig.audience ||
148
- "https://api.dataflint.io",
149
- scope: config.scope ||
150
- envConfig.scope ||
151
- fileConfig.scope ||
152
- "openid profile email offline_access",
153
- adminCompanyDomain: config.adminCompanyDomain ||
154
- envConfig.adminCompanyDomain ||
155
- fileConfig.adminCompanyDomain ||
156
- "none",
157
- // Credentials path only configurable via CLI argument for security
158
- credentialsPath: config.credentialsPath,
159
- customerDomain: undefined,
160
- };
161
- }
162
- // IConfigService interface implementation
163
- getServerUrl() {
164
- return this.config.serverUrl;
146
+ var fs = __importStar(require("fs"));
147
+ var path = __importStar(require("path"));
148
+ var os = __importStar(require("os"));
149
+ var crypto = __importStar(require("crypto"));
150
+ var shared_auth_config_1 = require_dist();
151
+ var StandaloneConfigService = class {
152
+ config;
153
+ credentialsPath;
154
+ constructor(config = {}) {
155
+ this.config = this.mergeWithDefaults(config);
156
+ if (config.credentialsPath) {
157
+ this.credentialsPath = config.credentialsPath;
158
+ } else {
159
+ const clientIdHash = crypto.createHash("sha256").update(this.config.clientId).digest("hex").substring(0, 8);
160
+ this.credentialsPath = path.join(os.homedir(), ".dataflint", `credentials-${clientIdHash}.json`);
165
161
  }
166
- getEnvironment() {
167
- return "prod";
168
- }
169
- getCustomerDomain() {
170
- return this.config.customerDomain || null;
171
- }
172
- getAdminCompanyDomain() {
173
- return this.config.adminCompanyDomain || "none";
174
- }
175
- getAuthConfig() {
176
- return {
177
- domain: this.config.authDomain,
178
- clientId: this.config.clientId,
179
- audience: this.config.audience,
180
- scope: this.config.scope || "openid profile email offline_access",
181
- };
162
+ this.ensureDataflintDirectory();
163
+ }
164
+ ensureDataflintDirectory() {
165
+ const dataflintDir = path.dirname(this.credentialsPath);
166
+ if (!fs.existsSync(dataflintDir)) {
167
+ fs.mkdirSync(dataflintDir, { recursive: true, mode: 448 });
182
168
  }
183
- async getAuthSecret() {
184
- try {
185
- if (fs.existsSync(this.credentialsPath)) {
186
- const content = fs.readFileSync(this.credentialsPath, "utf8");
187
- return content;
188
- }
189
- return undefined;
190
- }
191
- catch (error) {
192
- return undefined;
193
- }
169
+ }
170
+ mergeWithDefaults(config) {
171
+ const envConfig = {
172
+ serverUrl: process.env.DATAFLINT_SERVER_URL,
173
+ authDomain: process.env.DATAFLINT_AUTH_DOMAIN,
174
+ clientId: process.env.DATAFLINT_CLIENT_ID,
175
+ audience: process.env.DATAFLINT_AUDIENCE,
176
+ scope: process.env.DATAFLINT_SCOPE,
177
+ adminCompanyDomain: process.env.DATAFLINT_ADMIN_COMPANY_DOMAIN,
178
+ customerDomain: process.env.DATAFLINT_CUSTOMER_DOMAIN
179
+ };
180
+ const configFilePath = path.join(os.homedir(), ".dataflint", "config.json");
181
+ let fileConfig = {};
182
+ if (fs.existsSync(configFilePath)) {
183
+ try {
184
+ const fileContent = fs.readFileSync(configFilePath, "utf8");
185
+ fileConfig = JSON.parse(fileContent);
186
+ } catch (error) {
187
+ }
194
188
  }
195
- async setAuthSecret(value) {
196
- // Ensure directory exists
197
- this.ensureDataflintDirectory();
198
- // Write with restricted permissions (600)
199
- fs.writeFileSync(this.credentialsPath, value, {
200
- mode: 0o600,
201
- encoding: "utf8",
202
- });
189
+ const customerDomain = config.customerDomain || envConfig.customerDomain || fileConfig.customerDomain;
190
+ if (customerDomain) {
191
+ console.error(`[CONFIG] Customer domain detected: ${customerDomain}`);
192
+ const customerConfig = (0, shared_auth_config_1.getCustomerAuthConfig)(customerDomain);
193
+ if (!customerConfig) {
194
+ console.error(`[CONFIG] ERROR: Unknown customer domain: ${customerDomain}`);
195
+ throw new Error(`Unknown customer domain: "${customerDomain}". This customer is not registered in the system. Please check the domain name or contact support.`);
196
+ }
197
+ console.error(`[CONFIG] Using customer-specific configuration:`);
198
+ console.error(`[CONFIG] - Server URL: ${customerConfig.serverUrl}`);
199
+ console.error(`[CONFIG] - Auth0 Domain: ${customerConfig.domain}`);
200
+ console.error(`[CONFIG] - Client ID: ${customerConfig.clientId.substring(0, 8)}...`);
201
+ return {
202
+ serverUrl: customerConfig.serverUrl,
203
+ authDomain: customerConfig.domain,
204
+ clientId: customerConfig.clientId,
205
+ audience: customerConfig.audience,
206
+ scope: "openid profile email offline_access",
207
+ // Credentials path only configurable via CLI argument for security
208
+ credentialsPath: config.credentialsPath,
209
+ adminCompanyDomain: config.adminCompanyDomain || envConfig.adminCompanyDomain || fileConfig.adminCompanyDomain || "none",
210
+ customerDomain
211
+ };
203
212
  }
204
- async deleteAuthSecret() {
205
- try {
206
- if (fs.existsSync(this.credentialsPath)) {
207
- fs.unlinkSync(this.credentialsPath);
208
- }
209
- }
210
- catch (error) {
211
- // Ignore deletion errors
212
- }
213
+ console.error(`[CONFIG] No customer domain - using default/explicit configuration`);
214
+ return {
215
+ serverUrl: config.serverUrl || envConfig.serverUrl || fileConfig.serverUrl || "https://api.dataflint.io",
216
+ authDomain: config.authDomain || envConfig.authDomain || fileConfig.authDomain || "https://dataflint.us.auth0.com/",
217
+ clientId: config.clientId || envConfig.clientId || fileConfig.clientId || "1NdbhkYoLyqQWtevBNal1BozB9pSZe3g",
218
+ audience: config.audience || envConfig.audience || fileConfig.audience || "https://api.dataflint.io",
219
+ scope: config.scope || envConfig.scope || fileConfig.scope || "openid profile email offline_access",
220
+ adminCompanyDomain: config.adminCompanyDomain || envConfig.adminCompanyDomain || fileConfig.adminCompanyDomain || "none",
221
+ // Credentials path only configurable via CLI argument for security
222
+ credentialsPath: config.credentialsPath,
223
+ customerDomain: void 0
224
+ };
225
+ }
226
+ // IConfigService interface implementation
227
+ getServerUrl() {
228
+ return this.config.serverUrl;
229
+ }
230
+ getEnvironment() {
231
+ return "prod";
232
+ }
233
+ getCustomerDomain() {
234
+ return this.config.customerDomain || null;
235
+ }
236
+ getAdminCompanyDomain() {
237
+ return this.config.adminCompanyDomain || "none";
238
+ }
239
+ getAuthConfig() {
240
+ return {
241
+ domain: this.config.authDomain,
242
+ clientId: this.config.clientId,
243
+ audience: this.config.audience,
244
+ scope: this.config.scope || "openid profile email offline_access"
245
+ };
246
+ }
247
+ async getAuthSecret() {
248
+ try {
249
+ if (fs.existsSync(this.credentialsPath)) {
250
+ const content = fs.readFileSync(this.credentialsPath, "utf8");
251
+ return content;
252
+ }
253
+ return void 0;
254
+ } catch (error) {
255
+ return void 0;
213
256
  }
214
- getSendSourceCode() {
215
- // In standalone mode, default to false (privacy-first)
216
- // Can be configured via DATAFLINT_SEND_SOURCE_CODE env var
217
- const envValue = process.env.DATAFLINT_SEND_SOURCE_CODE;
218
- return envValue?.toLowerCase() === "true";
257
+ }
258
+ async setAuthSecret(value) {
259
+ this.ensureDataflintDirectory();
260
+ fs.writeFileSync(this.credentialsPath, value, {
261
+ mode: 384,
262
+ encoding: "utf8"
263
+ });
264
+ }
265
+ async deleteAuthSecret() {
266
+ try {
267
+ if (fs.existsSync(this.credentialsPath)) {
268
+ fs.unlinkSync(this.credentialsPath);
269
+ }
270
+ } catch (error) {
219
271
  }
220
- }
272
+ }
273
+ getSendSourceCode() {
274
+ const envValue = process.env.DATAFLINT_SEND_SOURCE_CODE;
275
+ return (envValue == null ? void 0 : envValue.toLowerCase()) === "true";
276
+ }
277
+ };
221
278
  exports.StandaloneConfigService = StandaloneConfigService;
222
- //# sourceMappingURL=config.js.map
279
+ //# sourceMappingURL=config.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/standalone/config.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../shared-auth-config/src/customer-auth-configs.ts", "../../../shared-auth-config/src/index.ts", "../../src/standalone/config.ts"],
4
+ "sourcesContent": ["/**\n * Customer-specific authentication configurations\n *\n * This file contains mappings from hashed customer domains to their Auth0 configurations.\n * Customer domains are hashed using SHA-256 for privacy.\n *\n * To add a new customer:\n * 1. Generate hash: npm run hash-domain -- \"customer.domain.com\"\n * 2. Add entry to customerAuthConfigs with the hash as key\n */\n\nexport interface CustomerAuthConfig {\n /**\n * Auth0 client ID for this customer\n */\n clientId: string;\n\n /**\n * Optional function to produce customer-specific Auth0 domain\n * @param customerDomain - The customer's domain (e.g., \"acme.corp\")\n * @returns Auth0 domain URL (e.g., \"https://dataflint-acme.us.auth0.com/\")\n */\n domainProducer?: (customerDomain: string) => string;\n}\n\n/**\n * Mapping from hashed customer domain to Auth0 configuration\n * Key: SHA-256 hash of customer domain\n * Value: CustomerAuthConfig with clientId and optional domainProducer\n */\nexport const customerAuthConfigs: { [key: string]: CustomerAuthConfig } = {\n // Customer domain hash \u2192 Auth0 configuration\n \"857064adfec4e0e5e37be8afef397155db006bb6009d1b395388d9174eb40795\": {\n clientId: \"CWvpqujjEV2aoRSDVWFSh1U6HQALygB0\",\n domainProducer: (customerDomain) =>\n `https://dataflint-${customerDomain}.us.auth0.com/`,\n },\n\n cafe6e0af028d729afd3c4a386482621af90e8e117b1216f2bbc08e86a5e9445: {\n clientId: \"HRLICLhE0BP4AeZ8dSPAoDHFmMZVacxi\",\n },\n\n \"1613f29ea956158d2ad56a10780feb45d78755819565e76c4bf0d9069d17aab9\": {\n clientId: \"CnyJJKVqes0Y0uU57GreAeaPbJlm4l4w\",\n },\n\n eae8e3404182477f008479b38a6629ee86b23cefe2c418c5dc5c2f0d02af5475: {\n clientId: \"etY3z44ssWohe77PEBIMPzktW4BmvWGT\",\n },\n\n // dataflint-demo (added from commit f38928c)\n cc1677626e05d82b301cc83c22a850eac849555e704f288083108d79f600cea1: {\n clientId: \"u9W23NGvlV58W2N9WXMMhsM12bKK8oGI\",\n },\n};\n", "/**\n * Shared authentication configuration for DataFlint\n *\n * This package provides customer-specific Auth0 configuration lookup\n * shared between the VS Code extension and standalone MCP server.\n */\n\nimport * as crypto from \"crypto\";\nimport {\n customerAuthConfigs,\n CustomerAuthConfig,\n} from \"./customer-auth-configs\";\n\n/**\n * Resolved authentication configuration for a customer\n */\nexport interface ResolvedAuthConfig {\n /**\n * Auth0 domain URL (e.g., \"https://dataflint-acme.us.auth0.com/\")\n */\n domain: string;\n\n /**\n * Auth0 client ID\n */\n clientId: string;\n\n /**\n * Auth0 audience (API identifier)\n */\n audience: string;\n\n /**\n * DataFlint API server URL\n */\n serverUrl: string;\n}\n\n/**\n * Get customer-specific authentication configuration\n *\n * This function:\n * 1. Hashes the customer domain using SHA-256\n * 2. Looks up the hash in customerAuthConfigs\n * 3. Returns the resolved Auth0 configuration\n *\n * @param customerDomain - Customer's domain (e.g., \"acme.corp\")\n * @returns ResolvedAuthConfig or null if customer not found\n *\n * @example\n * ```typescript\n * const config = getCustomerAuthConfig(\"acme.corp\");\n * if (config) {\n * console.log(\"Server URL:\", config.serverUrl);\n * console.log(\"Auth0 Domain:\", config.domain);\n * console.log(\"Client ID:\", config.clientId);\n * } else {\n * console.error(\"Customer not registered\");\n * }\n * ```\n */\nexport function getCustomerAuthConfig(\n customerDomain: string\n): ResolvedAuthConfig | null {\n // Step 1: Hash the customer domain using SHA-256\n const customerHash = crypto\n .createHash(\"sha256\")\n .update(customerDomain)\n .digest(\"hex\");\n\n // Step 2: Look up the hash in our customer configurations\n const customerConfig = customerAuthConfigs[customerHash];\n if (!customerConfig) {\n // Customer not found in registry\n return null;\n }\n\n // Step 3: Build the complete authentication configuration\n return {\n // Use custom Auth0 domain if domainProducer is defined, otherwise use default\n domain:\n customerConfig.domainProducer?.(customerDomain) ||\n \"https://dataflint.us.auth0.com/\",\n\n // Customer-specific Auth0 client ID\n clientId: customerConfig.clientId,\n\n // Customer-specific API audience\n audience: `https://api.${customerDomain}.dataflint.io`,\n\n // Customer-specific server URL\n serverUrl: `https://api.${customerDomain}.dataflint.io`,\n };\n}\n\n// Re-export types and configurations for direct access if needed\nexport { customerAuthConfigs, CustomerAuthConfig };\n", "import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport * as crypto from \"crypto\";\nimport { AuthConfig, IConfigService } from \"../types\";\nimport { getCustomerAuthConfig } from \"@dataflint/shared-auth-config\";\n\nexport interface StandaloneConfig {\n serverUrl?: string;\n authDomain?: string;\n clientId?: string;\n audience?: string;\n scope?: string;\n credentialsPath?: string;\n adminCompanyDomain?: string;\n customerDomain?: string;\n}\n\n/**\n * Configuration service for standalone MCP server\n * Implements IConfigService without VS Code dependencies\n */\nexport class StandaloneConfigService implements IConfigService {\n private config: StandaloneConfig;\n private credentialsPath: string;\n\n constructor(config: StandaloneConfig = {}) {\n this.config = this.mergeWithDefaults(config);\n\n // Generate credentials path based on clientId hash to avoid collisions\n if (config.credentialsPath) {\n this.credentialsPath = config.credentialsPath;\n } else {\n const clientIdHash = crypto\n .createHash(\"sha256\")\n .update(this.config.clientId!)\n .digest(\"hex\")\n .substring(0, 8); // Use first 8 chars of hash\n\n this.credentialsPath = path.join(\n os.homedir(),\n \".dataflint\",\n `credentials-${clientIdHash}.json`\n );\n }\n\n // Ensure .dataflint directory exists\n this.ensureDataflintDirectory();\n }\n\n private ensureDataflintDirectory(): void {\n const dataflintDir = path.dirname(this.credentialsPath);\n if (!fs.existsSync(dataflintDir)) {\n fs.mkdirSync(dataflintDir, { recursive: true, mode: 0o700 });\n }\n }\n\n private mergeWithDefaults(config: StandaloneConfig): StandaloneConfig {\n // Environment variable overrides\n const envConfig: StandaloneConfig = {\n serverUrl: process.env.DATAFLINT_SERVER_URL,\n authDomain: process.env.DATAFLINT_AUTH_DOMAIN,\n clientId: process.env.DATAFLINT_CLIENT_ID,\n audience: process.env.DATAFLINT_AUDIENCE,\n scope: process.env.DATAFLINT_SCOPE,\n adminCompanyDomain: process.env.DATAFLINT_ADMIN_COMPANY_DOMAIN,\n customerDomain: process.env.DATAFLINT_CUSTOMER_DOMAIN,\n };\n\n // Config file (if exists)\n const configFilePath = path.join(\n os.homedir(),\n \".dataflint\",\n \"config.json\"\n );\n let fileConfig: StandaloneConfig = {};\n if (fs.existsSync(configFilePath)) {\n try {\n const fileContent = fs.readFileSync(configFilePath, \"utf8\");\n fileConfig = JSON.parse(fileContent);\n } catch (error) {\n // Ignore file reading errors, use defaults\n }\n }\n\n // Check for customer domain (highest priority for auth config)\n const customerDomain =\n config.customerDomain ||\n envConfig.customerDomain ||\n fileConfig.customerDomain;\n\n if (customerDomain) {\n // Customer domain provided - resolve customer-specific config\n console.error(\n `[CONFIG] Customer domain detected: ${customerDomain}`\n );\n\n const customerConfig = getCustomerAuthConfig(customerDomain);\n\n if (!customerConfig) {\n console.error(\n `[CONFIG] ERROR: Unknown customer domain: ${customerDomain}`\n );\n throw new Error(\n `Unknown customer domain: \"${customerDomain}\". ` +\n `This customer is not registered in the system. ` +\n `Please check the domain name or contact support.`\n );\n }\n\n console.error(`[CONFIG] Using customer-specific configuration:`);\n console.error(\n `[CONFIG] - Server URL: ${customerConfig.serverUrl}`\n );\n console.error(\n `[CONFIG] - Auth0 Domain: ${customerConfig.domain}`\n );\n console.error(\n `[CONFIG] - Client ID: ${customerConfig.clientId.substring(0, 8)}...`\n );\n\n // Return customer-specific configuration\n // Customer config takes precedence over everything else\n return {\n serverUrl: customerConfig.serverUrl,\n authDomain: customerConfig.domain,\n clientId: customerConfig.clientId,\n audience: customerConfig.audience,\n scope: \"openid profile email offline_access\",\n // Credentials path only configurable via CLI argument for security\n credentialsPath: config.credentialsPath,\n adminCompanyDomain:\n config.adminCompanyDomain ||\n envConfig.adminCompanyDomain ||\n fileConfig.adminCompanyDomain ||\n \"none\",\n customerDomain: customerDomain,\n };\n }\n\n // No customer domain - use existing merge logic\n console.error(\n `[CONFIG] No customer domain - using default/explicit configuration`\n );\n\n return {\n serverUrl:\n config.serverUrl ||\n envConfig.serverUrl ||\n fileConfig.serverUrl ||\n \"https://api.dataflint.io\",\n authDomain:\n config.authDomain ||\n envConfig.authDomain ||\n fileConfig.authDomain ||\n \"https://dataflint.us.auth0.com/\",\n clientId:\n config.clientId ||\n envConfig.clientId ||\n fileConfig.clientId ||\n \"1NdbhkYoLyqQWtevBNal1BozB9pSZe3g\",\n audience:\n config.audience ||\n envConfig.audience ||\n fileConfig.audience ||\n \"https://api.dataflint.io\",\n scope:\n config.scope ||\n envConfig.scope ||\n fileConfig.scope ||\n \"openid profile email offline_access\",\n adminCompanyDomain:\n config.adminCompanyDomain ||\n envConfig.adminCompanyDomain ||\n fileConfig.adminCompanyDomain ||\n \"none\",\n // Credentials path only configurable via CLI argument for security\n credentialsPath: config.credentialsPath,\n customerDomain: undefined,\n };\n }\n\n // IConfigService interface implementation\n\n getServerUrl(): string {\n return this.config.serverUrl!;\n }\n\n getEnvironment(): string {\n return \"prod\";\n }\n\n getCustomerDomain(): string | null {\n return this.config.customerDomain || null;\n }\n\n getAdminCompanyDomain(): string {\n return this.config.adminCompanyDomain || \"none\";\n }\n\n getAuthConfig(): AuthConfig {\n return {\n domain: this.config.authDomain!,\n clientId: this.config.clientId!,\n audience: this.config.audience!,\n scope: this.config.scope || \"openid profile email offline_access\",\n };\n }\n\n async getAuthSecret(): Promise<string | undefined> {\n try {\n if (fs.existsSync(this.credentialsPath)) {\n const content = fs.readFileSync(this.credentialsPath, \"utf8\");\n return content;\n }\n return undefined;\n } catch (error) {\n return undefined;\n }\n }\n\n async setAuthSecret(value: string): Promise<void> {\n // Ensure directory exists\n this.ensureDataflintDirectory();\n\n // Write with restricted permissions (600)\n fs.writeFileSync(this.credentialsPath, value, {\n mode: 0o600,\n encoding: \"utf8\",\n });\n }\n\n async deleteAuthSecret(): Promise<void> {\n try {\n if (fs.existsSync(this.credentialsPath)) {\n fs.unlinkSync(this.credentialsPath);\n }\n } catch (error) {\n // Ignore deletion errors\n }\n }\n\n getSendSourceCode(): boolean {\n // In standalone mode, default to false (privacy-first)\n // Can be configured via DATAFLINT_SEND_SOURCE_CODE env var\n const envValue = process.env.DATAFLINT_SEND_SOURCE_CODE;\n return envValue?.toLowerCase() === \"true\";\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["exports", "exports", "crypto", "__importStar"]
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":";AA2LA;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4G3D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":";AAsLA;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgH3D"}
@@ -38,15 +38,11 @@ exports.startStandaloneServer = startStandaloneServer;
38
38
  const commander_1 = require("commander");
39
39
  const path = __importStar(require("path"));
40
40
  const os = __importStar(require("os"));
41
- const fs = __importStar(require("fs"));
42
41
  const config_1 = require("./config");
43
42
  const stdio_transport_1 = require("./stdio-transport");
44
43
  const logger_1 = require("./logger");
45
44
  const server_1 = require("../server");
46
45
  const logger_2 = require("../logger");
47
- // Read package.json for version (works from dist/standalone directory)
48
- const packageJsonPath = path.join(__dirname, "../../package.json");
49
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
50
46
  /**
51
47
  * Configure Logger for standalone mode
52
48
  * In stdio mode: write to stderr + file (stdout reserved for protocol)
@@ -164,13 +160,14 @@ async function startStandaloneServer() {
164
160
  program
165
161
  .name("dataflint-mcp-server")
166
162
  .description("DataFlint MCP Server")
167
- .version(packageJson.version)
163
+ .version("1.0.0")
168
164
  .option("--server-url <url>", "DataFlint API server URL", "https://api.dataflint.io")
169
165
  .option("--auth-domain <domain>", "Auth0 domain", "https://dataflint.us.auth0.com/")
170
166
  .option("--client-id <id>", "Auth0 client ID", "1NdbhkYoLyqQWtevBNal1BozB9pSZe3g")
171
167
  .option("--audience <audience>", "Auth0 API audience", "https://api.dataflint.io")
172
168
  .option("--scope <scope>", "OAuth scope", "openid profile email offline_access")
173
169
  .option("--credentials <path>", "Path to credentials file (default: ~/.dataflint/credentials-{hash}.json)")
170
+ .option("--admin-company-domain <domain>", "Admin company domain for multi-tenant routing")
174
171
  .option("--customer-domain <domain>", "Customer domain for authentication (e.g., acme.corp)")
175
172
  .option("-t, --transport <type>", "Transport type: stdio or http", "stdio")
176
173
  .option("-p, --port <port>", "HTTP port (if using http transport)", "11223");
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/standalone/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataflint/mcp-server",
3
- "version": "1.0.5",
3
+ "version": "1.0.10",
4
4
  "description": "DataFlint MCP Server Core - Model Context Protocol server for Apache Spark optimization",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -10,12 +10,15 @@
10
10
  "files": [
11
11
  "dist",
12
12
  "bin",
13
- "README.md"
13
+ "README.md",
14
+ "USER_GUIDE.md",
15
+ "LICENSE"
14
16
  ],
15
17
  "scripts": {
16
18
  "clean": "rm -rf dist *.tsbuildinfo",
17
19
  "compile": "tsc --build",
18
- "build": "npm run clean && npm run compile",
20
+ "bundle": "node scripts/bundle.js",
21
+ "build": "npm run clean && npm run compile && npm run bundle",
19
22
  "prepublishOnly": "npm run build",
20
23
  "prepack": "npm run build"
21
24
  },
@@ -58,9 +61,8 @@
58
61
  "cli"
59
62
  ],
60
63
  "author": "DataFlint",
61
- "license": "UNLICENSED",
64
+ "license": "MIT",
62
65
  "dependencies": {
63
- "@dataflint/shared-auth-config": "*",
64
66
  "@modelcontextprotocol/sdk": "^1.17.0",
65
67
  "commander": "^12.0.0",
66
68
  "express": "^5.1.0",