@mcp-abap-adt/core 2.1.7 → 2.2.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.2.0] - 2026-02-09
6
+ ### Added
7
+ - **MCP Registry metadata**: Added `server.json` and `mcpName` for registry publishing.
8
+ - **Client configurator**: Added `mcp-abap-adt-configure` to add/enable/disable/remove MCP entries across clients.
9
+ - **Auto-config docs**: Added `docs/installation/CLIENT_INSTALLERS.md` with usage and common tasks.
10
+
11
+ ### Changed
12
+ - **Default logger loading**: Lazy-load logger to avoid bundler issues with optional transports.
13
+ - **Claude config**: Write MCP settings under `projects.<full_path>.mcpServers` for Claude CLI on Linux.
14
+ - **Config defaults**: New entries for Cline/Codex/Windsurf/Goose are disabled by default; enable explicitly.
15
+
5
16
  ## [2.1.7] - 2026-01-29
6
17
  ### Fixed
7
18
  - **UpdateLocalTestClass**: Added detailed SAP error information for 409 conflict errors to improve troubleshooting (#6)
package/README.md CHANGED
@@ -39,6 +39,10 @@ await server.connect(transport);
39
39
  2. **Configure**: See [Client Configuration](docs/user-guide/CLIENT_CONFIGURATION.md)
40
40
  3. **Use**: See [Available Tools](docs/user-guide/AVAILABLE_TOOLS.md)
41
41
 
42
+ ## MCP Registry
43
+
44
+ Published in the official MCP Registry. See `docs/deployment/MCP_REGISTRY.md` for full details.
45
+
42
46
  ## Features
43
47
 
44
48
  - **🏗️ Domain Management**: `GetDomain`, `CreateDomain`, `UpdateDomain` - Create, retrieve, and update ABAP domains
@@ -0,0 +1,514 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const os = require("os");
6
+
7
+ let yaml;
8
+ try {
9
+ // Optional dependency already in package.json
10
+ // eslint-disable-next-line import/no-extraneous-dependencies
11
+ yaml = require("yaml");
12
+ } catch {
13
+ yaml = null;
14
+ }
15
+
16
+ let toml;
17
+ try {
18
+ // eslint-disable-next-line import/no-extraneous-dependencies
19
+ toml = require("@iarna/toml");
20
+ } catch {
21
+ toml = null;
22
+ }
23
+
24
+ const args = process.argv.slice(2);
25
+ const options = {
26
+ clients: [],
27
+ envPath: null,
28
+ mcpDestination: null,
29
+ name: null,
30
+ transport: "stdio",
31
+ command: "mcp-abap-adt",
32
+ dryRun: false,
33
+ force: false,
34
+ project: null,
35
+ disabled: false,
36
+ toggle: false,
37
+ remove: false,
38
+ configPath: null,
39
+ };
40
+
41
+ if (args.includes("--help") || args.includes("-h")) {
42
+ printHelp();
43
+ process.exit(0);
44
+ }
45
+
46
+ for (let i = 0; i < args.length; i += 1) {
47
+ const arg = args[i];
48
+ if (arg === "--client") {
49
+ options.clients.push(args[i + 1]);
50
+ i += 1;
51
+ } else if (arg === "--env") {
52
+ options.envPath = args[i + 1];
53
+ i += 1;
54
+ } else if (arg === "--mcp") {
55
+ options.mcpDestination = args[i + 1];
56
+ i += 1;
57
+ } else if (arg === "--name") {
58
+ options.name = args[i + 1];
59
+ i += 1;
60
+ } else if (arg === "--transport") {
61
+ options.transport = args[i + 1];
62
+ i += 1;
63
+ } else if (arg === "--command") {
64
+ options.command = args[i + 1];
65
+ i += 1;
66
+ } else if (arg === "--project") {
67
+ options.project = args[i + 1];
68
+ i += 1;
69
+ } else if (arg === "--config") {
70
+ options.configPath = args[i + 1];
71
+ i += 1;
72
+ } else if (arg === "--disable") {
73
+ options.disabled = true;
74
+ options.toggle = true;
75
+ } else if (arg === "--enable") {
76
+ options.disabled = false;
77
+ options.toggle = true;
78
+ } else if (arg === "--remove") {
79
+ options.remove = true;
80
+ } else if (arg === "--dry-run") {
81
+ options.dryRun = true;
82
+ } else if (arg === "--force") {
83
+ options.force = true;
84
+ }
85
+ }
86
+
87
+ if (options.clients.length === 0) {
88
+ fail("Provide at least one --client.");
89
+ }
90
+
91
+ if (!options.name) {
92
+ fail("Provide --name <serverName> (required).");
93
+ }
94
+
95
+ if (options.transport !== "stdio") {
96
+ fail("Only --transport stdio is supported by this installer.");
97
+ }
98
+
99
+ const requiresConnectionParams = !options.remove && !options.toggle;
100
+
101
+ if (requiresConnectionParams) {
102
+ if (!options.envPath && !options.mcpDestination) {
103
+ fail("Provide either --env <path> or --mcp <destination>.");
104
+ }
105
+
106
+ if (options.envPath && options.mcpDestination) {
107
+ fail("Use only one of --env or --mcp.");
108
+ }
109
+ }
110
+
111
+ const platform = process.platform;
112
+ const home = os.homedir();
113
+ const appData =
114
+ process.env.APPDATA || path.join(home, "AppData", "Roaming");
115
+ const userProfile = process.env.USERPROFILE || home;
116
+
117
+ const serverArgsRaw = options.remove || options.toggle
118
+ ? []
119
+ : [
120
+ `--transport=${options.transport}`,
121
+ options.envPath
122
+ ? `--env=${options.envPath}`
123
+ : options.mcpDestination
124
+ ? `--mcp=${options.mcpDestination.toLowerCase()}`
125
+ : undefined,
126
+ ];
127
+ const serverArgs = serverArgsRaw.filter(Boolean);
128
+
129
+ for (const client of options.clients) {
130
+ switch (client) {
131
+ case "cline":
132
+ writeJsonConfig(
133
+ getClinePath(platform, home, appData),
134
+ options.name,
135
+ serverArgs,
136
+ "cline"
137
+ );
138
+ break;
139
+ case "codex":
140
+ writeCodexConfig(getCodexPath(platform, home, userProfile), options.name, serverArgs);
141
+ break;
142
+ case "claude":
143
+ writeClaudeConfig(
144
+ getClaudePath(platform, home, appData, options.configPath),
145
+ options.name,
146
+ serverArgs
147
+ );
148
+ break;
149
+ case "goose":
150
+ writeGooseConfig(
151
+ getGoosePath(platform, home, appData),
152
+ options.name,
153
+ serverArgs
154
+ );
155
+ break;
156
+ case "cursor":
157
+ writeJsonConfig(
158
+ getCursorPath(platform, home, userProfile),
159
+ options.name,
160
+ serverArgs,
161
+ "cursor"
162
+ );
163
+ break;
164
+ case "windsurf":
165
+ writeJsonConfig(
166
+ getWindsurfPath(platform, home, userProfile),
167
+ options.name,
168
+ serverArgs,
169
+ "windsurf"
170
+ );
171
+ break;
172
+ default:
173
+ fail(`Unknown client: ${client}`);
174
+ }
175
+ }
176
+
177
+ function getClinePath(platformValue, homeDir, appDataDir) {
178
+ if (platformValue === "win32") {
179
+ return path.join(
180
+ appDataDir,
181
+ "Code",
182
+ "User",
183
+ "globalStorage",
184
+ "saoudrizwan.claude-dev",
185
+ "settings",
186
+ "cline_mcp_settings.json"
187
+ );
188
+ }
189
+ return path.join(
190
+ homeDir,
191
+ ".config",
192
+ "Code",
193
+ "User",
194
+ "globalStorage",
195
+ "saoudrizwan.claude-dev",
196
+ "settings",
197
+ "cline_mcp_settings.json"
198
+ );
199
+ }
200
+
201
+ function getCodexPath(platformValue, homeDir, userProfileDir) {
202
+ if (platformValue === "win32") {
203
+ return path.join(userProfileDir, ".codex", "config.toml");
204
+ }
205
+ return path.join(homeDir, ".codex", "config.toml");
206
+ }
207
+
208
+ function getClaudePath(platformValue, homeDir, appDataDir, overridePath) {
209
+ if (overridePath) {
210
+ return overridePath;
211
+ }
212
+ if (platformValue === "darwin") {
213
+ return path.join(
214
+ homeDir,
215
+ "Library",
216
+ "Application Support",
217
+ "Claude",
218
+ "claude_desktop_config.json"
219
+ );
220
+ }
221
+ if (platformValue === "win32") {
222
+ return path.join(appDataDir, "Claude", "claude_desktop_config.json");
223
+ }
224
+ return path.join(homeDir, ".claude.json");
225
+ }
226
+
227
+ function getGoosePath(platformValue, homeDir, appDataDir) {
228
+ if (platformValue === "win32") {
229
+ return path.join(appDataDir, "Block", "goose", "config", "config.yaml");
230
+ }
231
+ return path.join(homeDir, ".config", "goose", "config.yaml");
232
+ }
233
+
234
+ function getCursorPath(_platformValue, homeDir, userProfileDir) {
235
+ const base = _platformValue === "win32" ? userProfileDir : homeDir;
236
+ return path.join(base, ".cursor", "mcp.json");
237
+ }
238
+
239
+ function getWindsurfPath(platformValue, homeDir, userProfileDir) {
240
+ if (platformValue === "win32") {
241
+ return path.join(userProfileDir, ".codeium", "windsurf", "mcp_config.json");
242
+ }
243
+ return path.join(homeDir, ".codeium", "windsurf", "mcp_config.json");
244
+ }
245
+
246
+ function getDefaultDisabled(clientType) {
247
+ return ["cline", "codex", "windsurf", "goose"].includes(clientType);
248
+ }
249
+
250
+ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
251
+ ensureDir(filePath);
252
+ const data = readJson(filePath);
253
+ data.mcpServers = data.mcpServers || {};
254
+ if (options.toggle && clientType === "cursor") {
255
+ fail("Cursor does not support enable/disable. Use --remove instead.");
256
+ }
257
+ if (options.toggle) {
258
+ if (!data.mcpServers[serverName]) {
259
+ fail(`Server "${serverName}" not found in ${filePath}.`);
260
+ }
261
+ data.mcpServers[serverName] = {
262
+ ...data.mcpServers[serverName],
263
+ disabled: options.disabled || undefined,
264
+ };
265
+ writeFile(filePath, JSON.stringify(data, null, 2));
266
+ return;
267
+ }
268
+ if (options.remove) {
269
+ if (!data.mcpServers[serverName]) {
270
+ fail(`Server "${serverName}" not found in ${filePath}.`);
271
+ }
272
+ delete data.mcpServers[serverName];
273
+ writeFile(filePath, JSON.stringify(data, null, 2));
274
+ return;
275
+ }
276
+ if (data.mcpServers[serverName] && !options.force) {
277
+ fail(
278
+ `Server "${serverName}" already exists in ${filePath}. Use --force to overwrite.`
279
+ );
280
+ }
281
+ data.mcpServers[serverName] = {
282
+ command: options.command,
283
+ args: argsArray,
284
+ disabled:
285
+ options.disabled || (getDefaultDisabled(clientType) ? true : undefined),
286
+ };
287
+ writeFile(filePath, JSON.stringify(data, null, 2));
288
+ }
289
+
290
+ function writeClaudeConfig(filePath, serverName, argsArray) {
291
+ ensureDir(filePath);
292
+ const data = readJson(filePath);
293
+ if (!options.project) {
294
+ options.project = process.cwd();
295
+ }
296
+ data.projects = data.projects || {};
297
+ if (!data.projects[options.project]) {
298
+ data.projects[options.project] = {
299
+ allowedTools: [],
300
+ mcpContextUris: [],
301
+ mcpServers: {},
302
+ };
303
+ }
304
+ data.projects[options.project].mcpServers =
305
+ data.projects[options.project].mcpServers || {};
306
+ if (options.toggle) {
307
+ fail("Claude does not support enable/disable. Use --remove instead.");
308
+ }
309
+ if (options.remove) {
310
+ if (!data.projects[options.project].mcpServers[serverName]) {
311
+ fail(`Server "${serverName}" not found for ${options.project}.`);
312
+ }
313
+ delete data.projects[options.project].mcpServers[serverName];
314
+ writeFile(filePath, JSON.stringify(data, null, 2));
315
+ return;
316
+ }
317
+ if (data.projects[options.project].mcpServers[serverName] && !options.force) {
318
+ fail(
319
+ `Server "${serverName}" already exists for ${options.project}. Use --force to overwrite.`
320
+ );
321
+ }
322
+ data.projects[options.project].mcpServers[serverName] = {
323
+ type: "stdio",
324
+ command: options.command,
325
+ args: argsArray,
326
+ env: {},
327
+ };
328
+ writeFile(filePath, JSON.stringify(data, null, 2));
329
+ }
330
+
331
+ function writeCodexConfig(filePath, serverName, argsArray) {
332
+ ensureDir(filePath);
333
+ if (!toml) {
334
+ fail("TOML dependency not available. Install dependencies and retry.");
335
+ }
336
+
337
+ const data = readToml(filePath);
338
+ data.mcp_servers = data.mcp_servers || {};
339
+ const defaultEnabled = !getDefaultDisabled("codex");
340
+
341
+ if (options.remove) {
342
+ if (!data.mcp_servers[serverName]) {
343
+ fail(`Server "${serverName}" not found in ${filePath}.`);
344
+ }
345
+ delete data.mcp_servers[serverName];
346
+ writeFile(filePath, toml.stringify(data));
347
+ return;
348
+ }
349
+
350
+ if (options.toggle) {
351
+ if (!data.mcp_servers[serverName]) {
352
+ fail(`Server "${serverName}" not found in ${filePath}.`);
353
+ }
354
+ data.mcp_servers[serverName] = {
355
+ ...data.mcp_servers[serverName],
356
+ enabled: !options.disabled,
357
+ };
358
+ writeFile(filePath, toml.stringify(data));
359
+ return;
360
+ }
361
+
362
+ if (data.mcp_servers[serverName] && !options.force) {
363
+ fail(
364
+ `Server "${serverName}" already exists in ${filePath}. Use --force to overwrite.`
365
+ );
366
+ }
367
+
368
+ data.mcp_servers[serverName] = {
369
+ command: options.command,
370
+ args: argsArray,
371
+ enabled: options.disabled ? false : defaultEnabled,
372
+ };
373
+
374
+ writeFile(filePath, toml.stringify(data));
375
+ }
376
+
377
+ function writeGooseConfig(filePath, serverName, argsArray) {
378
+ if (!yaml) {
379
+ fail("YAML dependency not available. Install dependencies and retry.");
380
+ }
381
+ ensureDir(filePath);
382
+ const data = readYaml(filePath);
383
+ data.extensions = data.extensions || {};
384
+ if (options.toggle) {
385
+ if (!data.extensions[serverName]) {
386
+ fail(`Server "${serverName}" not found in ${filePath}.`);
387
+ }
388
+ data.extensions[serverName] = {
389
+ ...data.extensions[serverName],
390
+ enabled: !options.disabled,
391
+ };
392
+ writeFile(filePath, yaml.stringify(data));
393
+ return;
394
+ }
395
+ if (options.remove) {
396
+ if (!data.extensions[serverName]) {
397
+ fail(`Server "${serverName}" not found in ${filePath}.`);
398
+ }
399
+ delete data.extensions[serverName];
400
+ writeFile(filePath, yaml.stringify(data));
401
+ return;
402
+ }
403
+ if (data.extensions[serverName] && !options.force) {
404
+ fail(
405
+ `Server "${serverName}" already exists in ${filePath}. Use --force to overwrite.`
406
+ );
407
+ }
408
+ data.extensions[serverName] = {
409
+ name: "MCP ABAP ADT",
410
+ cmd: options.command,
411
+ args: argsArray,
412
+ type: "stdio",
413
+ enabled: options.disabled ? false : !getDefaultDisabled("goose"),
414
+ timeout: 300,
415
+ };
416
+ writeFile(filePath, yaml.stringify(data));
417
+ }
418
+
419
+ function readJson(filePath) {
420
+ if (!fs.existsSync(filePath)) {
421
+ return {};
422
+ }
423
+ const raw = fs.readFileSync(filePath, "utf8").trim();
424
+ if (!raw) {
425
+ return {};
426
+ }
427
+ try {
428
+ return JSON.parse(raw);
429
+ } catch {
430
+ fail(`Invalid JSON: ${filePath}`);
431
+ }
432
+ }
433
+
434
+ function readYaml(filePath) {
435
+ if (!fs.existsSync(filePath)) {
436
+ return {};
437
+ }
438
+ const raw = fs.readFileSync(filePath, "utf8").trim();
439
+ if (!raw) {
440
+ return {};
441
+ }
442
+ try {
443
+ return yaml.parse(raw) || {};
444
+ } catch {
445
+ fail(`Invalid YAML: ${filePath}`);
446
+ }
447
+ }
448
+
449
+ function readToml(filePath) {
450
+ if (!fs.existsSync(filePath)) {
451
+ return {};
452
+ }
453
+ const raw = fs.readFileSync(filePath, "utf8").trim();
454
+ if (!raw) {
455
+ return {};
456
+ }
457
+ try {
458
+ return toml.parse(raw) || {};
459
+ } catch {
460
+ fail(`Invalid TOML: ${filePath}`);
461
+ }
462
+ }
463
+
464
+ function ensureDir(filePath) {
465
+ const dir = path.dirname(filePath);
466
+ if (!fs.existsSync(dir)) {
467
+ fs.mkdirSync(dir, { recursive: true });
468
+ }
469
+ }
470
+
471
+ function writeFile(filePath, content) {
472
+ if (options.dryRun) {
473
+ process.stdout.write(`\n# ${filePath}\n${content}\n`);
474
+ return;
475
+ }
476
+ fs.writeFileSync(filePath, content, "utf8");
477
+ process.stdout.write(`Updated ${filePath}\n`);
478
+ }
479
+
480
+ function escapeRegex(value) {
481
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
482
+ }
483
+
484
+ function fail(message) {
485
+ process.stderr.write(`${message}\n`);
486
+ process.exit(1);
487
+ }
488
+
489
+ function printHelp() {
490
+ process.stdout.write(`mcp-abap-adt-configure
491
+
492
+ Usage:
493
+ mcp-abap-adt-configure --client <name> --name <serverName> [--env <path> | --mcp <dest>] [options]
494
+
495
+ Options:
496
+ --client <name> cline | codex | claude | goose | cursor | windsurf (repeatable)
497
+ --name <serverName> required MCP server name key
498
+ --env <path> .env path (add/update only)
499
+ --mcp <dest> destination name (add/update only)
500
+ --transport <type> only stdio supported
501
+ --command <bin> command to run (default: mcp-abap-adt)
502
+ --project <path> Claude project path (defaults to cwd)
503
+ --config <path> override client config path (Claude Linux)
504
+ --disable disable entry (Codex/Cline/Windsurf/Goose only)
505
+ --enable enable entry (Codex/Cline/Windsurf/Goose only)
506
+ --remove remove entry
507
+ --force overwrite existing entry (add/update)
508
+ --dry-run print changes without writing files
509
+ -h, --help show this help
510
+
511
+ Notes:
512
+ New entries for Cline/Codex/Windsurf/Goose are added disabled by default.
513
+ `);
514
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"handlerLogger.d.ts","sourceRoot":"","sources":["../../src/lib/handlerLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAAsB,GACjC,MAAM,CAcR;AAGD,eAAO,MAAM,UAAU,EAAE,MAKxB,CAAC"}
1
+ {"version":3,"file":"handlerLogger.d.ts","sourceRoot":"","sources":["../../src/lib/handlerLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAeR;AAGD,eAAO,MAAM,UAAU,EAAE,MAKxB,CAAC"}
@@ -2,23 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.noopLogger = void 0;
4
4
  exports.getHandlerLogger = getHandlerLogger;
5
- const logger_1 = require("@mcp-abap-adt/logger");
5
+ const node_module_1 = require("node:module");
6
6
  /**
7
7
  * Create a prefixed logger for handlers.
8
8
  * Honors AUTH_LOG_LEVEL from @mcp-abap-adt/logger; set to "error"/"warn"/"info"/"debug".
9
9
  * Use HANDLER_LOG_SILENT=true to force no-op logger for handlers.
10
10
  */
11
- function getHandlerLogger(category, baseLogger = logger_1.defaultLogger) {
11
+ function getHandlerLogger(category, baseLogger) {
12
12
  if (process.env.HANDLER_LOG_SILENT === 'true') {
13
13
  return exports.noopLogger;
14
14
  }
15
+ const resolvedLogger = baseLogger ?? getDefaultLogger();
15
16
  const prefix = `[${category}]`;
16
17
  const wrap = (fn) => (msg) => fn(`${prefix} ${msg}`);
17
18
  return {
18
- info: wrap(baseLogger?.info.bind(baseLogger)),
19
- debug: wrap(baseLogger?.debug.bind(baseLogger)),
20
- warn: wrap(baseLogger?.warn.bind(baseLogger)),
21
- error: wrap(baseLogger?.error.bind(baseLogger)),
19
+ info: wrap(resolvedLogger?.info.bind(resolvedLogger)),
20
+ debug: wrap(resolvedLogger?.debug.bind(resolvedLogger)),
21
+ warn: wrap(resolvedLogger?.warn.bind(resolvedLogger)),
22
+ error: wrap(resolvedLogger?.error.bind(resolvedLogger)),
22
23
  };
23
24
  }
24
25
  const noopFn = () => { };
@@ -28,4 +29,9 @@ exports.noopLogger = {
28
29
  warn: noopFn,
29
30
  error: noopFn,
30
31
  };
32
+ function getDefaultLogger() {
33
+ const require = (0, node_module_1.createRequire)(__filename);
34
+ const mod = require('@mcp-abap-adt/logger');
35
+ return mod.defaultLogger ?? new mod.DefaultLogger();
36
+ }
31
37
  //# sourceMappingURL=handlerLogger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlerLogger.js","sourceRoot":"","sources":["../../src/lib/handlerLogger.ts"],"names":[],"mappings":";;;AAQA,4CAiBC;AAxBD,iDAAqD;AAErD;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,aAAqB,sBAAa;IAElC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAC9C,OAAO,kBAAU,CAAC;IACpB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,QAAQ,GAAG,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,EAAyB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAC1D,EAAE,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACX,QAAA,UAAU,GAAW;IAChC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;CACd,CAAC"}
1
+ {"version":3,"file":"handlerLogger.js","sourceRoot":"","sources":["../../src/lib/handlerLogger.ts"],"names":[],"mappings":";;;AAQA,4CAkBC;AA1BD,6CAA4C;AAG5C;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,UAAmB;IAEnB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAC9C,OAAO,kBAAU,CAAC;IACpB,CAAC;IACD,MAAM,cAAc,GAAG,UAAU,IAAI,gBAAgB,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,QAAQ,GAAG,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,EAAyB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAC1D,EAAE,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACX,QAAA,UAAU,GAAW;IAChC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,IAAA,2BAAa,EAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,aAAa,IAAI,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;AACtD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AuthBroker } from '@mcp-abap-adt/auth-broker';
2
2
  import { type AbapConnection } from '@mcp-abap-adt/connection';
3
- import { type Logger } from '@mcp-abap-adt/logger';
3
+ import type { Logger } from '@mcp-abap-adt/logger';
4
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
5
  import type { IHandlersRegistry } from '../lib/handlers/interfaces.js';
6
6
  import type { ConnectionContext } from './ConnectionContext.js';
@@ -40,7 +40,7 @@ export declare abstract class BaseMcpServer extends McpServer {
40
40
  * Sets connection context from HTTP headers (direct SAP connection, no broker)
41
41
  * Used when x-sap-url + auth headers are provided
42
42
  */
43
- protected setConnectionContextFromHeaders(headers: any): void;
43
+ protected setConnectionContextFromHeaders(headers: Record<string, string | string[] | undefined>): void;
44
44
  /**
45
45
  * Gets current connection context
46
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMcpServer.d.ts","sourceRoot":"","sources":["../../src/server/BaseMcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,8BAAsB,aAAc,SAAQ,SAAS;IACnD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAE7D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAKxE;;;;OAIG;cACa,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAsEhB;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IA2C7D;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAI1D;;;;;;OAMG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAiCxD;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;CAqGtE"}
1
+ {"version":3,"file":"BaseMcpServer.d.ts","sourceRoot":"","sources":["../../src/server/BaseMcpServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,8BAAsB,aAAc,SAAQ,SAAS;IACnD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAE7D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAKxE;;;;OAIG;cACa,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAsEhB;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,IAAI;IAgDP;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAI1D;;;;;;OAMG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAiCxD;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;CAmItE"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseMcpServer = void 0;
4
+ const node_module_1 = require("node:module");
4
5
  const connection_1 = require("@mcp-abap-adt/connection");
5
- const logger_1 = require("@mcp-abap-adt/logger");
6
6
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
7
7
  const CompositeHandlersRegistry_js_1 = require("../lib/handlers/registry/CompositeHandlersRegistry.js");
8
8
  const schemaUtils_js_1 = require("../lib/handlers/utils/schemaUtils.js");
@@ -30,7 +30,7 @@ class BaseMcpServer extends mcp_js_1.McpServer {
30
30
  cachedConnection = null;
31
31
  constructor(options) {
32
32
  super({ name: options.name, version: options.version ?? '1.0.0' });
33
- this.logger = options.logger ?? logger_1.defaultLogger;
33
+ this.logger = options.logger ?? getDefaultLogger();
34
34
  }
35
35
  /**
36
36
  * Sets connection context using auth broker
@@ -97,11 +97,15 @@ class BaseMcpServer extends mcp_js_1.McpServer {
97
97
  * Used when x-sap-url + auth headers are provided
98
98
  */
99
99
  setConnectionContextFromHeaders(headers) {
100
- const url = headers['x-sap-url'] || headers['X-SAP-URL'];
101
- const jwtToken = headers['x-sap-jwt-token'] || headers['X-SAP-JWT-Token'];
102
- const username = headers['x-sap-login'] || headers['X-SAP-Login'];
103
- const password = headers['x-sap-password'] || headers['X-SAP-Password'];
104
- const client = headers['x-sap-client'] || headers['X-SAP-Client'] || '';
100
+ const getHeader = (name) => {
101
+ const value = headers[name] ?? headers[name.toUpperCase()];
102
+ return Array.isArray(value) ? value[0] : value;
103
+ };
104
+ const url = getHeader('x-sap-url');
105
+ const jwtToken = getHeader('x-sap-jwt-token');
106
+ const username = getHeader('x-sap-login');
107
+ const password = getHeader('x-sap-password');
108
+ const client = getHeader('x-sap-client') || '';
105
109
  if (!url) {
106
110
  throw new Error('x-sap-url header is required for direct SAP connection');
107
111
  }
@@ -186,8 +190,6 @@ class BaseMcpServer extends mcp_js_1.McpServer {
186
190
  for (const group of groups) {
187
191
  const handlers = group.getHandlers();
188
192
  for (const entry of handlers) {
189
- // Wrap handler to inject connection from context
190
- // Original handler: (context: HandlerContext, args: any) => Promise<any>
191
193
  const wrappedHandler = async (args) => {
192
194
  // Get connection from context (this.connectionContext)
193
195
  // Token will be automatically refreshed via AuthBroker if needed
@@ -204,11 +206,12 @@ class BaseMcpServer extends mcp_js_1.McpServer {
204
206
  }
205
207
  else {
206
208
  try {
207
- if (typeof group.setContext === 'function') {
208
- group.setContext(context);
209
+ const contextAwareGroup = group;
210
+ if (typeof contextAwareGroup.setContext === 'function') {
211
+ contextAwareGroup.setContext(context);
209
212
  }
210
213
  else {
211
- group.context = context;
214
+ contextAwareGroup.context = context;
212
215
  }
213
216
  }
214
217
  catch {
@@ -217,15 +220,16 @@ class BaseMcpServer extends mcp_js_1.McpServer {
217
220
  handlerPromise = entry.handler(args);
218
221
  }
219
222
  const result = await handlerPromise;
220
- // Handle errors: if handler returns isError, throw McpError
221
223
  if (result?.isError) {
222
224
  const { ErrorCode, McpError } = await import('@modelcontextprotocol/sdk/types.js');
223
- const errorText = (result.content || [])
225
+ const errorText = (result?.content || [])
224
226
  .map((item) => {
225
227
  if (item?.type === 'json' && item.json !== undefined) {
226
228
  return JSON.stringify(item.json);
227
229
  }
228
- return item?.text || String(item);
230
+ return item?.text !== undefined
231
+ ? String(item.text)
232
+ : String(item);
229
233
  })
230
234
  .join('\n') || 'Unknown error';
231
235
  throw new McpError(ErrorCode.InternalError, errorText);
@@ -241,7 +245,9 @@ class BaseMcpServer extends mcp_js_1.McpServer {
241
245
  // Ensure all items have proper text type structure
242
246
  return {
243
247
  type: 'text',
244
- text: item?.text || String(item || ''),
248
+ text: item?.text !== undefined
249
+ ? String(item.text)
250
+ : String(item || ''),
245
251
  };
246
252
  });
247
253
  return { content };
@@ -270,4 +276,9 @@ class BaseMcpServer extends mcp_js_1.McpServer {
270
276
  }
271
277
  }
272
278
  exports.BaseMcpServer = BaseMcpServer;
279
+ function getDefaultLogger() {
280
+ const require = (0, node_module_1.createRequire)(__filename);
281
+ const mod = require('@mcp-abap-adt/logger');
282
+ return mod.defaultLogger ?? new mod.DefaultLogger();
283
+ }
273
284
  //# sourceMappingURL=BaseMcpServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMcpServer.js","sourceRoot":"","sources":["../../src/server/BaseMcpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseMcpServer.js","sourceRoot":"","sources":["../../src/server/BaseMcpServer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AbapConnection } from '@mcp-abap-adt/connection';
2
- import { type Logger } from '@mcp-abap-adt/logger';
2
+ import type { Logger } from '@mcp-abap-adt/logger';
3
3
  import type { IHandlersRegistry } from '../lib/handlers/interfaces.js';
4
4
  import { BaseMcpServer } from './BaseMcpServer.js';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddableMcpServer.d.ts","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAOlE,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,UAAU,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAErC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;IAEnE;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAExC,OAAO,EAAE,0BAA0B;IAoB/C;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAIxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA+B9B"}
1
+ {"version":3,"file":"EmbeddableMcpServer.d.ts","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAOnD,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,UAAU,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAErC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;IAEnE;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAExC,OAAO,EAAE,0BAA0B;IAoB/C;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAIxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA+B9B"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EmbeddableMcpServer = void 0;
4
- const logger_1 = require("@mcp-abap-adt/logger");
4
+ const node_module_1 = require("node:module");
5
5
  const HighLevelHandlersGroup_js_1 = require("../lib/handlers/groups/HighLevelHandlersGroup.js");
6
6
  const LowLevelHandlersGroup_js_1 = require("../lib/handlers/groups/LowLevelHandlersGroup.js");
7
7
  const ReadOnlyHandlersGroup_js_1 = require("../lib/handlers/groups/ReadOnlyHandlersGroup.js");
@@ -40,7 +40,7 @@ class EmbeddableMcpServer extends BaseMcpServer_js_1.BaseMcpServer {
40
40
  super({
41
41
  name: 'mcp-abap-adt',
42
42
  version: options.version ?? DEFAULT_VERSION,
43
- logger: options.logger ?? logger_1.defaultLogger,
43
+ logger: options.logger,
44
44
  });
45
45
  this.injectedConnection = options.connection;
46
46
  // Use provided registry or create default based on exposition
@@ -63,7 +63,7 @@ class EmbeddableMcpServer extends BaseMcpServer_js_1.BaseMcpServer {
63
63
  // creates wrapper lambdas that call getConnection() for fresh context
64
64
  const dummyContext = {
65
65
  connection: null,
66
- logger: logger ?? logger_1.defaultLogger,
66
+ logger: logger ?? getDefaultLogger(),
67
67
  };
68
68
  const groups = [];
69
69
  if (exposition.includes('readonly')) {
@@ -85,4 +85,9 @@ class EmbeddableMcpServer extends BaseMcpServer_js_1.BaseMcpServer {
85
85
  }
86
86
  }
87
87
  exports.EmbeddableMcpServer = EmbeddableMcpServer;
88
+ function getDefaultLogger() {
89
+ const require = (0, node_module_1.createRequire)(__filename);
90
+ const mod = require('@mcp-abap-adt/logger');
91
+ return mod.defaultLogger ?? new mod.DefaultLogger();
92
+ }
88
93
  //# sourceMappingURL=EmbeddableMcpServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddableMcpServer.js","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":";;;AACA,iDAAkE;AAElE,gGAA0F;AAC1F,8FAAwF;AACxF,8FAAwF;AACxF,0FAAoF;AACpF,0FAAoF;AAKpF,wGAAkG;AAClG,yDAAmD;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC;AAqCnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,mBAAoB,SAAQ,gCAAa;IACnC,kBAAkB,CAAiB;IAEpD,YAAY,OAAmC;QAC7C,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;YAC3C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,sBAAa;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;QAE7C,8DAA8D;QAC9D,MAAM,QAAQ,GACZ,OAAO,CAAC,gBAAgB;YACxB,IAAI,CAAC,qBAAqB,CACxB,OAAO,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAC1C,OAAO,CAAC,MAAM,CACf,CAAC;QAEJ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,aAAa;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,UAAiE,EACjE,MAAe;QAEf,6EAA6E;QAC7E,sEAAsE;QACtE,MAAM,YAAY,GAAmB;YACnC,UAAU,EAAE,IAAW;YACvB,MAAM,EAAE,MAAM,IAAI,sBAAa;SAChC,CAAC;QAEF,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,IAAI,gDAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,kDAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,gDAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,4CAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,4CAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,wDAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAjED,kDAiEC"}
1
+ {"version":3,"file":"EmbeddableMcpServer.js","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAI5C,gGAA0F;AAC1F,8FAAwF;AACxF,8FAAwF;AACxF,0FAAoF;AACpF,0FAAoF;AAKpF,wGAAkG;AAClG,yDAAmD;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC;AAqCnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,mBAAoB,SAAQ,gCAAa;IACnC,kBAAkB,CAAiB;IAEpD,YAAY,OAAmC;QAC7C,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;YAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;QAE7C,8DAA8D;QAC9D,MAAM,QAAQ,GACZ,OAAO,CAAC,gBAAgB;YACxB,IAAI,CAAC,qBAAqB,CACxB,OAAO,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAC1C,OAAO,CAAC,MAAM,CACf,CAAC;QAEJ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,aAAa;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,UAAiE,EACjE,MAAe;QAEf,6EAA6E;QAC7E,sEAAsE;QACtE,MAAM,YAAY,GAAmB;YACnC,UAAU,EAAE,IAAiC;YAC7C,MAAM,EAAE,MAAM,IAAI,gBAAgB,EAAE;SACrC,CAAC;QAEF,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,IAAI,gDAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,kDAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,gDAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,4CAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,4CAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,wDAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAjED,kDAiEC;AAED,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,IAAA,2BAAa,EAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,aAAa,IAAI,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function createSandboxServer(): any;
2
+ //# sourceMappingURL=smithery-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smithery-entry.d.ts","sourceRoot":"","sources":["../src/smithery-entry.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,QAuBlC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSandboxServer = createSandboxServer;
4
+ function createSandboxServer() {
5
+ // Lazy-load to avoid pulling in optional logger transports during bundling.
6
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
7
+ const { EmbeddableMcpServer } = require('./server/EmbeddableMcpServer.js');
8
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
9
+ const { MockAbapConnection } = require('./server/MockAbapConnection.js');
10
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
11
+ const { AbapConnection } = require('@mcp-abap-adt/connection');
12
+ const connection = new MockAbapConnection();
13
+ const noopLogger = {
14
+ info: () => { },
15
+ debug: () => { },
16
+ warn: () => { },
17
+ error: () => { },
18
+ };
19
+ return new EmbeddableMcpServer({
20
+ connection,
21
+ logger: noopLogger,
22
+ exposition: ['readonly', 'high', 'system', 'search'],
23
+ });
24
+ }
25
+ //# sourceMappingURL=smithery-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smithery-entry.js","sourceRoot":"","sources":["../src/smithery-entry.ts"],"names":[],"mappings":";;AAAA,kDAuBC;AAvBD,SAAgB,mBAAmB;IACjC,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC3E,8DAA8D;IAC9D,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACzE,8DAA8D;IAC9D,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAE/D,MAAM,UAAU,GACd,IAAI,kBAAkB,EAAgD,CAAC;IACzE,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAChB,CAAC;IAEF,OAAO,IAAI,mBAAmB,CAAC;QAC7B,UAAU;QACV,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACrD,CAAC,CAAC;AACL,CAAC"}
package/docs/README.md CHANGED
@@ -48,6 +48,8 @@ Documentation for developers: testing, development guides, and internal document
48
48
  - **Getting Started**: [Installation Guide](installation/INSTALLATION.md)
49
49
  - **User Configuration**: [Client Configuration](user-guide/CLIENT_CONFIGURATION.md)
50
50
  - **Server Configuration**: [YAML Config](configuration/YAML_CONFIG.md) | [CLI Options](user-guide/CLI_OPTIONS.md)
51
+ - **Deployment**: [MCP Registry](deployment/MCP_REGISTRY.md) | [Docker](deployment/DOCKER.md)
52
+ - **Client Configuration**: [Auto-Configure](installation/CLIENT_INSTALLERS.md)
51
53
  - **Available Tools**: [Tools List](user-guide/AVAILABLE_TOOLS.md)
52
54
  - **Architecture**: [Stateful Sessions](architecture/STATEFUL_SESSION_GUIDE.md) | [Architecture Docs](architecture/README.md)
53
55
  - **Development**: [Development Documentation](development/)
@@ -0,0 +1,34 @@
1
+ # MCP Registry Publishing
2
+
3
+ This project is published in the official MCP Registry.
4
+
5
+ ## Prerequisites
6
+ - Install `mcp-publisher` (see official docs).
7
+ - Ensure the npm package is published and contains `mcpName` in `package.json`.
8
+
9
+ ## Required Metadata
10
+
11
+ - `server.json` in the repository root
12
+ - `mcpName` in `package.json`
13
+
14
+ Expected values:
15
+ - Registry name: `io.github.fr0ster/mcp-abap-adt`
16
+ - npm package: `@mcp-abap-adt/core` (stdio)
17
+
18
+ ## Publish
19
+
20
+ ```bash
21
+ mcp-publisher login github
22
+ mcp-publisher publish
23
+ ```
24
+
25
+ ## Verify
26
+
27
+ ```bash
28
+ curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.fr0ster/mcp-abap-adt"
29
+ ```
30
+
31
+ ## Notes
32
+
33
+ - Keep `server.json` version in sync with the npm package version.
34
+ - If publish fails with “missing mcpName”, publish a new npm version that includes `mcpName`.
@@ -11,6 +11,11 @@ This directory contains documentation for deploying and releasing MCP ABAP ADT S
11
11
  - Multi-stage builds
12
12
  - Production best practices
13
13
 
14
+ - **[MCP_REGISTRY.md](./MCP_REGISTRY.md)** - MCP Registry publishing
15
+ - `server.json` and `mcpName` metadata
16
+ - Publish with `mcp-publisher`
17
+ - Verification steps
18
+
14
19
  - **[RELEASE.md](./RELEASE.md)** - Release process documentation
15
20
  - Automated releases via GitHub Actions
16
21
  - Manual release process
@@ -0,0 +1,91 @@
1
+ # Client Auto-Configure
2
+
3
+ This helper writes MCP configuration entries for popular clients.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @mcp-abap-adt/core
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ mcp-abap-adt-configure --client cline --env /path/to/.env --name abap
15
+ mcp-abap-adt-configure --client cline --mcp TRIAL --name abap
16
+ mcp-abap-adt-configure --client cline --env /path/to/.env --name abap --transport stdio
17
+ mcp-abap-adt-configure --client claude --mcp TRIAL --name abap --project /home/user/prj/myproj
18
+ mcp-abap-adt-configure --client codex --name abap --remove
19
+ ```
20
+
21
+ ## Common Tasks
22
+
23
+ Add MCP:
24
+ ```bash
25
+ mcp-abap-adt-configure --client codex --mcp TRIAL --name abap
26
+ mcp-abap-adt-configure --client cline --env /path/to/.env --name abap
27
+ mcp-abap-adt-configure --client claude --mcp TRIAL --name abap --project /home/user/prj/myproj
28
+ ```
29
+
30
+ Disable MCP:
31
+ ```bash
32
+ mcp-abap-adt-configure --client codex --name abap --disable
33
+ mcp-abap-adt-configure --client cline --name abap --disable
34
+ ```
35
+
36
+ Enable MCP:
37
+ ```bash
38
+ mcp-abap-adt-configure --client codex --name abap --enable
39
+ mcp-abap-adt-configure --client cline --name abap --enable
40
+ ```
41
+
42
+ Remove MCP:
43
+ ```bash
44
+ mcp-abap-adt-configure --client codex --name abap --remove
45
+ mcp-abap-adt-configure --client cline --name abap --remove
46
+ mcp-abap-adt-configure --client claude --name abap --project /home/user/prj/myproj --remove
47
+ ```
48
+
49
+ Options:
50
+ - `--client <name>` (repeatable): `cline`, `codex`, `claude`, `goose`, `cursor`, `windsurf`
51
+ - `--env <path>`: use a specific `.env` file
52
+ - `--mcp <destination>`: use service key destination
53
+ - `--name <serverName>`: MCP server name (required)
54
+ - `--transport <type>`: transport type (only `stdio` supported)
55
+ - `--command <bin>`: command to run (default: `mcp-abap-adt`)
56
+ - `--project <path>`: project path for Claude Desktop (defaults to current directory)
57
+ - `--config <path>`: override client config path (optional for Claude on Linux; default: `~/.claude.json`)
58
+ - `--disable`: disable server entry (Codex: `enabled = false`, Cline: `disabled = true`)
59
+ - `--enable`: enable server entry (Codex: `enabled = true`, Cline: `disabled = false`)
60
+ - `--remove`: remove server entry from client config
61
+
62
+ Notes:
63
+ - `--disable` and `--remove` do not require `--env` or `--mcp`.
64
+ - Cursor ignores enable/disable via `mcp.json`; use `--remove` instead.
65
+ - New entries for Cline, Codex, Windsurf, and Goose are added **disabled by default**. Use `--enable` to turn them on.
66
+ - `--enable`/`--disable` only work if the server entry already exists. Use add commands with `--env` or `--mcp` first.
67
+ - `--dry-run`: print changes without writing files
68
+ - `--force`: overwrite existing server entry if it exists
69
+
70
+ ## Config Locations
71
+
72
+ Paths are client-specific and OS-dependent. The installer writes config files in:
73
+
74
+ - **Cline**:
75
+ - Linux/macOS: `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
76
+ - Windows: `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`
77
+ - **Codex**:
78
+ - Linux/macOS: `~/.codex/config.toml`
79
+ - Windows: `%USERPROFILE%\.codex\config.toml`
80
+ - **Claude Desktop**:
81
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
82
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
83
+ - **Goose**:
84
+ - Linux/macOS: `~/.config/goose/config.yaml`
85
+ - Windows: `%APPDATA%\Block\goose\config\config.yaml`
86
+ - **Cursor**:
87
+ - Linux/macOS: `~/.cursor/mcp.json`
88
+ - Windows: `%USERPROFILE%\.cursor\mcp.json`
89
+ - **Windsurf**:
90
+ - Linux/macOS: `~/.codeium/windsurf/mcp_config.json`
91
+ - Windows: `%USERPROFILE%\.codeium\windsurf\mcp_config.json`
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/core",
3
- "version": "2.1.7",
3
+ "mcpName": "io.github.fr0ster/mcp-abap-adt",
4
+ "version": "2.2.0",
4
5
  "main": "dist/index.js",
5
6
  "types": "dist/index.d.ts",
6
7
  "exports": {
@@ -96,19 +97,19 @@
96
97
  "url": "git+https://github.com/fr0ster/mcp-abap-adt.git"
97
98
  },
98
99
  "devDependencies": {
99
- "@biomejs/biome": "^2.3.10",
100
- "@modelcontextprotocol/inspector": "^0.18.0",
100
+ "@biomejs/biome": "^2.3.14",
101
+ "@modelcontextprotocol/inspector": "^0.19.0",
101
102
  "@types/jest": "^30.0.0",
102
103
  "@types/js-yaml": "^4.0.9",
103
- "@types/node": "^25.0.3",
104
- "commander": "^14.0.2",
105
- "cors": "^2.8.5",
106
- "dotenv": "^17.2.1",
104
+ "@types/node": "^25.2.2",
105
+ "commander": "^14.0.3",
106
+ "cors": "^2.8.6",
107
+ "dotenv": "^17.2.4",
107
108
  "express": "^5.1.0",
108
109
  "jest": "^30.2.0",
109
110
  "jest-util": "^30.2.0",
110
111
  "open": "^11.0.0",
111
- "pino": "^10.1.0",
112
+ "pino": "^10.3.0",
112
113
  "pino-pretty": "^13.1.3",
113
114
  "serve-handler": "^6.1.6",
114
115
  "ts-jest": "^29.2.0",
@@ -118,21 +119,22 @@
118
119
  },
119
120
  "dependencies": {
120
121
  "@mcp-abap-adt/adt-clients": "^0.3.13",
121
- "@mcp-abap-adt/auth-broker": "^0.3.0",
122
+ "@mcp-abap-adt/auth-broker": "^0.3.6",
122
123
  "@mcp-abap-adt/auth-providers": "^0.2.10",
123
124
  "@mcp-abap-adt/auth-stores": "^0.3.0",
124
125
  "@mcp-abap-adt/connection": "^0.2.9",
125
126
  "@mcp-abap-adt/header-validator": "^0.1.8",
126
127
  "@mcp-abap-adt/interfaces": "^0.2.15",
127
128
  "@mcp-abap-adt/logger": "^0.1.4",
128
- "@modelcontextprotocol/sdk": "^1.25.1",
129
- "axios": "^1.11.0",
130
- "fast-xml-parser": "^5.3.3",
129
+ "@modelcontextprotocol/sdk": "^1.26.0",
130
+ "@iarna/toml": "^2.2.5",
131
+ "axios": "^1.13.5",
132
+ "fast-xml-parser": "^5.3.5",
131
133
  "js-yaml": "^4.1.1",
132
134
  "pino": "^10.1.0",
133
135
  "pino-pretty": "^13.1.3",
134
136
  "xml-js": "^1.6.11",
135
- "zod": "^4.2.1"
137
+ "zod": "^4.3.6"
136
138
  },
137
139
  "engines": {
138
140
  "node": ">=18.0.0",
@@ -148,7 +150,8 @@
148
150
  ],
149
151
  "bin": {
150
152
  "mcp-abap-adt": "./bin/mcp-abap-adt.js",
151
- "mcp-abap-adt-v2": "./bin/mcp-abap-adt-v2.js"
153
+ "mcp-abap-adt-v2": "./bin/mcp-abap-adt-v2.js",
154
+ "mcp-abap-adt-configure": "./bin/mcp-abap-adt-configure.js"
152
155
  },
153
156
  "jest": {
154
157
  "preset": "ts-jest",