abap-mcp 0.2.0 → 0.3.1

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.
@@ -0,0 +1,40 @@
1
+ {
2
+ "snapshotDate": "2026-06-10",
3
+ "source": "https://github.com/SAP/abap-atc-cr-cv-s4hc",
4
+ "note": "Curated map of common classic DDIC tables to their canonical released CDS view-entity successor in S/4HANA Cloud. Where SAP publishes a successor in the Cloudification repository it is used verbatim; the remainder are well-known public mappings. A table may have several successors (e.g. MARA spans I_Product*, MARC the plant-level views); only the primary, most commonly-substituted one is listed. Always confirm against the current released-API list in your target system.",
5
+ "successors": {
6
+ "MARA": "I_Product",
7
+ "MAKT": "I_ProductText",
8
+ "MARC": "I_ProductPlantBasic",
9
+ "MARD": "I_ProductStorageLocationBasic",
10
+ "MBEW": "I_ProductValuation",
11
+ "MVKE": "I_ProductSalesDelivery",
12
+ "KNA1": "I_Customer",
13
+ "KNB1": "I_CustomerCompany",
14
+ "KNVV": "I_CustomerSalesArea",
15
+ "LFA1": "I_Supplier",
16
+ "LFB1": "I_SupplierCompany",
17
+ "LFM1": "I_SupplierPurchasingOrg",
18
+ "VBAK": "I_SalesDocument",
19
+ "VBAP": "I_SalesDocumentItem",
20
+ "VBRK": "I_BillingDocumentBasic",
21
+ "VBRP": "I_BillingDocumentItemBasic",
22
+ "LIKP": "I_DeliveryDocument",
23
+ "LIPS": "I_DeliveryDocumentItem",
24
+ "EKKO": "I_PurchaseOrderAPI01",
25
+ "EKPO": "I_PurchaseOrderItemAPI01",
26
+ "EBAN": "I_PurchaseRequisitionItemAPI01",
27
+ "BUT000": "I_BusinessPartner",
28
+ "T001": "I_CompanyCode",
29
+ "T001W": "I_Plant",
30
+ "T001K": "I_ValuationArea",
31
+ "BKPF": "I_JournalEntry",
32
+ "BSEG": "I_OperationalAcctgDocItem",
33
+ "AUFK": "I_Order",
34
+ "CEPC": "I_ProfitCenter",
35
+ "CSKS": "I_CostCenter",
36
+ "SKA1": "I_GLAccountInChartOfAccounts",
37
+ "SKB1": "I_GLAccountInCompanyCode",
38
+ "TCURR": "I_ExchangeRateRawData"
39
+ }
40
+ }
package/dist/errors.js CHANGED
@@ -21,9 +21,15 @@ export function errorResult(err) {
21
21
  const e = err instanceof McpToolError
22
22
  ? err
23
23
  : new McpToolError("internal", err instanceof Error ? err.message : String(err));
24
+ // IMPORTANT: do NOT attach `structuredContent` here. Every tool declares an `outputSchema`
25
+ // describing its *success* shape, and the MCP SDK validates `structuredContent` against that
26
+ // schema even when `isError: true`. An error payload ({ error: … }) cannot satisfy a success
27
+ // schema, so strict clients (OpenClaw, the MCP inspector, the VSCode/ADT integrations) reject
28
+ // the whole result with `-32602` and the model never sees the real, actionable message —
29
+ // it just gives up and answers from memory. The spec permits an absent `structuredContent`
30
+ // on error results, so the human-readable `code: message` text carries the error instead.
24
31
  return {
25
32
  isError: true,
26
33
  content: [{ type: "text", text: `${e.code}: ${e.message}` }],
27
- structuredContent: { error: { code: e.code, message: e.message, details: e.details ?? null } },
28
34
  };
29
35
  }
package/dist/index.d.ts CHANGED
@@ -4,7 +4,9 @@ export { ALL_TOOLS } from "./abap.tools.js";
4
4
  export { runAbaplint, inferFilename, ABAP_VERSIONS } from "./abap/engine.js";
5
5
  export type { AbapSource, AbapVersion, Finding } from "./abap/engine.js";
6
6
  export { checkCloudReadiness } from "./abap/readiness.js";
7
- export type { ReadinessReport } from "./abap/readiness.js";
7
+ export type { ReadinessReport, ReleasedApiFinding } from "./abap/readiness.js";
8
+ export { lookupReleased, suggestSuccessor, RELEASED_API_SNAPSHOT } from "./abap/released.js";
9
+ export type { ReleasedLookup, ReleasedState } from "./abap/released.js";
8
10
  export { scaffoldRapBo, snakeToCamel } from "./abap/scaffold.js";
9
11
  export type { ScaffoldOptions, ScaffoldResult } from "./abap/scaffold.js";
10
12
  export { listRules, explainRule } from "./abap/rules.js";
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { buildServer, SERVER_NAME, SERVER_VERSION } from "./server.js";
3
3
  export { ALL_TOOLS } from "./abap.tools.js";
4
4
  export { runAbaplint, inferFilename, ABAP_VERSIONS } from "./abap/engine.js";
5
5
  export { checkCloudReadiness } from "./abap/readiness.js";
6
+ export { lookupReleased, suggestSuccessor, RELEASED_API_SNAPSHOT } from "./abap/released.js";
6
7
  export { scaffoldRapBo, snakeToCamel } from "./abap/scaffold.js";
7
8
  export { listRules, explainRule } from "./abap/rules.js";
8
9
  export { formatAbap } from "./abap/formatter.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abap-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "MCP server for SAP ABAP: offline static analysis (abaplint), ABAP Cloud / Clean Core readiness checks, and RAP scaffolding — no SAP system or credentials required.",
5
5
  "license": "MIT",
6
6
  "author": "Akshay Palimkar",
@@ -34,7 +34,7 @@
34
34
  "LICENSE"
35
35
  ],
36
36
  "scripts": {
37
- "build": "tsc -p tsconfig.json",
37
+ "build": "tsc -p tsconfig.json && node scripts/copy-data.mjs",
38
38
  "typecheck": "tsc -p tsconfig.json --noEmit",
39
39
  "test": "vitest run",
40
40
  "check": "npm run typecheck && npm run test && npm run build",