# io.github.fr0ster/mcp-abap-adt-compact-ro (npm · @mcp-abap-adt/compact-ro)

Read-only compact MCP server for SAP ABAP ADT: the compact tools that change nothing

- Trust score: 75/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `@mcp-abap-adt/compact-ro`: 75/100 (this document), [markdown](https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro.md), [page](https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro)

## Channel facts

- Registry: `npm`
- Package: `@mcp-abap-adt/compact-ro`
- Version: `20.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 99/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 44 of 172 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (AGPL-3.0-only).
  - Actively maintained (last published 1 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 57/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6509 tokens (~325/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.fr0ster/mcp-abap-adt-compact-ro server?

io.github.fr0ster/mcp-abap-adt-compact-ro runs locally as an npm package, launched with npx -y @mcp-abap-adt/compact-ro. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add fr0ster-mcp-abap-adt-compact-ro -- npx -y @mcp-abap-adt/compact-ro
```

### Cursor

```json
{
  "mcpServers": {
    "fr0ster-mcp-abap-adt-compact-ro": {
      "command": "npx",
      "args": [
        "-y",
        "@mcp-abap-adt/compact-ro"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "fr0ster-mcp-abap-adt-compact-ro": {
      "command": "npx",
      "args": [
        "-y",
        "@mcp-abap-adt/compact-ro"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add fr0ster-mcp-abap-adt-compact-ro -- npx -y @mcp-abap-adt/compact-ro
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fr0ster-mcp-abap-adt-compact-ro": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mcp-abap-adt/compact-ro"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add fr0ster-mcp-abap-adt-compact-ro --command npx --arg -y --arg @mcp-abap-adt/compact-ro
```

### Hermes

```yaml
mcp_servers:
  fr0ster-mcp-abap-adt-compact-ro:
    command: "npx"
    args: ["-y", "@mcp-abap-adt/compact-ro"]
```

### Netclaw

```json
{
  "McpServers": {
    "fr0ster-mcp-abap-adt-compact-ro": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@mcp-abap-adt/compact-ro"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add fr0ster-mcp-abap-adt-compact-ro -t stdio -c npx -a -y @mcp-abap-adt/compact-ro
```

### Other

```json
{
  "mcpServers": {
    "fr0ster-mcp-abap-adt-compact-ro": {
      "command": "npx",
      "args": [
        "-y",
        "@mcp-abap-adt/compact-ro"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 68, 0)

- [security regression] Stability: 0.00 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 19.2.0 → 20.0.0

## MCP tools (20)

### `HandlerGet` (~1939 tokens)

[read-only] Reads one part of the object named by object_type and its name parameter (class_name, program_name, ddl_name, table_name, …). part selects it: source (default) the source alone, in one request; metadata the ADT metadata document alone, in one request; urls (SERVICE_BINDING) the service URL, its $metadata and the browser preview, contents (PACKAGE) the objects the package holds, its walk read level by level in ADT batch envelopes; package_names lists several packages, read together, one entry per package in the order given. A source document answers { part: 'source', source } and a metadata document { part: 'metadata', metadata }, beside the object's name. Parts per type: PACKAGE metadata, contents; DOMAIN, DATA_ELEMENT, FUNCTION_GROUP metadata; LOCAL_TEST_CLASS, LOCAL_TYPES, LOCAL_DEFINITIONS, LOCAL_MACROS, TRANSPORT, UNIT_TEST, CDS_UNIT_TEST source; SERVICE_BINDING source, metadata, urls; every other type source, metadata. A part outside the type's list is answered with that list. Three parts read the repository by ADT address: object_structure(object_adt_type*, object_name*), node_structure(object_adt_type*, object_name*, node_id, with_short_descriptions; one node level; a package's blank answer is the empty listing with blank stating its two readings: an empty package, or an unknown package name) and virtual_folders(object_search_pattern, preselection, facet_order, with_versions, ignore_short_descriptions). Two parts read an activation run by its id, in one request each: activation_status(run_id*) answers { run_id, part, status, document }, the run's status (finished, error, failed, or its progress while it runs) and its status document as SAP answered it; activation_results(run_id*) answers { run_id, part, messages, document }, the messages the run produced and its results document as SAP answered it. Otherwise object_type required: PACKAGE(package_name*; part contents: package_name* or package_names*), DOMAIN(domain_name*), DATA_ELEMENT(data_elemen…

Input parameters:

- `behavior_definition_name` (string): Behavior definition name.
- `behavior_implementation_name` (string): Behavior implementation name.
- `class_name` (string): Class name.
- `data_element_name` (string): Data element name.
- `ddl_name` (string): DDL source name.
- `domain_name` (string): Domain name.
- `facet_order` (array): Facet order (virtual_folders).
- `function_group_name` (string): Function group name (FUNCTION_GROUP; FUNCTION_MODULE given as the module's name).
- `function_module_name` (string): Function module name: GROUP|MODULE, its function group first, or the module alone with function_group_name.
- `ignore_short_descriptions` (boolean): Leave out short descriptions (virtual_folders).
- `include_descriptions` (boolean): Include each member's description (part contents). The walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes.
- `interface_name` (string): Interface name.
- `max_results` (number): Maximum number of members listed per package (part contents).
- `metadata_extension_name` (string): Metadata extension name.
- `node_id` (string): Node id to expand (node_structure); the root when absent.
- `object_adt_type` (string): ADT type code of the object (object_structure) or of the parent node (node_structure).
- `object_name` (string): Object name (object_structure) or parent name (node_structure).
- `object_search_pattern` (string): Object name pattern (virtual_folders).
- `object_type` (string): ABAP object type for routed compact operation.
- `package_name` (string): Package name.
- `package_names` (array): Several package names (part contents), read together: one entry per package, in the order given, each { package_name, contents } or { package_name, error }.
- `part` (string): The part to read: source (the source alone), metadata (the ADT metadata document alone), urls (the service and preview URLs), contents (the objects a package holds); each object type answers the part…
- `preselection` (array): Facet preselections (virtual_folders).
- `program_name` (string): Program name.
- `response_format` (string): Response format for SERVICE_BINDING reads.
- `run_id` (string): Run id: a unit test run (UNIT_TEST, CDS_UNIT_TEST) or an activation run (parts activation_status, activation_results).
- `service_binding_name` (string): Service binding name.
- `service_definition_name` (string): Service definition name.
- `structure_name` (string): Structure name.
- `table_name` (string): Table name.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…
- `transport_number` (string): Transport request or task number (TRANSPORT). A request lists the entries of all its tasks; a task lists its own.
- `version` (string): Object version to read/check.
- `with_short_descriptions` (boolean): Include short descriptions (node_structure).
- `with_versions` (boolean): Include versions (virtual_folders).

### `HandlerSearch` (~298 tokens)

[read-only] Searches the ABAP repository for the objects whose name matches query, a name or a mask. Required: query*. Optional: object_type, max_results (default 100). Response: one object per line. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `max_results` (number): Maximum number of objects returned.
- `object_type` (string): ADT object type to restrict the search to.
- `query` (string, required): Object name or mask, with * as a wildcard.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…

### `HandlerWhereUsed` (~360 tokens)

[read-only] Lists where the object named by object_type and object_name is used — a class, interface, program, include, function group, function module (BAPI included), package, table, structure, domain, data element or CDS DDL source: the objects that use, call or reference it, with type and package. Required: object_type*, object_name*. Optional: function_group_name (FUNCTION_MODULE), max_results (default 100). Response: JSON. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `function_group_name` (string): Function group of the function module (FUNCTION_MODULE).
- `max_results` (number): Maximum number of referencing objects returned.
- `object_name` (string, required): Object name.
- `object_type` (string, required): Type of the object whose usages are listed.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…

### `HandlerGetData` (~331 tokens)

[read-only] Reads the rows of the table or CDS view named by object_name, or the rows sql_query selects: every column of object_name, or what sql_query selects with its columns, conditions and order. Required: object_name or sql_query. Optional: max_rows (default 100). Response: JSON. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `max_rows` (number): Maximum number of rows returned.
- `object_name` (string): Table or CDS view whose rows are read, all columns. Used when sql_query is absent.
- `sql_query` (string): ABAP SQL SELECT naming the columns, conditions and order to read.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…

### `HandlerValidate` (~430 tokens)

[read-only] Validates a new object named by object_type and object_name before it is created. object_type required: CLASS(object_name*, superclass), PROGRAM(object_name*) [onprem only], INTERFACE(object_name*), FUNCTION_GROUP(object_name*), FUNCTION_MODULE(object_name* as GROUP|MODULE), TABLE(object_name*), STRUCTURE(object_name*), DDL(object_name*), DOMAIN(object_name*), DATA_ELEMENT(object_name*), PACKAGE(object_name*, super_package), BEHAVIOR_DEFINITION(object_name*), BEHAVIOR_IMPLEMENTATION(object_name*), METADATA_EXTENSION(object_name*), SERVICE_BINDING(object_name*=service_binding_name*, service_definition_name*). Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `behavior_definition` (string): Optional behavior definition name, used when validating behavior implementation.
- `description` (string): Optional object description used during validation.
- `implementation_type` (string): Optional implementation type, used for behavior implementation validation.
- `object_name` (string, required): Required object name. For SERVICE_BINDING this is the service binding name; a function module is named GROUP|MODULE.
- `object_type` (string, required): Object type to validate before create. Supported: CLASS, PROGRAM, INTERFACE, FUNCTION_GROUP, FUNCTION_MODULE, TABLE, STRUCTURE, DDL, DOMAIN, DATA_ELEMENT, PACKAGE, BEHAVIOR_DEFINITION, BEHAVIOR_IMPLE…
- `package_name` (string): Optional package context for validation (especially for create scenarios).
- `root_entity` (string): Optional CDS root entity name, used for behavior-related validation.
- `service_binding_version` (string): Optional service binding version for SERVICE_BINDING.
- `service_definition_name` (string): Required when object_type=SERVICE_BINDING. Service definition paired with the binding.
- `super_package` (string): Super package of the package to validate (PACKAGE).
- `superclass` (string): Superclass of the class to validate (CLASS).

### `HandlerCheckRun` (~282 tokens)

[read-only] Runs a syntax check on the object named by object_type and object_name. object_type required: CLASS(object_name*), PROGRAM(object_name*) [onprem only], INTERFACE(object_name*), FUNCTION_GROUP(object_name*), FUNCTION_MODULE(object_name* as GROUP|MODULE), TABLE(object_name*), STRUCTURE(object_name*), DDL(object_name*), DOMAIN(object_name*), DATA_ELEMENT(object_name*), PACKAGE(object_name*), BEHAVIOR_DEFINITION(object_name*), METADATA_EXTENSION(object_name*). source_code checks unsaved source given in the call, for CLASS, STRUCTURE and DDL. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `object_name` (string, required): Object name. A function module is named GROUP|MODULE, its function group first.
- `object_type` (string, required): Object type. Supported: CLASS, PROGRAM, INTERFACE, FUNCTION_GROUP, FUNCTION_MODULE, TABLE, STRUCTURE, DDL, DOMAIN, DATA_ELEMENT, PACKAGE, BEHAVIOR_DEFINITION, METADATA_EXTENSION.
- `source_code` (string): Source to check instead of the saved one; nothing is saved. CLASS, STRUCTURE and DDL only.
- `version` (string): Version to syntax-check.

### `HandlerDeletionCheck` (~271 tokens)

[read-only] Asks SAP whether the object named by object_type and object_name can be deleted: sends the deletion check request for its type, and answers SAP's verdict as it came: deletable true with the object and SAP's message when it carries one, or SAP's refusal with its words. object_type and object_name required: PACKAGE, DOMAIN, DATA_ELEMENT, TABLE, STRUCTURE, DDL, SERVICE_DEFINITION, SERVICE_BINDING, CLASS, CDS_UNIT_TEST (its test class), PROGRAM [onprem only], INTERFACE, FUNCTION_GROUP, FUNCTION_MODULE (object_name GROUP|MODULE), BEHAVIOR_DEFINITION, BEHAVIOR_IMPLEMENTATION, METADATA_EXTENSION. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `object_name` (string, required): Object name. A function module is named GROUP|MODULE, its function group first.
- `object_type` (string, required): Object type. Supported: PACKAGE, DOMAIN, DATA_ELEMENT, TABLE, STRUCTURE, DDL, SERVICE_DEFINITION, SERVICE_BINDING, CLASS, CDS_UNIT_TEST, PROGRAM, INTERFACE, FUNCTION_GROUP, FUNCTION_MODULE, BEHAVIOR_…

### `HandlerUnitTestStatus` (~105 tokens)

[read-only] Reads the status of the ABAP Unit test run named by run_id. Required: run_id*. Optional: with_long_polling. Response: JSON. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `run_id` (string, required): Unit test run id.
- `with_long_polling` (boolean): Use long polling while waiting for completion.

### `HandlerUnitTestResult` (~181 tokens)

[read-only] Reads the result of the ABAP Unit test run named by run_id*, in one request (GET /sap/bc/adt/abapunit/results/{run_id}), and answers { success, run_id, run_result }: run_result is the result document SAP answered, parsed. Valid once the status is FINISHED; a finished run's result carries executionTime. Optional: with_navigation_uris, format (abapunit or junit). When run_id is given, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `format` (string): Result format.
- `run_id` (string, required): Unit test run id.
- `with_navigation_uris` (boolean): Include ADT navigation URIs in the result payload.

### `HandlerCdsUnitTestStatus` (~106 tokens)

[read-only] Reads the status of the CDS unit test run named by run_id. Required: run_id*. Optional: with_long_polling. Response: JSON. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `run_id` (string, required): Unit test run id.
- `with_long_polling` (boolean): Use long polling while waiting for completion.

### `HandlerCdsUnitTestResult` (~182 tokens)

[read-only] Reads the result of the CDS unit test run named by run_id*, in one request (GET /sap/bc/adt/abapunit/results/{run_id}), and answers { success, run_id, run_result }: run_result is the result document SAP answered, parsed. Valid once the status is FINISHED; a finished run's result carries executionTime. Optional: with_navigation_uris, format (abapunit or junit). When run_id is given, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `format` (string): Result format.
- `run_id` (string, required): Unit test run id.
- `with_navigation_uris` (boolean): Include ADT navigation URIs in the result payload.

### `HandlerProfileList` (~56 tokens)

[read-only] Lists the ABAP profiler trace files. Response: JSON. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

### `HandlerProfileView` (~445 tokens)

[read-only] Reads the ABAP profiler trace named by trace_id_or_uri in the view given (hit list, statements or database accesses), raw or analysed. Required: trace_id_or_uri*, view*(hitlist|statements|db_accesses). Optional: mode(raw|analyze, default raw), top(analyze only), with_system_events, id, with_details, auto_drill_down_threshold. Response: JSON. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `auto_drill_down_threshold` (number): Auto drill-down threshold.
- `id` (number): Optional statement/access id.
- `mode` (string): "raw" returns the parsed trace payload as-is (default). "analyze" returns a compact summary instead — totals plus the top-ranked entries — via the same trace view.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…
- `top` (number): Number of top-ranked rows to include when mode is "analyze". Default 10. Ignored for mode "raw".
- `trace_id_or_uri` (string, required): Profiler trace id or URI.
- `view` (string, required): Profiler trace view kind.
- `with_details` (boolean): Include detailed payload.
- `with_system_events` (boolean): Include system events in analysis.

### `HandlerDumpList` (~612 tokens)

[read-only] Reads one page of the runtime feed named by feed_type in one request, newest first: the ABAP short dumps (runtime errors) of the user, object_name or time range from–to given, or system messages or SAP Gateway errors. Optional: feed_type(dumps|system_messages|gateway_errors, default dumps), user, runtime_error, exception, object_name, package, component, top (1 to 100), from, to. Response: JSON { feed_type, count, entries, next_to }; each dump carries dump_id; next_to is the `to` of SAP's next link, present when more remain. The next link's page starts at the boundary second, inclusive: entries of that second may repeat; match them by dump_id. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `component` (string): Dumps whose application component contains this text, in any case.
- `exception` (string): Dumps whose exception class contains this text, in any case.
- `feed_type` (string): Which runtime feed to list. Default "dumps" (ABAP short dumps). "system_messages" and "gateway_errors" read the other two ADT runtime feeds through the same call.
- `from` (string): Start of time range (YYYYMMDDHHMMSS).
- `object_name` (string): Dumps whose terminated object name contains this text, in any case.
- `package` (string): Dumps whose object package contains this text, in any case.
- `runtime_error` (string): Dumps whose runtime error contains this text, in any case.
- `timeout` (integer): Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…
- `to` (string): End of time range (YYYYMMDDHHMMSS), inclusive: the page holds the entries up to that second; a previous answer's next_to is the next page's to, and that page starts at the boundary second, inclusive.
- `top` (number): Entries the page holds, 1 to 100 (SAP answers 100 when top is absent).
- `user` (string): Entries of this user.

### `HandlerDumpView` (~149 tokens)

[read-only] Reads the ABAP short dump (runtime error) named by dump_id in the view given. Required: dump_id* (id or URI). Optional: view(default|summary|formatted). Response: JSON. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `dump_id` (string, required): The dump's dump_id, or its URI.
- `view` (string): "summary" — runtime error, exception, terminated program, time, user and termination position; "default" — that summary and the parsed dump; "formatted" — the dump as formatted text.

### `HandlerServiceBindingListTypes` (~87 tokens)

[read-only] Lists the available service binding types. Optional: response_format(xml|json|plain). Response: XML/JSON/plain by response_format. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `response_format` (string): Response format for protocol types list.

### `HandlerServiceBindingValidate` (~158 tokens)

[read-only] Validates a new service binding named by service_binding_name for the service definition named by service_definition_name, before it is created. Required: service_binding_name*, service_definition_name*. Optional: service_binding_version, package_name, description. Response: JSON. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

Input parameters:

- `description` (string): Binding description.
- `package_name` (string): Target package name.
- `service_binding_name` (string, required): Service binding name to validate.
- `service_binding_version` (string): Service binding version.
- `service_definition_name` (string, required): Service definition name to pair with binding.

### `HandlerLeftoverSessionList` (~102 tokens)

[read-only] Lists the SAP sessions of this server's destination an ended server process left open (it was killed before logging them off): handle, role (built or debugger), destination, user, when recorded. Read from the session records alone. Only sessions of ended processes are listed. A server starting while exactly one built session of its destination is left is born on it; with several, all stay listed and untaken. Runs outside batch mode.

### `HandlerLeftoverSessionLogoff` (~72 tokens)

[read-only] Logs off a leftover SAP session (any role), releasing every lock it holds; only the logoff is sent, credential-free. Its record is deleted afterwards. Runs outside batch mode.

Input parameters:

- `handle` (string, required): The handle of a leftover session, as the list answers it.

### `HandlerBatch` (~343 tokens)

[read-only] action 'begin': Starts batch mode on this server. In batch mode each call of a tool marked recordable is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header). action 'end': Sends the recorded calls in one envelope with the credentials in force and ends batch mode. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it. action 'answers' (with number or numbers): Answers the calls of the last executed batch by number: for each number asked, the tool's answer, built from the call's parts of SAP's response when the number is first read and kept for later reads; the numbers asked are processed in parallel. Takes one number or a list of numbers; an unknown number answers as unknown.

Input parameters:

- `action` (string, required): begin: switch into batch mode; end: send the recorded calls and leave batch mode; answers: read the last batch's answers by number (with number or numbers).
- `number` (integer): answers only: one batch number to read (an integer of at least 1); give this or numbers, not both.
- `numbers` (array): answers only: several batch numbers to read, answered in the order given; give this or number, not both.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro#diagnostics

## Score history

- 2026-11-05: 75
- 2026-11-04: 74
- 2026-11-03: 74
- 2026-11-02: 73
- 2026-11-01: 73
- 2026-10-31: 72
- 2026-10-30: 72
- 2026-10-29: 71
- 2026-10-28: 71
- 2026-10-27: 70
- 2026-10-26: 70
- 2026-10-25: 69
- 2026-10-24: 69
- 2026-10-23: 69
- 2026-10-22: 68
- 2026-10-21: 68

## Common questions

### What is the io.github.fr0ster/mcp-abap-adt-compact-ro server?

io.github.fr0ster/mcp-abap-adt-compact-ro is listed in the public MCP registry as io.github.fr0ster/mcp-abap-adt-compact-ro. Read-only compact MCP server for SAP ABAP ADT: the compact tools that change nothing. This page covers its npm package (@mcp-abap-adt/compact-ro).

### Is the io.github.fr0ster/mcp-abap-adt-compact-ro server safe to use?

io.github.fr0ster/mcp-abap-adt-compact-ro scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.fr0ster/mcp-abap-adt-compact-ro server expose?

io.github.fr0ster/mcp-abap-adt-compact-ro exposes 20 tools: HandlerGet, HandlerSearch, HandlerWhereUsed, HandlerGetData, HandlerValidate, and 15 more. Their descriptions and schemas cost roughly 6,509 tokens of context every time the server is loaded.

### Is the io.github.fr0ster/mcp-abap-adt-compact-ro server still maintained?

io.github.fr0ster/mcp-abap-adt-compact-ro is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.fr0ster/mcp-abap-adt-compact-ro server under?

io.github.fr0ster/mcp-abap-adt-compact-ro declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@mcp-abap-adt/compact-ro
- Socket report: https://socket.dev/npm/package/@mcp-abap-adt/compact-ro
- Repository: https://github.com/fr0ster/mcp-abap-adt
- Changelog RSS feed: https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro.xml
- Changelog JSON feed: https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro.json
- HTML version of this page: https://verifymcp.io/servers/fr0ster-mcp-abap-adt-compact-ro/mcp-abap-adt-compact-ro
