@mcp-abap-adt/core 7.1.1 → 7.1.3
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 +28 -0
- package/README.md +6 -9
- package/dist/lib/config/ServerConfigManager.d.ts.map +1 -1
- package/dist/lib/config/ServerConfigManager.js +10 -2
- package/dist/lib/config/ServerConfigManager.js.map +1 -1
- package/docs/architecture/ARCHITECTURE.md +8 -6
- package/docs/architecture/HANDLER_EXPORTER.md +6 -6
- package/docs/architecture/README.md +1 -1
- package/docs/architecture/TOOLS_ARCHITECTURE.md +13 -4
- package/docs/configuration/YAML_CONFIG.md +7 -23
- package/docs/deployment/GITHUB_ACTIONS.md +2 -2
- package/docs/development/ASSISTANT_GUIDELINES.md +1 -1
- package/docs/development/tests/TESTING_AUTH.md +3 -3
- package/docs/installation/CLINE_CONFIGURATION.md +12 -20
- package/docs/installation/INSTALLATION.md +34 -38
- package/docs/installation/examples/README.md +10 -10
- package/docs/installation/examples/SERVICE_KEY_SETUP.md +3 -3
- package/docs/installation/examples/cline-stdio-npx-config.json +1 -1
- package/docs/installation/platforms/INSTALL_LINUX.md +28 -27
- package/docs/installation/platforms/INSTALL_MACOS.md +27 -26
- package/docs/installation/platforms/INSTALL_WINDOWS.md +27 -26
- package/docs/user-guide/AVAILABLE_TOOLS.md +110 -4
- package/docs/user-guide/AVAILABLE_TOOLS_COMPACT.md +1 -1
- package/docs/user-guide/AVAILABLE_TOOLS_HIGH.md +51 -2
- package/docs/user-guide/AVAILABLE_TOOLS_LEGACY.md +128 -4
- package/docs/user-guide/AVAILABLE_TOOLS_LOW.md +1 -1
- package/docs/user-guide/AVAILABLE_TOOLS_READONLY.md +59 -2
- package/docs/user-guide/CLIENT_CONFIGURATION.md +4 -4
- package/docs/user-guide/CLI_OPTIONS.md +35 -84
- package/docs/user-guide/HANDLERS_MANAGEMENT.md +9 -9
- package/docs/user-guide/README.md +8 -8
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [7.1.3] - 2026-06-20
|
|
6
|
+
|
|
7
|
+
> Fixes the SSE transport host/port resolution, removes a broken CLI bin entry,
|
|
8
|
+
> and corrects the install documentation (`README.md`/`docs/` ship in `files`,
|
|
9
|
+
> so the doc fixes reach npm users with this release).
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **SSE transport now honours its own host/port.** `--transport=sse` resolved the final host/port from the HTTP defaults/flags (`httpHost`/`httpPort`, so it listened on `3000`), ignoring `--sse-host`/`--sse-port` and `MCP_SSE_HOST`/`MCP_SSE_PORT`. Host/port resolution is now transport-aware: SSE falls back to the SSE defaults (host `127.0.0.1`, port `3001`) and its `--sse-*` flags / `MCP_SSE_*` env vars take effect; the generic `--host`/`--port` still win when provided. (`src/lib/config/ServerConfigManager.ts`.)
|
|
13
|
+
- **Removed the dangling `mcp-abap-adt-v2` bin entry.** `package.json`/`package-lock.json` still mapped `mcp-abap-adt-v2` → `bin/mcp-abap-adt-v2.js`, a file removed in an earlier release, so a global install created a broken `mcp-abap-adt-v2` symlink. The only binary is `mcp-abap-adt`. Also fixed a stale `mcp-abap-adt-v2` example in `tools/show-storage-paths.js` help output.
|
|
14
|
+
- **Documentation accuracy sweep:**
|
|
15
|
+
- Install docs/README used the wrong npm scope `@fr0ster/mcp-abap-adt`; corrected to `@mcp-abap-adt/core` (the GitHub repo path and the `io.github.fr0ster/…` registry id are unchanged).
|
|
16
|
+
- Stale local-pack tarball names / version pins (`…-1.1.0/1.2.0.tgz`) → version-independent `mcp-abap-adt-core-<version>.tgz` (so they no longer drift); Node requirement `18` → `22+` (matches `engines`); removed the non-existent `npm run start:legacy` / `dev:stdio` references and the `bin/mcp-abap-adt-v2.js` run examples.
|
|
17
|
+
- Corrected narrative drift: default transport is `stdio` (not HTTP); HTTP/SSE host default is `127.0.0.1` (not `0.0.0.0`); removed non-existent `--http`/`--sse` CLI shortcuts; refreshed handler-group tool counts and the `src/handlers/` directory list; the `system` handler group rides with `readonly` (it is not always included).
|
|
18
|
+
- Regenerated `docs/user-guide/AVAILABLE_TOOLS*.md` from the current `TOOL_DEFINITION`s (function-include tools, `GetStructuresList`, `GetIncludesList` tree, `GetProgFullCode` removal, refreshed counts).
|
|
19
|
+
- Removed documentation for the CORS / allowed-hosts / DNS-rebinding-protection options (`--http`/`--sse-allowed-origins`/`-allowed-hosts`/`-enable-dns-protection`, the matching `MCP_*` env vars, and the `http`/`sse` `allowed-origins`/`allowed-hosts`/`enable-dns-protection` YAML keys): they are parsed but not wired to the servers, so documenting them overstated capability. Actually implementing these is planned for a follow-up release.
|
|
20
|
+
|
|
21
|
+
## [7.1.2] - 2026-06-20
|
|
22
|
+
|
|
23
|
+
> **Test infrastructure only.** The published runtime (`dist/`) is unchanged from
|
|
24
|
+
> 7.1.1 — no tool, handler, or library behaviour changed for consumers. This
|
|
25
|
+
> release bundles integration-test reliability fixes and a stale-metadata fix.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- **`shared:setup` resilient to the cloud activation-run timeout.** Bulk-activating the ~24 shared objects in one activation run can exceed adt-clients' fixed ~45s request timeout; on a timeout the setup now skips the doomed full-group retries and falls back to batched activation (chunks of 5, with a second pass retrying only the leftovers) instead of failing.
|
|
29
|
+
- **Runtime profiling test produces a trace.** The runnable class now does measurable CPU work so the profiler arms and a trace is written; a trivial single-statement class finished before tracing engaged, so the trace never resolved (`Failed to resolve traceId`).
|
|
30
|
+
- **Runtime dump test actually creates and reads a dump** (was silently skipping or hitting a `400 session` error). It activates the division-by-zero class, triggers the dump on a separate connection (so the dumping run's server-side context loss does not poison the connection used to read the dump), fixes dump-id extraction from the feed entry (`id` field, plural `/runtime/dumps/<id>` path, URL-encoded, no decode), binds the read dump to the uniquely-named generated class, and fails (instead of skipping) when no dump is produced. `params.dump_id` remains the explicit opt-out for read-only environments.
|
|
31
|
+
- **`server.json` version** was stale at `7.0.3`; bumped to match the package version.
|
|
32
|
+
|
|
5
33
|
## [7.1.1] - 2026-06-19
|
|
6
34
|
|
|
7
35
|
### Fixed
|
package/README.md
CHANGED
|
@@ -221,15 +221,15 @@ After installing globally with `npm install -g`, you can run from any directory:
|
|
|
221
221
|
# Show help
|
|
222
222
|
mcp-abap-adt --help
|
|
223
223
|
|
|
224
|
-
# Default
|
|
224
|
+
# Default stdio mode (for MCP clients; requires .env file or --mcp parameter)
|
|
225
225
|
mcp-abap-adt
|
|
226
226
|
|
|
227
|
-
#
|
|
228
|
-
mcp-abap-adt --http-port=8080
|
|
229
|
-
|
|
230
|
-
# Use stdio mode (for MCP clients, requires .env file or --mcp parameter)
|
|
227
|
+
# stdio mode (explicit; default when --transport is omitted)
|
|
231
228
|
mcp-abap-adt --transport=stdio
|
|
232
229
|
|
|
230
|
+
# HTTP mode on custom port (HTTP requires --transport=http)
|
|
231
|
+
mcp-abap-adt --transport=http --port=8080
|
|
232
|
+
|
|
233
233
|
# Use stdio mode with auth-broker (--mcp parameter)
|
|
234
234
|
mcp-abap-adt --transport=stdio --mcp=TRIAL
|
|
235
235
|
|
|
@@ -240,7 +240,7 @@ mcp-abap-adt --env=trial
|
|
|
240
240
|
mcp-abap-adt --env-path=/path/to/my.env
|
|
241
241
|
|
|
242
242
|
# SSE mode (requires .env file or --mcp parameter)
|
|
243
|
-
mcp-abap-adt --transport=sse --
|
|
243
|
+
mcp-abap-adt --transport=sse --port=3001
|
|
244
244
|
|
|
245
245
|
# SSE mode with auth-broker (--mcp parameter)
|
|
246
246
|
mcp-abap-adt --transport=sse --mcp=TRIAL
|
|
@@ -257,9 +257,6 @@ npm run start:http
|
|
|
257
257
|
|
|
258
258
|
# SSE mode
|
|
259
259
|
npm run start:sse
|
|
260
|
-
|
|
261
|
-
# Legacy v1 server (for backward compatibility)
|
|
262
|
-
npm run start:legacy
|
|
263
260
|
```
|
|
264
261
|
|
|
265
262
|
### Environment Configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerConfigManager.d.ts","sourceRoot":"","sources":["../../../src/lib/config/ServerConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAc,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAQ/E,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMhE;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAM5C;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAazC;;;OAGG;IACH,aAAa,IAAI,aAAa;IAW9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ServerConfigManager.d.ts","sourceRoot":"","sources":["../../../src/lib/config/ServerConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAc,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAQ/E,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMhE;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAM5C;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAazC;;;OAGG;IACH,aAAa,IAAI,aAAa;IAW9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,MAAM;IAkC1C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM;CAqGzD"}
|
|
@@ -86,12 +86,20 @@ class ServerConfigManager {
|
|
|
86
86
|
const parsed = ArgumentsParser_js_1.ArgumentsParser.parse();
|
|
87
87
|
const transport = this.parseTransport();
|
|
88
88
|
const exposition = this.parseExposition();
|
|
89
|
+
// Resolve final host/port in a transport-aware way: SSE must fall back to
|
|
90
|
+
// the SSE-specific defaults/flags (--sse-host/--sse-port, MCP_SSE_HOST/PORT,
|
|
91
|
+
// 3001) rather than the HTTP ones, so `--transport=sse` listens on 3001 and
|
|
92
|
+
// the SSE flags/env actually take effect. The generic --host/--port still
|
|
93
|
+
// win when provided.
|
|
94
|
+
const isSse = transport === 'sse';
|
|
95
|
+
const transportHost = isSse ? parsed.sseHost : parsed.httpHost;
|
|
96
|
+
const transportPort = isSse ? parsed.ssePort : parsed.httpPort;
|
|
89
97
|
return {
|
|
90
98
|
transport: transport || 'stdio',
|
|
91
99
|
exposition: exposition.length > 0 ? exposition : ['readonly', 'high'],
|
|
92
100
|
configFile: (0, yamlConfig_js_1.parseConfigArg)(),
|
|
93
|
-
host: ArgumentsParser_js_1.ArgumentsParser.getArgument('--host') ||
|
|
94
|
-
port: this.parsePort() ||
|
|
101
|
+
host: ArgumentsParser_js_1.ArgumentsParser.getArgument('--host') || transportHost,
|
|
102
|
+
port: this.parsePort() || transportPort,
|
|
95
103
|
httpJsonResponse: parsed.httpJsonResponse || undefined,
|
|
96
104
|
httpPath: ArgumentsParser_js_1.ArgumentsParser.getArgument('--path') ||
|
|
97
105
|
ArgumentsParser_js_1.ArgumentsParser.getArgument('--http-path'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerConfigManager.js","sourceRoot":"","sources":["../../../src/lib/config/ServerConfigManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEH,6DAAuD;AAEvD,mDAKyB;AAIzB,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E;;GAEG;AACH,MAAa,mBAAmB;IACtB,MAAM,GAAyB,IAAI,CAAC;IAE5C,6EAA6E;IAC7E,oCAAoC;IACpC,6EAA6E;IAE7E;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,4DAA4D;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,uCAAuC;IACvC,6EAA6E;IAE7E;;;OAGG;IACK,sBAAsB;QAC5B,MAAM,UAAU,GAAG,IAAA,8BAAc,GAAE,CAAC;QACpC,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,gDAAgD;QAChD,MAAM,iBAAiB,GAAG,IAAA,8CAA8B,EAAC,UAAU,CAAC,CAAC;QACrE,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mEAAmE,CACpE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAA,8BAAc,EAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,IAAA,qCAAqB,EAAC,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,iCAAiC;IACjC,6EAA6E;IAE7E;;;;OAIG;IACK,gBAAgB;QACtB,2CAA2C;QAC3C,MAAM,MAAM,GAAG,oCAAe,CAAC,KAAK,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE1C,OAAO;YACL,SAAS,EAAE,SAAS,IAAI,OAAO;YAC/B,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;YACrE,UAAU,EAAE,IAAA,8BAAc,GAAE;YAC5B,IAAI,EAAE,oCAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"ServerConfigManager.js","sourceRoot":"","sources":["../../../src/lib/config/ServerConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -288,13 +288,15 @@ launcher.ts main()
|
|
|
288
288
|
|
|
289
289
|
Handlers are organized into groups by access level:
|
|
290
290
|
|
|
291
|
-
| Group | Purpose |
|
|
291
|
+
| Group | Purpose | Approx. Tool Count |
|
|
292
292
|
|:---|:---|:---|
|
|
293
|
-
| `ReadOnlyHandlersGroup` | Get operations (read source, metadata) | ~
|
|
294
|
-
| `HighLevelHandlersGroup` | Full CRUD (Create, Update, Delete, Get) | ~
|
|
295
|
-
| `LowLevelHandlersGroup` | Fine-grained (lock, unlock, activate, validate) | ~
|
|
296
|
-
| `SearchHandlersGroup` | Repository search, where-used | ~
|
|
297
|
-
| `SystemHandlersGroup` | System info, discovery | ~
|
|
293
|
+
| `ReadOnlyHandlersGroup` | Get operations (read source, metadata) | ~29 |
|
|
294
|
+
| `HighLevelHandlersGroup` | Full CRUD (Create, Update, Delete, Get) | ~121 |
|
|
295
|
+
| `LowLevelHandlersGroup` | Fine-grained (lock, unlock, activate, validate) | ~120 |
|
|
296
|
+
| `SearchHandlersGroup` | Repository search, where-used | ~4 |
|
|
297
|
+
| `SystemHandlersGroup` | System info, discovery | ~30 |
|
|
298
|
+
|
|
299
|
+
Counts drift as tools are added; see [AVAILABLE_TOOLS.md](../user-guide/AVAILABLE_TOOLS.md) for the authoritative, up-to-date list.
|
|
298
300
|
|
|
299
301
|
The `exposition` configuration controls which groups are active, enabling read-only deployments or full-access modes.
|
|
300
302
|
|
|
@@ -13,14 +13,14 @@ The `HandlerExporter` class allows you to register all ABAP ADT handlers on any
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npm install @
|
|
16
|
+
npm install @mcp-abap-adt/core
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Basic Usage
|
|
20
20
|
|
|
21
21
|
```typescript
|
|
22
22
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
23
|
-
import { HandlerExporter } from "@
|
|
23
|
+
import { HandlerExporter } from "@mcp-abap-adt/core/handlers";
|
|
24
24
|
import { createAbapConnection } from "@mcp-abap-adt/connection";
|
|
25
25
|
|
|
26
26
|
// Create your MCP server
|
|
@@ -138,7 +138,7 @@ for (const entry of entries) {
|
|
|
138
138
|
If you're using v2 server classes directly:
|
|
139
139
|
|
|
140
140
|
```typescript
|
|
141
|
-
import { StreamableHttpServer } from "@
|
|
141
|
+
import { StreamableHttpServer } from "@mcp-abap-adt/core/server/v2";
|
|
142
142
|
|
|
143
143
|
const exporter = new HandlerExporter();
|
|
144
144
|
const registry = exporter.createRegistry();
|
|
@@ -155,7 +155,7 @@ Example for cloud-llm-hub style integration:
|
|
|
155
155
|
```typescript
|
|
156
156
|
import cds from "@sap/cds";
|
|
157
157
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
158
|
-
import { HandlerExporter } from "@
|
|
158
|
+
import { HandlerExporter } from "@mcp-abap-adt/core";
|
|
159
159
|
import { createConnection } from "./connections/connectionFactory";
|
|
160
160
|
|
|
161
161
|
// Create MCP server instance
|
|
@@ -191,12 +191,12 @@ If you were using `mcp_abap_adt_server` directly:
|
|
|
191
191
|
|
|
192
192
|
```typescript
|
|
193
193
|
// Old way (still works via legacy import)
|
|
194
|
-
import { mcp_abap_adt_server } from "@
|
|
194
|
+
import { mcp_abap_adt_server } from "@mcp-abap-adt/core";
|
|
195
195
|
const server = new mcp_abap_adt_server({ connection });
|
|
196
196
|
await server.run();
|
|
197
197
|
|
|
198
198
|
// New way (recommended for embedding)
|
|
199
|
-
import { HandlerExporter } from "@
|
|
199
|
+
import { HandlerExporter } from "@mcp-abap-adt/core/handlers";
|
|
200
200
|
const exporter = new HandlerExporter();
|
|
201
201
|
exporter.registerOnServer(yourMcpServer, () => connection);
|
|
202
202
|
```
|
|
@@ -15,7 +15,7 @@ The default `mcp-abap-adt` command runs the v2 server with full transport suppor
|
|
|
15
15
|
### Handler Exporter (v1)
|
|
16
16
|
For embedding into existing servers (e.g., CAP/CDS applications):
|
|
17
17
|
```typescript
|
|
18
|
-
import { HandlerExporter } from '@
|
|
18
|
+
import { HandlerExporter } from '@mcp-abap-adt/core/handlers';
|
|
19
19
|
|
|
20
20
|
const exporter = new HandlerExporter({
|
|
21
21
|
includeReadOnly: true,
|
|
@@ -16,24 +16,33 @@ Each module now owns its description via a constant `TOOL_DEFINITION` structure
|
|
|
16
16
|
### 1. Handler Organization
|
|
17
17
|
|
|
18
18
|
Handlers are organized into categorized subdirectories under `src/handlers/`:
|
|
19
|
-
- `
|
|
19
|
+
- `behavior_definition/` - Behavior Definition handlers
|
|
20
|
+
- `behavior_implementation/` - Behavior Implementation handlers
|
|
20
21
|
- `class/` - Class handlers
|
|
21
22
|
- `common/` - Common handlers (activate, delete, check, lock, unlock, validate)
|
|
23
|
+
- `compact/` - Compact facade handlers
|
|
22
24
|
- `data_element/` - Data Element handlers
|
|
23
|
-
- `ddlx/` -
|
|
25
|
+
- `ddlx/` - DDLX (metadata extension) handlers
|
|
24
26
|
- `domain/` - Domain handlers
|
|
25
27
|
- `enhancement/` - Enhancement handlers
|
|
26
|
-
- `function/` - Function handlers
|
|
28
|
+
- `function/` - Function (function module) handlers
|
|
29
|
+
- `function_group/` - Function Group handlers
|
|
30
|
+
- `function_include/` - Function Include handlers
|
|
31
|
+
- `function_module/` - Function Module handlers
|
|
27
32
|
- `include/` - Include handlers
|
|
28
33
|
- `interface/` - Interface handlers
|
|
34
|
+
- `metadata_extension/` - Metadata Extension handlers
|
|
29
35
|
- `package/` - Package handlers
|
|
30
36
|
- `program/` - Program handlers
|
|
31
37
|
- `search/` - Search handlers
|
|
38
|
+
- `service_binding/` - Service Binding handlers
|
|
39
|
+
- `service_definition/` - Service Definition handlers
|
|
32
40
|
- `structure/` - Structure handlers
|
|
33
41
|
- `system/` - System handlers
|
|
34
42
|
- `table/` - Table handlers
|
|
35
43
|
- `transport/` - Transport handlers
|
|
36
|
-
- `
|
|
44
|
+
- `unit_test/` - ABAP Unit test handlers
|
|
45
|
+
- `view/` - View (CDS) handlers
|
|
37
46
|
|
|
38
47
|
This organization improves code navigation, reduces merge conflicts, and makes the codebase more maintainable.
|
|
39
48
|
|
|
@@ -28,7 +28,7 @@ Command-line arguments **always override** YAML values. This allows you to:
|
|
|
28
28
|
Example:
|
|
29
29
|
```bash
|
|
30
30
|
# Use config.yaml but override the port
|
|
31
|
-
mcp-abap-adt --conf=config.yaml --
|
|
31
|
+
mcp-abap-adt --conf=config.yaml --port=8080
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Configuration File Structure
|
|
@@ -66,9 +66,6 @@ http:
|
|
|
66
66
|
# When using 0.0.0.0, client must provide all connection headers - server won't use default destination
|
|
67
67
|
host: 127.0.0.1
|
|
68
68
|
json-response: false
|
|
69
|
-
allowed-origins: []
|
|
70
|
-
allowed-hosts: []
|
|
71
|
-
enable-dns-protection: false
|
|
72
69
|
|
|
73
70
|
# SSE (Server-Sent Events) transport options
|
|
74
71
|
sse:
|
|
@@ -76,9 +73,6 @@ sse:
|
|
|
76
73
|
# Host binding: 127.0.0.1 (default, localhost only, secure) or 0.0.0.0 (all interfaces, less secure)
|
|
77
74
|
# When using 0.0.0.0, client must provide all connection headers - server won't use default destination
|
|
78
75
|
host: 127.0.0.1
|
|
79
|
-
allowed-origins: []
|
|
80
|
-
allowed-hosts: []
|
|
81
|
-
enable-dns-protection: false
|
|
82
76
|
```
|
|
83
77
|
|
|
84
78
|
## Configuration Options
|
|
@@ -101,21 +95,15 @@ sse:
|
|
|
101
95
|
| Option | Type | Default | Description |
|
|
102
96
|
|--------|------|---------|-------------|
|
|
103
97
|
| `http.port` | number | `3000` | HTTP server port |
|
|
104
|
-
| `http.host` | string | `
|
|
98
|
+
| `http.host` | string | `127.0.0.1` | HTTP server host (`127.0.0.1`/`localhost` for local only, `0.0.0.0` for all interfaces) |
|
|
105
99
|
| `http.json-response` | boolean | `false` | Enable JSON response format |
|
|
106
|
-
| `http.allowed-origins` | array/string | `[]` | Allowed CORS origins (comma-separated string or array) |
|
|
107
|
-
| `http.allowed-hosts` | array/string | `[]` | Allowed hosts (comma-separated string or array) |
|
|
108
|
-
| `http.enable-dns-protection` | boolean | `false` | Enable DNS rebinding protection |
|
|
109
100
|
|
|
110
101
|
### SSE Options
|
|
111
102
|
|
|
112
103
|
| Option | Type | Default | Description |
|
|
113
104
|
|--------|------|---------|-------------|
|
|
114
105
|
| `sse.port` | number | `3001` | SSE server port |
|
|
115
|
-
| `sse.host` | string | `
|
|
116
|
-
| `sse.allowed-origins` | array/string | `[]` | Allowed CORS origins (comma-separated string or array) |
|
|
117
|
-
| `sse.allowed-hosts` | array/string | `[]` | Allowed hosts (comma-separated string or array) |
|
|
118
|
-
| `sse.enable-dns-protection` | boolean | `false` | Enable DNS rebinding protection |
|
|
106
|
+
| `sse.host` | string | `127.0.0.1` | SSE server host |
|
|
119
107
|
|
|
120
108
|
## Examples
|
|
121
109
|
|
|
@@ -145,15 +133,13 @@ Usage:
|
|
|
145
133
|
mcp-abap-adt --conf=config.yaml
|
|
146
134
|
```
|
|
147
135
|
|
|
148
|
-
### Example 3: SSE Mode with
|
|
136
|
+
### Example 3: SSE Mode with Custom Host and Port
|
|
149
137
|
|
|
150
138
|
```yaml
|
|
151
139
|
transport: sse
|
|
152
140
|
sse:
|
|
153
141
|
port: 3001
|
|
154
|
-
|
|
155
|
-
- http://localhost:3000
|
|
156
|
-
- http://localhost:5173
|
|
142
|
+
host: 127.0.0.1
|
|
157
143
|
```
|
|
158
144
|
|
|
159
145
|
Usage:
|
|
@@ -225,13 +211,11 @@ http:
|
|
|
225
211
|
port: 3000
|
|
226
212
|
```
|
|
227
213
|
|
|
228
|
-
### Test Config 4: sse-
|
|
214
|
+
### Test Config 4: sse-default.yaml
|
|
229
215
|
```yaml
|
|
230
216
|
transport: sse
|
|
231
217
|
sse:
|
|
232
218
|
port: 3001
|
|
233
|
-
allowed-origins:
|
|
234
|
-
- http://localhost:3000
|
|
235
219
|
```
|
|
236
220
|
|
|
237
221
|
Run tests with different configs:
|
|
@@ -239,7 +223,7 @@ Run tests with different configs:
|
|
|
239
223
|
mcp-abap-adt --conf=stdio-stdio.yaml
|
|
240
224
|
mcp-abap-adt --conf=stdio-env.yaml
|
|
241
225
|
mcp-abap-adt --conf=http-default.yaml
|
|
242
|
-
mcp-abap-adt --conf=sse-
|
|
226
|
+
mcp-abap-adt --conf=sse-default.yaml
|
|
243
227
|
```
|
|
244
228
|
|
|
245
229
|
## Benefits
|
|
@@ -12,7 +12,7 @@ Automatically creates GitHub releases when you push a version tag.
|
|
|
12
12
|
|
|
13
13
|
**What it does:**
|
|
14
14
|
1. Checks out code with submodules
|
|
15
|
-
2. Sets up Node.js
|
|
15
|
+
2. Sets up Node.js 22
|
|
16
16
|
3. Installs dependencies
|
|
17
17
|
4. Builds the project
|
|
18
18
|
5. Runs tests (non-blocking)
|
|
@@ -42,7 +42,7 @@ Runs continuous integration tests on every push and PR.
|
|
|
42
42
|
|
|
43
43
|
**What it does:**
|
|
44
44
|
1. Tests on multiple OS (Ubuntu, macOS, Windows)
|
|
45
|
-
2. Tests on multiple Node.js versions (
|
|
45
|
+
2. Tests on multiple Node.js versions (22, 25)
|
|
46
46
|
3. Builds and tests the project
|
|
47
47
|
4. Verifies package creation
|
|
48
48
|
5. Tests package installation
|
|
@@ -160,7 +160,7 @@ When reviewing code or documentation:
|
|
|
160
160
|
|
|
161
161
|
This submodule is used by the main `cloud-llm-hub` project:
|
|
162
162
|
|
|
163
|
-
- **Import path**: `@
|
|
163
|
+
- **Import path**: `@mcp-abap-adt/core`
|
|
164
164
|
- **Build output**: `dist/` directory
|
|
165
165
|
- **Usage**: Imported in `srv/mcp-proxy.ts` and `srv/mcp-manager.ts`
|
|
166
166
|
- **MCP Endpoints**: Exposed via CAP service at `/mcp/stream/http` and `/mcp/sse`
|
|
@@ -47,7 +47,7 @@ EOF
|
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
cd /home/okyslytsia/prj/mcp-abap-adt
|
|
50
|
-
npm run dev
|
|
50
|
+
npm run dev
|
|
51
51
|
# or
|
|
52
52
|
npm run dev:http
|
|
53
53
|
# or
|
|
@@ -105,7 +105,7 @@ cat > TRIAL.json << 'EOF'
|
|
|
105
105
|
EOF
|
|
106
106
|
|
|
107
107
|
# Start server from this directory
|
|
108
|
-
npm run dev
|
|
108
|
+
npm run dev
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
## Debug Mode:
|
|
@@ -113,7 +113,7 @@ npm run dev:stdio
|
|
|
113
113
|
To enable debug logs for auth-broker:
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
DEBUG_AUTH_LOG=true npm run dev
|
|
116
|
+
DEBUG_AUTH_LOG=true npm run dev
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
## Test Logging Switches
|
|
@@ -33,9 +33,9 @@ Cline reads MCP server configurations from:
|
|
|
33
33
|
|
|
34
34
|
If you installed via npm:
|
|
35
35
|
```bash
|
|
36
|
-
npm install -g @
|
|
36
|
+
npm install -g @mcp-abap-adt/core
|
|
37
37
|
# or
|
|
38
|
-
npx @
|
|
38
|
+
npx @mcp-abap-adt/core
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Use the simpler configurations below (no need to specify full paths).
|
|
@@ -61,7 +61,7 @@ If you cloned the repository and are developing locally, use the full path confi
|
|
|
61
61
|
"command": "npx",
|
|
62
62
|
"args": [
|
|
63
63
|
"-y",
|
|
64
|
-
"@
|
|
64
|
+
"@mcp-abap-adt/core",
|
|
65
65
|
"--transport=stdio",
|
|
66
66
|
"--env=/absolute/path/to/.env"
|
|
67
67
|
],
|
|
@@ -80,7 +80,7 @@ If you cloned the repository and are developing locally, use the full path confi
|
|
|
80
80
|
"command": "npx",
|
|
81
81
|
"args": [
|
|
82
82
|
"-y",
|
|
83
|
-
"@
|
|
83
|
+
"@mcp-abap-adt/core",
|
|
84
84
|
"--transport=stdio",
|
|
85
85
|
"--env=/Users/username/.env"
|
|
86
86
|
],
|
|
@@ -99,7 +99,7 @@ If you cloned the repository and are developing locally, use the full path confi
|
|
|
99
99
|
"command": "npx",
|
|
100
100
|
"args": [
|
|
101
101
|
"-y",
|
|
102
|
-
"@
|
|
102
|
+
"@mcp-abap-adt/core",
|
|
103
103
|
"--transport=stdio",
|
|
104
104
|
"--env=C:/Users/username/.env"
|
|
105
105
|
],
|
|
@@ -112,7 +112,7 @@ If you cloned the repository and are developing locally, use the full path confi
|
|
|
112
112
|
|
|
113
113
|
#### B. Using Global Installation
|
|
114
114
|
|
|
115
|
-
If you installed globally (`npm install -g @
|
|
115
|
+
If you installed globally (`npm install -g @mcp-abap-adt/core`):
|
|
116
116
|
|
|
117
117
|
**With .env file:**
|
|
118
118
|
```json
|
|
@@ -192,12 +192,12 @@ Choose one method:
|
|
|
192
192
|
|
|
193
193
|
**A. Using NPX** (recommended):
|
|
194
194
|
```bash
|
|
195
|
-
npx @
|
|
195
|
+
npx @mcp-abap-adt/core --transport=http --port=3000
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
**B. Using Global Install**:
|
|
199
199
|
```bash
|
|
200
|
-
mcp-abap-adt --transport=http --
|
|
200
|
+
mcp-abap-adt --transport=http --port=3000
|
|
201
201
|
```
|
|
202
202
|
|
|
203
203
|
**C. Using NPM Script** (local development):
|
|
@@ -258,12 +258,12 @@ Choose one method:
|
|
|
258
258
|
|
|
259
259
|
**A. Using NPX** (recommended):
|
|
260
260
|
```bash
|
|
261
|
-
npx @
|
|
261
|
+
npx @mcp-abap-adt/core --transport=sse --port=3001 --env=/path/to/.env
|
|
262
262
|
```
|
|
263
263
|
|
|
264
264
|
**B. Using Global Install**:
|
|
265
265
|
```bash
|
|
266
|
-
mcp-abap-adt --transport=sse --
|
|
266
|
+
mcp-abap-adt --transport=sse --port=3001 --env=/path/to/.env
|
|
267
267
|
```
|
|
268
268
|
|
|
269
269
|
**C. Using NPM Script** (local development):
|
|
@@ -418,18 +418,10 @@ You can run multiple instances with different SAP systems:
|
|
|
418
418
|
|
|
419
419
|
```bash
|
|
420
420
|
# HTTP
|
|
421
|
-
node ./bin/mcp-abap-adt.js --transport=http --
|
|
421
|
+
node ./bin/mcp-abap-adt.js --transport=http --port=8080 --host=0.0.0.0
|
|
422
422
|
|
|
423
423
|
# SSE
|
|
424
|
-
node ./bin/mcp-abap-adt.js --transport=sse --
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
### CORS Configuration
|
|
428
|
-
|
|
429
|
-
```bash
|
|
430
|
-
node ./bin/mcp-abap-adt.js --transport=http \
|
|
431
|
-
--http-allowed-origins=http://localhost:3000,https://example.com \
|
|
432
|
-
--http-enable-dns-protection
|
|
424
|
+
node ./bin/mcp-abap-adt.js --transport=sse --port=8081 --host=0.0.0.0
|
|
433
425
|
```
|
|
434
426
|
|
|
435
427
|
### Environment Variables
|