@mcp-abap-adt/core 6.11.2 → 7.0.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.
Files changed (26) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +6 -5
  3. package/dist/handlers/include/readonly/handleGetInclude.d.ts +1 -1
  4. package/dist/handlers/include/readonly/handleGetInclude.js +1 -1
  5. package/dist/handlers/include/readonly/handleGetInclude.js.map +1 -1
  6. package/dist/handlers/program/readonly/handleReadProgram.d.ts +1 -1
  7. package/dist/handlers/program/readonly/handleReadProgram.js +1 -1
  8. package/dist/handlers/program/readonly/handleReadProgram.js.map +1 -1
  9. package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.d.ts.map +1 -1
  10. package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.js +0 -5
  11. package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.js.map +1 -1
  12. package/dist/server/EmbeddableMcpServer.d.ts +7 -6
  13. package/dist/server/EmbeddableMcpServer.d.ts.map +1 -1
  14. package/dist/server/EmbeddableMcpServer.js +3 -2
  15. package/dist/server/EmbeddableMcpServer.js.map +1 -1
  16. package/docs/architecture/TOOLS_ARCHITECTURE.md +1 -2
  17. package/docs/development/roadmaps/HANDLER_BUILD_ERRORS_ROADMAP.md +2 -3
  18. package/docs/development/roadmaps/TEST_REFACTORING_ROADMAP.md +1 -4
  19. package/docs/user-guide/AVAILABLE_TOOLS.md +5 -18
  20. package/docs/user-guide/AVAILABLE_TOOLS_COMPACT.md +1 -1
  21. package/docs/user-guide/AVAILABLE_TOOLS_HIGH.md +1 -1
  22. package/docs/user-guide/AVAILABLE_TOOLS_LEGACY.md +5 -20
  23. package/docs/user-guide/AVAILABLE_TOOLS_LOW.md +1 -1
  24. package/docs/user-guide/AVAILABLE_TOOLS_READONLY.md +4 -17
  25. package/docs/user-guide/HANDLERS_MANAGEMENT.md +7 -5
  26. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [7.0.0] - 2026-05-30
6
+
7
+ ### Changed
8
+ - **BREAKING: `EmbeddableMcpServer` now applies `ReadVsGetDedupStrategy` by default.** Previously the embeddable server defaulted to `NoDedupStrategy`, so exposing `readonly` + `high` together surfaced both `Read<X>` and `Get<X>` for the same operation (e.g. `ReadProgram` + `GetProgram`), leaving tool selection up to the client. Embedders (e.g. cloud-llm-hub) now get the same single-tool-per-operation view as the standalone launcher. Consumers that relied on both variants being exposed must opt out by passing `readOnlyDedupStrategy: new NoDedupStrategy()`. No code-level API change — the difference is the set of tools exposed to clients.
9
+
10
+ ## [6.11.3] - 2026-05-30
11
+
12
+ ### Removed
13
+ - **`GetProgFullCode` removed as a redundant read path.** A program or function group with includes can already be read through one canonical path — `ReadProgram` / `ReadFunctionGroup` (main) → `GetIncludesList` → `GetInclude` per include — and an explicit `GetInclude` is required anyway (includes can live outside any single object's tree). Two overlapping strategies made LLM and RAG-based tool selection non-deterministic. The piecemeal path covers function groups as well (`GetIncludesList` accepts `FUGR`), so no capability is lost. (#100)
14
+
15
+ ### Changed
16
+ - **Sharpened source-read tool descriptions for clearer LLM / semantic tool selection.** `ReadProgram` now reads as "Read a MAIN ABAP program … NOT for includes — use `GetInclude`" (dropping the misleading "Create, Update" lead-in on a read-only tool), and `GetInclude` now reads as "Read ANY single ABAP include source by name, from anywhere in the repository … the correct tool for include names (PROG/I)". `GetIncludesList` is unchanged. (#100)
17
+
5
18
  ## [6.11.2] - 2026-05-29
6
19
 
7
20
  ### Fixed
package/README.md CHANGED
@@ -88,20 +88,21 @@ Embed MCP server into existing applications (e.g., SAP CAP/CDS, Express):
88
88
  ```typescript
89
89
  import {
90
90
  EmbeddableMcpServer,
91
- ReadVsGetDedupStrategy, // optional: hide Read<X> when Get<X> also exposed
91
+ NoDedupStrategy, // optional: expose both Read<X> and Get<X>
92
92
  } from '@mcp-abap-adt/core/server';
93
93
 
94
94
  const server = new EmbeddableMcpServer({
95
95
  connection, // Your AbapConnection instance
96
96
  logger, // Optional logger
97
97
  exposition: ['readonly', 'high'], // Handler groups to expose
98
- // Optional; default: no dedup existing consumers see no change.
99
- readOnlyDedupStrategy: new ReadVsGetDedupStrategy(),
98
+ // Default hides Read<X> when Get<X> is exposed (ReadVsGetDedupStrategy).
99
+ // Pass NoDedupStrategy to expose both variants instead.
100
+ // readOnlyDedupStrategy: new NoDedupStrategy(),
100
101
  });
101
102
  await server.connect(transport);
102
103
  ```
103
104
 
104
- See [Handlers Management → EmbeddableMcpServer dedup strategies](docs/user-guide/HANDLERS_MANAGEMENT.md#embeddablemcpserver-dedup-strategies) for opt-in dedup of readonly tools against high/low/compact, including how to plug a custom `IReadOnlyDedupStrategy` for role-based rules.
105
+ See [Handlers Management → EmbeddableMcpServer dedup strategies](docs/user-guide/HANDLERS_MANAGEMENT.md#embeddablemcpserver-dedup-strategies) for how readonly tools are deduped against high/low/compact, how to opt out with `NoDedupStrategy`, and how to plug a custom `IReadOnlyDedupStrategy` for role-based rules.
105
106
 
106
107
  ## Quick Start
107
108
 
@@ -134,7 +135,7 @@ See [Handlers Management → EmbeddableMcpServer dedup strategies](docs/user-gui
134
135
  Key examples of high-value workflows and tools:
135
136
 
136
137
  - **Repository and impact analysis**: `GetWhereUsed`, `DescribeByList`, `GetObjectStructure`, `GetObjectInfo`, `SearchObject`, `GetPackageTree`, `GetPackageContents`
137
- - **Code and semantic introspection**: `GetAbapAST`, `GetAbapSemanticAnalysis`, `GetIncludesList`, `GetProgFullCode`
138
+ - **Code and semantic introspection**: `GetAbapAST`, `GetAbapSemanticAnalysis`, `GetIncludesList`
138
139
  - **RAP development**: `CreateBehaviorDefinition`, `UpdateBehaviorDefinition`, `CreateBehaviorImplementation`, `UpdateBehaviorImplementation`, `CreateServiceDefinition`, `UpdateServiceDefinition`, `CreateMetadataExtension`, `UpdateMetadataExtension`
139
140
  - **CDS/View development**: `CreateView`, `UpdateView`, `GetView`, `DeleteView`
140
141
  - **ABAP OO CRUD**: `CreateClass`, `UpdateClass`, `GetClass`, `DeleteClass`, `CreateInterface`, `UpdateInterface`, `GetInterface`, `DeleteInterface`
@@ -3,7 +3,7 @@ import type { HandlerContext } from '../../../lib/handlers/interfaces';
3
3
  export declare const TOOL_DEFINITION: {
4
4
  readonly name: "GetInclude";
5
5
  readonly available_in: readonly ["onprem", "cloud", "legacy"];
6
- readonly description: "[read-only] Retrieve source code of a specific ABAP include file.";
6
+ readonly description: "[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.";
7
7
  readonly inputSchema: {
8
8
  readonly include_name: z.ZodString;
9
9
  };
@@ -44,7 +44,7 @@ const utils_1 = require("../../../lib/utils");
44
44
  exports.TOOL_DEFINITION = {
45
45
  name: 'GetInclude',
46
46
  available_in: ['onprem', 'cloud', 'legacy'],
47
- description: '[read-only] Retrieve source code of a specific ABAP include file.',
47
+ description: '[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.',
48
48
  inputSchema: {
49
49
  include_name: z.string().describe('Name of the ABAP Include'),
50
50
  },
@@ -1 +1 @@
1
- {"version":3,"file":"handleGetInclude.js","sourceRoot":"","sources":["../../../../src/handlers/include/readonly/handleGetInclude.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,4CAuCC;AA/DD,uCAAyB;AAEzB,8CAK4B;AAE5B,yCAAyC;AACzC,0FAA0F;AAC1F,8CAA8C;AAC9C,6DAA6D;AAEhD,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU;IACpD,WAAW,EACT,mEAAmE;IACrE,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC9D;CACO,CAAC;AAEJ,KAAK,UAAU,gBAAgB,CAAC,OAAuB,EAAE,IAAS;IACvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,GAAG,GAAG,iCAAiC,IAAA,2BAAmB,EAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAClG,MAAM,EAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAyB,EAC9C,UAAU,EACV,GAAG,EACH,KAAK,EACL,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,2BAA2B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;iBAChB;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CACX,yBAAyB,IAAI,EAAE,YAAY,IAAI,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"handleGetInclude.js","sourceRoot":"","sources":["../../../../src/handlers/include/readonly/handleGetInclude.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,4CAuCC;AA/DD,uCAAyB;AAEzB,8CAK4B;AAE5B,yCAAyC;AACzC,0FAA0F;AAC1F,8CAA8C;AAC9C,6DAA6D;AAEhD,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU;IACpD,WAAW,EACT,2OAA2O;IAC7O,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC9D;CACO,CAAC;AAEJ,KAAK,UAAU,gBAAgB,CAAC,OAAuB,EAAE,IAAS;IACvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,GAAG,GAAG,iCAAiC,IAAA,2BAAmB,EAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAClG,MAAM,EAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAyB,EAC9C,UAAU,EACV,GAAG,EACH,KAAK,EACL,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,2BAA2B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;iBAChB;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CACX,yBAAyB,IAAI,EAAE,YAAY,IAAI,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -2,7 +2,7 @@ import type { HandlerContext } from '../../../lib/handlers/interfaces';
2
2
  export declare const TOOL_DEFINITION: {
3
3
  readonly name: "ReadProgram";
4
4
  readonly available_in: readonly ["onprem", "legacy"];
5
- readonly description: "Operation: Read, Create, Update. Subject: Program. Will be useful for reading, creating, or updating program. [read-only] Read ABAP MAIN PROGRAM (report) source code and metadata. Works ONLY for main programs (adtcore type PROG/P); include names (PROG/I) and other object types are rejected with error \"invalid_object_type\". Answers: \"show program code\", \"display report source\", \"view program X\", \"get program source\". Returns source code, package, responsible, description.";
5
+ readonly description: "[read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error \"invalid_object_type\". Answers: \"show program code\", \"display report source\", \"view program X\", \"get program source\". Returns source code, package, responsible, description.";
6
6
  readonly inputSchema: {
7
7
  readonly type: "object";
8
8
  readonly properties: {
@@ -7,7 +7,7 @@ const utils_1 = require("../../../lib/utils");
7
7
  exports.TOOL_DEFINITION = {
8
8
  name: 'ReadProgram',
9
9
  available_in: ['onprem', 'legacy'],
10
- description: 'Operation: Read, Create, Update. Subject: Program. Will be useful for reading, creating, or updating program. [read-only] Read ABAP MAIN PROGRAM (report) source code and metadata. Works ONLY for main programs (adtcore type PROG/P); include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.',
10
+ description: '[read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.',
11
11
  inputSchema: {
12
12
  type: 'object',
13
13
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"handleReadProgram.js","sourceRoot":"","sources":["../../../../src/handlers/program/readonly/handleReadProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handleReadProgram.js","sourceRoot":"","sources":["../../../../src/handlers/program/readonly/handleReadProgram.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadOnlyHandlersGroup.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"AAwGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,SAAS,CAAC,SAAS,SAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;gBAGrD,OAAO,EAAE,cAAc,EACvB,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,EACpD,aAAa,GAAE,sBAA8C;IAO/D;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE;IAM7B,OAAO,CAAC,aAAa;CAgHtB"}
1
+ {"version":3,"file":"ReadOnlyHandlersGroup.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"AAoGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,SAAS,CAAC,SAAS,SAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;gBAGrD,OAAO,EAAE,cAAc,EACvB,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,EACpD,aAAa,GAAE,sBAA8C;IAO/D;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE;IAM7B,OAAO,CAAC,aAAa;CA4GtB"}
@@ -17,7 +17,6 @@ const handleReadInterface_1 = require("../../../handlers/interface/readonly/hand
17
17
  const handleReadMetadataExtension_1 = require("../../../handlers/metadata_extension/readonly/handleReadMetadataExtension");
18
18
  const handleGetPackageContents_1 = require("../../../handlers/package/readonly/handleGetPackageContents");
19
19
  const handleReadPackage_1 = require("../../../handlers/package/readonly/handleReadPackage");
20
- const handleGetProgFullCode_1 = require("../../../handlers/program/readonly/handleGetProgFullCode");
21
20
  const handleReadProgram_1 = require("../../../handlers/program/readonly/handleReadProgram");
22
21
  const handleReadServiceBinding_1 = require("../../../handlers/service_binding/readonly/handleReadServiceBinding");
23
22
  const handleReadServiceDefinition_1 = require("../../../handlers/service_definition/readonly/handleReadServiceDefinition");
@@ -93,10 +92,6 @@ class ReadOnlyHandlersGroup extends BaseHandlerGroup_js_1.BaseHandlerGroup {
93
92
  toolDefinition: handleListTransports_1.TOOL_DEFINITION,
94
93
  handler: (args) => (0, handleListTransports_1.handleListTransports)(this.context, args),
95
94
  },
96
- {
97
- toolDefinition: handleGetProgFullCode_1.TOOL_DEFINITION,
98
- handler: (args) => (0, handleGetProgFullCode_1.handleGetProgFullCode)(this.context, args),
99
- },
100
95
  // Read object source + metadata handlers
101
96
  {
102
97
  toolDefinition: handleReadClass_1.TOOL_DEFINITION,
@@ -1 +1 @@
1
- {"version":3,"file":"ReadOnlyHandlersGroup.js","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReadOnlyHandlersGroup.js","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { AbapConnection } from '@mcp-abap-adt/connection';
2
2
  import type { Logger } from '@mcp-abap-adt/logger';
3
- import type { IReadOnlyDedupStrategy } from '../lib/handlers/groups/strategies/index.js';
3
+ import { type IReadOnlyDedupStrategy } from '../lib/handlers/groups/strategies/index.js';
4
4
  import type { IHandlersRegistry, SapEnvironment } from '../lib/handlers/interfaces.js';
5
5
  import type { IAdtSystemContext } from '../lib/systemContext.js';
6
6
  import { BaseMcpServer } from './BaseMcpServer.js';
@@ -54,11 +54,12 @@ export interface EmbeddableMcpServerOptions {
54
54
  * Optional strategy that decides which readonly handlers to dedup (hide)
55
55
  * when overriding groups (high / low / compact) are also exposed.
56
56
  *
57
- * Default: no dedup readonly handlers are exposed verbatim, preserving
58
- * prior behavior for existing consumers. Pass `new ReadVsGetDedupStrategy()`
59
- * (exported from this package) to hide `Read<X>` when a corresponding
60
- * `Get<X>` is contributed by another group, or supply a custom
61
- * implementation for bespoke role-based rules.
57
+ * Default: `ReadVsGetDedupStrategy`hides a readonly `Read<X>` handler
58
+ * when a corresponding `Get<X>` is contributed by another group, so a single
59
+ * deterministic tool is exposed per operation (matching the standalone
60
+ * launcher). Pass `new NoDedupStrategy()` (exported from this package) to
61
+ * expose readonly handlers verbatim, or supply a custom implementation for
62
+ * bespoke role-based rules.
62
63
  */
63
64
  readOnlyDedupStrategy?: IReadOnlyDedupStrategy;
64
65
  }
@@ -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,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,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,CACT,UAAU,GACV,MAAM,GACN,KAAK,GACL,SAAS,GACT,QAAQ,GACR,QAAQ,CACX,EAAE,CAAC;IAEJ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAExC,OAAO,EAAE,0BAA0B;IA0B/C;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAIxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA6D9B"}
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,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,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,CACT,UAAU,GACV,MAAM,GACN,KAAK,GACL,SAAS,GACT,QAAQ,GACR,QAAQ,CACX,EAAE,CAAC;IAEJ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3C;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAExC,OAAO,EAAE,0BAA0B;IA0B/C;;;OAGG;cACa,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAIxD;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA6D9B"}
@@ -8,6 +8,7 @@ const LowLevelHandlersGroup_js_1 = require("../lib/handlers/groups/LowLevelHandl
8
8
  const ReadOnlyHandlersGroup_js_1 = require("../lib/handlers/groups/ReadOnlyHandlersGroup.js");
9
9
  const SearchHandlersGroup_js_1 = require("../lib/handlers/groups/SearchHandlersGroup.js");
10
10
  const SystemHandlersGroup_js_1 = require("../lib/handlers/groups/SystemHandlersGroup.js");
11
+ const index_js_1 = require("../lib/handlers/groups/strategies/index.js");
11
12
  const CompositeHandlersRegistry_js_1 = require("../lib/handlers/registry/CompositeHandlersRegistry.js");
12
13
  const systemContext_js_1 = require("../lib/systemContext.js");
13
14
  const BaseMcpServer_js_1 = require("./BaseMcpServer.js");
@@ -64,7 +65,7 @@ class EmbeddableMcpServer extends BaseMcpServer_js_1.BaseMcpServer {
64
65
  /**
65
66
  * Creates default handlers registry based on exposition levels
66
67
  */
67
- createDefaultRegistry(exposition, logger, readOnlyDedupStrategy) {
68
+ createDefaultRegistry(exposition, logger, readOnlyDedupStrategy = new index_js_1.ReadVsGetDedupStrategy()) {
68
69
  // Dummy context - not actually used because BaseMcpServer.registerHandlers()
69
70
  // creates wrapper lambdas that call getConnection() for fresh context
70
71
  const dummyContext = {
@@ -72,7 +73,7 @@ class EmbeddableMcpServer extends BaseMcpServer_js_1.BaseMcpServer {
72
73
  logger: logger ?? handlerLogger_js_1.noopLogger,
73
74
  };
74
75
  // Build non-readonly groups first so their tool names can feed the
75
- // readonly dedup strategy (when one is provided by the consumer).
76
+ // readonly dedup strategy (defaults to ReadVsGetDedupStrategy).
76
77
  const overridingGroups = [];
77
78
  if (exposition.includes('high')) {
78
79
  overridingGroups.push(new HighLevelHandlersGroup_js_1.HighLevelHandlersGroup(dummyContext));
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddableMcpServer.js","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmbeddableMcpServer.js","sourceRoot":"","sources":["../../src/server/EmbeddableMcpServer.ts"],"names":[],"mappings":"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"}
@@ -145,7 +145,6 @@ import { TOOL_DEFINITION as GetClass_Tool } from '../handlers/class/handleGetCla
145
145
  const DYNAMIC_IMPORT_TOOLS: ToolDefinition[] = [
146
146
  GetObjectsByType_Tool,
147
147
  GetObjectsList_Tool,
148
- GetProgFullCode_Tool,
149
148
  GetObjectNodeFromCache_Tool,
150
149
  DescribeByList_Tool
151
150
  ];
@@ -206,7 +205,7 @@ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
206
205
  ```
207
206
 
208
207
  **Note:** Most handlers are statically imported, but some use dynamic imports to avoid circular dependencies or improve startup performance:
209
- - `GetObjectsList`, `GetObjectsByType`, `GetProgFullCode`, `GetObjectNodeFromCache`, `DescribeByList` (marked in `DYNAMIC_IMPORT_TOOLS`)
208
+ - `GetObjectsList`, `GetObjectsByType`, `GetObjectNodeFromCache`, `DescribeByList` (marked in `DYNAMIC_IMPORT_TOOLS`)
210
209
  - `GetAdtTypes`, `GetObjectStructure` (also use dynamic import but are in main `ALL_TOOLS` array)
211
210
 
212
211
  ## Benefits
@@ -86,7 +86,7 @@ In `mcp_handlers.ts` lines 784-802, dynamic imports call handlers with only 1 ar
86
86
  return await handleXxx(args); // Missing connection argument
87
87
  ```
88
88
 
89
- ## Affected Files (73 total)
89
+ ## Affected Files (72 total)
90
90
 
91
91
  ### behavior_definition/low/ (3 files)
92
92
  - `handleLockBehaviorDefinition.ts`
@@ -147,14 +147,13 @@ return await handleXxx(args); // Missing connection argument
147
147
  - `handleUnlockPackage.ts`
148
148
  - `handleValidatePackage.ts`
149
149
 
150
- ### program/ (7 files)
150
+ ### program/ (6 files)
151
151
  - `low/handleActivateProgram.ts`
152
152
  - `low/handleCreateProgram.ts`
153
153
  - `low/handleDeleteProgram.ts`
154
154
  - `low/handleUnlockProgram.ts`
155
155
  - `low/handleUpdateProgram.ts`
156
156
  - `low/handleValidateProgram.ts`
157
- - `readonly/handleGetProgFullCode.ts`
158
157
 
159
158
  ### structure/ (8 files)
160
159
  - `high/handleCreateStructure.ts`
@@ -233,7 +233,6 @@ interface HandlerContext {
233
233
  - [x] `handleGetFunction`
234
234
  - [x] `handleGetFunctionGroup`
235
235
  - [x] `handleGetObjectInfo`
236
- - [x] `handleGetProgFullCode`
237
236
  - [x] `handleGetServiceDefinition`
238
237
  - [x] `handleGetTransport`
239
238
  - [x] `handleGetAbapSystemSymbols`
@@ -415,7 +414,6 @@ describe('Class High-Level Handlers Integration', () => {
415
414
  - Search: `handleSearchObject`, `handleGetObjectsList`, `handleGetObjectsByType`
416
415
  - Transport: `handleGetTransport`
417
416
  - Include: `handleGetIncludesList`, `handleGetInclude`
418
- - Program: `handleGetProgFullCode`
419
417
  - ServiceDefinition: `handleGetServiceDefinition`
420
418
  - **BehaviorDefinition Handlers (7/7)** ✅:
421
419
  - High-level: `handleCreateBehaviorDefinition`
@@ -432,10 +430,9 @@ describe('Class High-Level Handlers Integration', () => {
432
430
  - **Interface Handlers (10/10)** ✅:
433
431
  - High-level: `handleCreateInterface`, `handleUpdateInterface`
434
432
  - Low-level: `handleCreateInterface`, `handleUpdateInterface`, `handleDeleteInterface`, `handleLockInterface`, `handleUnlockInterface`, `handleActivateInterface`, `handleCheckInterface`, `handleValidateInterface`
435
- - **Program Handlers (11/11)** ✅:
433
+ - **Program Handlers (10/10)** ✅:
436
434
  - High-level: `handleCreateProgram`, `handleUpdateProgram`
437
435
  - Low-level: `handleCreateProgram`, `handleUpdateProgram`, `handleDeleteProgram`, `handleLockProgram`, `handleUnlockProgram`, `handleActivateProgram`, `handleCheckProgram`, `handleValidateProgram`
438
- - Read-only: `handleGetProgFullCode`
439
436
  - **Structure Handlers (10/10)** ✅:
440
437
  - High-level: `handleCreateStructure`, `handleUpdateStructure`
441
438
  - Low-level: `handleCreateStructure`, `handleUpdateStructure`, `handleDeleteStructure`, `handleLockStructure`, `handleUnlockStructure`, `handleActivateStructure`, `handleCheckStructure`, `handleValidateStructure`
@@ -4,8 +4,8 @@ Generated from code in `src/handlers/**` (not from docs).
4
4
 
5
5
  ## Summary
6
6
 
7
- - Total tools: 307
8
- - Read-only tools: 56
7
+ - Total tools: 306
8
+ - Read-only tools: 55
9
9
  - High-level tools: 127
10
10
  - Low-level tools: 124
11
11
 
@@ -51,7 +51,6 @@ Generated from code in `src/handlers/**` (not from docs).
51
51
  - [GetPackageContents](#getpackagecontents-read-only-package)
52
52
  - [ReadPackage](#readpackage-read-only-package)
53
53
  - [Program](#read-only-program)
54
- - [GetProgFullCode](#getprogfullcode-read-only-program)
55
54
  - [ReadProgram](#readprogram-read-only-program)
56
55
  - [Search](#read-only-search)
57
56
  - [GetObjectsByType](#getobjectsbytype-read-only-search)
@@ -548,7 +547,7 @@ Generated from code in `src/handlers/**` (not from docs).
548
547
 
549
548
  <a id="getinclude-read-only-include"></a>
550
549
  #### GetInclude (Read-Only / Include)
551
- **Description:** [read-only] Retrieve source code of a specific ABAP include file.
550
+ **Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
552
551
 
553
552
  **Source:** `src/handlers/include/readonly/handleGetInclude.ts`
554
553
 
@@ -630,21 +629,9 @@ Generated from code in `src/handlers/**` (not from docs).
630
629
  <a id="read-only-program"></a>
631
630
  ### Read-Only / Program
632
631
 
633
- <a id="getprogfullcode-read-only-program"></a>
634
- #### GetProgFullCode (Read-Only / Program)
635
- **Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
636
-
637
- **Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
638
-
639
- **Parameters:**
640
- - `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
641
- - `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
642
-
643
- ---
644
-
645
632
  <a id="readprogram-read-only-program"></a>
646
633
  #### ReadProgram (Read-Only / Program)
647
- **Description:** Operation: Read, Create, Update. Subject: Program. Will be useful for reading, creating, or updating program. [read-only] Read ABAP program (report) source code and metadata. Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
634
+ **Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
648
635
 
649
636
  **Source:** `src/handlers/program/readonly/handleReadProgram.ts`
650
637
 
@@ -4948,4 +4935,4 @@ Generated from code in `src/handlers/**` (not from docs).
4948
4935
 
4949
4936
  ---
4950
4937
 
4951
- *Last updated: 2026-05-28*
4938
+ *Last updated: 2026-05-30*
@@ -550,4 +550,4 @@ Preferred dedicated compact tools and minimal payloads:
550
550
 
551
551
  ---
552
552
 
553
- *Last updated: 2026-05-28*
553
+ *Last updated: 2026-05-30*
@@ -2049,4 +2049,4 @@ Generated from code in `src/handlers/**` (not from docs).
2049
2049
 
2050
2050
  ---
2051
2051
 
2052
- *Last updated: 2026-05-28*
2052
+ *Last updated: 2026-05-30*
@@ -5,8 +5,8 @@ Generated from code in `src/handlers/**` (not from docs).
5
5
  Tools available on legacy SAP systems (BASIS < 7.50).
6
6
  Legacy systems support a subset of tools — primarily Class, Interface, View, Program, Function Group/Module, Package (read/update/delete), Include, Unit Test, and common utilities.
7
7
 
8
- - Total tools: 135
9
- - Read-Only: 12
8
+ - Total tools: 134
9
+ - Read-Only: 11
10
10
  - High-Level: 62
11
11
  - Low-Level: 61
12
12
 
@@ -28,7 +28,6 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
28
28
  - [GetPackageContents](#getpackagecontents-read-only-package)
29
29
  - [ReadPackage](#readpackage-read-only-package)
30
30
  - [Program](#read-only-program)
31
- - [GetProgFullCode](#getprogfullcode-read-only-program)
32
31
  - [ReadProgram](#readprogram-read-only-program)
33
32
  - [System](#read-only-system)
34
33
  - [SearchSource](#searchsource-read-only-system)
@@ -240,7 +239,7 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
240
239
 
241
240
  <a id="getinclude-read-only-include"></a>
242
241
  #### GetInclude (Read-Only / Include)
243
- **Description:** [read-only] Retrieve source code of a specific ABAP include file.
242
+ **Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
244
243
 
245
244
  **Source:** `src/handlers/include/readonly/handleGetInclude.ts`
246
245
 
@@ -317,23 +316,9 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
317
316
  <a id="read-only-program"></a>
318
317
  ### Read-Only / Program
319
318
 
320
- <a id="getprogfullcode-read-only-program"></a>
321
- #### GetProgFullCode (Read-Only / Program)
322
- **Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
323
-
324
- **Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
325
-
326
- **Available in:** `onprem`, `legacy`
327
-
328
- **Parameters:**
329
- - `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
330
- - `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
331
-
332
- ---
333
-
334
319
  <a id="readprogram-read-only-program"></a>
335
320
  #### ReadProgram (Read-Only / Program)
336
- **Description:** Operation: Read, Create, Update. Subject: Program. Will be useful for reading, creating, or updating program. [read-only] Read ABAP program (report) source code and metadata. Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
321
+ **Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
337
322
 
338
323
  **Source:** `src/handlers/program/readonly/handleReadProgram.ts`
339
324
 
@@ -2410,4 +2395,4 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
2410
2395
 
2411
2396
  ---
2412
2397
 
2413
- *Last updated: 2026-05-28*
2398
+ *Last updated: 2026-05-30*
@@ -1992,4 +1992,4 @@ Generated from code in `src/handlers/**` (not from docs).
1992
1992
 
1993
1993
  ---
1994
1994
 
1995
- *Last updated: 2026-05-28*
1995
+ *Last updated: 2026-05-30*
@@ -3,7 +3,7 @@
3
3
  Generated from code in `src/handlers/**` (not from docs).
4
4
 
5
5
  - Level: Read-Only
6
- - Total tools: 56
6
+ - Total tools: 55
7
7
 
8
8
  ## Navigation
9
9
 
@@ -37,7 +37,6 @@ Generated from code in `src/handlers/**` (not from docs).
37
37
  - [GetPackageContents](#getpackagecontents-read-only-package)
38
38
  - [ReadPackage](#readpackage-read-only-package)
39
39
  - [Program](#read-only-program)
40
- - [GetProgFullCode](#getprogfullcode-read-only-program)
41
40
  - [ReadProgram](#readprogram-read-only-program)
42
41
  - [Search](#read-only-search)
43
42
  - [GetObjectsByType](#getobjectsbytype-read-only-search)
@@ -240,7 +239,7 @@ Generated from code in `src/handlers/**` (not from docs).
240
239
 
241
240
  <a id="getinclude-read-only-include"></a>
242
241
  #### GetInclude (Read-Only / Include)
243
- **Description:** [read-only] Retrieve source code of a specific ABAP include file.
242
+ **Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
244
243
 
245
244
  **Source:** `src/handlers/include/readonly/handleGetInclude.ts`
246
245
 
@@ -322,21 +321,9 @@ Generated from code in `src/handlers/**` (not from docs).
322
321
  <a id="read-only-program"></a>
323
322
  ### Read-Only / Program
324
323
 
325
- <a id="getprogfullcode-read-only-program"></a>
326
- #### GetProgFullCode (Read-Only / Program)
327
- **Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
328
-
329
- **Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
330
-
331
- **Parameters:**
332
- - `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
333
- - `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
334
-
335
- ---
336
-
337
324
  <a id="readprogram-read-only-program"></a>
338
325
  #### ReadProgram (Read-Only / Program)
339
- **Description:** Operation: Read, Create, Update. Subject: Program. Will be useful for reading, creating, or updating program. [read-only] Read ABAP program (report) source code and metadata. Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
326
+ **Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
340
327
 
341
328
  **Source:** `src/handlers/program/readonly/handleReadProgram.ts`
342
329
 
@@ -913,4 +900,4 @@ Generated from code in `src/handlers/**` (not from docs).
913
900
 
914
901
  ---
915
902
 
916
- *Last updated: 2026-05-28*
903
+ *Last updated: 2026-05-30*
@@ -109,7 +109,7 @@ Valid combinations: `[readonly]`, `[readonly, high]`, `[readonly, low]`, `[high]
109
109
 
110
110
  When both `readonly` and `high` are exposed, `Read<X>` readonly handlers duplicate the corresponding `Get<X>` from the high-level group (e.g. `ReadFunctionModule` vs `GetFunctionModule`). The launcher hides the readonly `Read<X>` variants in this case so that only one tool per operation is visible to the client.
111
111
 
112
- Embedder consumers of `EmbeddableMcpServer` keep the previous behavior (both variants exposed) unless they opt in by passing a `readOnlyDedupStrategy`. See [EmbeddableMcpServer dedup strategies](#embeddablemcpserver-dedup-strategies) below.
112
+ `EmbeddableMcpServer` applies the same dedup by default, so embedders see one tool per operation just like the launcher. Consumers that need both variants can opt out by passing `new NoDedupStrategy()` as `readOnlyDedupStrategy`. See [EmbeddableMcpServer dedup strategies](#embeddablemcpserver-dedup-strategies) below.
113
113
 
114
114
  ### Config File
115
115
 
@@ -280,7 +280,9 @@ import {
280
280
  const server = new EmbeddableMcpServer({
281
281
  connection,
282
282
  exposition: ['readonly', 'high'],
283
- // Opt in to deduphide ReadFunctionModule when GetFunctionModule is exposed, etc.
283
+ // Default already applies ReadVsGetDedupStrategyhides ReadFunctionModule
284
+ // when GetFunctionModule is exposed, etc. Pass it explicitly to be explicit,
285
+ // or pass `new NoDedupStrategy()` to expose both variants.
284
286
  readOnlyDedupStrategy: new ReadVsGetDedupStrategy(),
285
287
  });
286
288
  ```
@@ -289,8 +291,8 @@ const server = new EmbeddableMcpServer({
289
291
 
290
292
  | Strategy | Behavior |
291
293
  |---|---|
292
- | `NoDedupStrategy` (default) | Never excludes anything — readonly group is exposed as-is. |
293
- | `ReadVsGetDedupStrategy` | Hides a `Read<X>` entry when a corresponding `Get<X>` is contributed by another group. |
294
+ | `NoDedupStrategy` | Never excludes anything — readonly group is exposed as-is (opt-out). |
295
+ | `ReadVsGetDedupStrategy` (default) | Hides a `Read<X>` entry when a corresponding `Get<X>` is contributed by another group. |
294
296
 
295
297
  **Custom strategies**: implement `IReadOnlyDedupStrategy` for role-based or domain-specific rules:
296
298
 
@@ -311,4 +313,4 @@ class RoleAwareDedup implements IReadOnlyDedupStrategy {
311
313
  }
312
314
  ```
313
315
 
314
- The default (no dedup) preserves behavior for existing consumers upgrading the package does not change exposed tool sets unless the consumer explicitly passes a strategy.
316
+ The default (`ReadVsGetDedupStrategy`) gives embedders the same single-tool-per-operation view as the launcher. Consumers that relied on both `Read<X>` and `Get<X>` being exposed must pass `new NoDedupStrategy()` to keep that behavior.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/core",
3
3
  "mcpName": "io.github.fr0ster/mcp-abap-adt",
4
- "version": "6.11.2",
4
+ "version": "7.0.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {