Atlas / MCP servers / fr0ster / @mcp-abap-adt/adt-clients

@mcp-abap-adt/adt-clientsCAUTION

mcp/fr0ster/mcp-abap-adt-clients

ADT clients for SAP ABAP systems - Read-only, CRUD, and Management operations

Verdict
CAUTION
Grade
B
Trust score
86 /100
Exposed tools
11 11r · 0w · 0d
Transport
—
License
LGPL-3.0
Stars
6
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://stand-with-ukraine.pp.ua)

TypeScript clients for SAP ABAP Development Tools (ADT).

Upgrading from 22.x? 23.0.0 makes this package interpret nothing: every member answers the document SAP sent unless you give it a reading when you build it, and judges nothing unless you pass analyse with the call. Every reading and verdict it used to apply is a strategy in @mcp-abap-adt/adt-strategies. The connection contract moved to @mcp-abap-adt/interfaces-adt-connection. docs/usage/MIGRATION-23.md has the replacing code for every removed behaviour. From 18.x? Read docs/usage/MIGRATION-19.md first: 19.0.0 is where members became one endpoint call each.

Features

  • ✅ Client API – simplified interface for common operations:
  • AdtClient – high-level CRUD API; one member, one ADT request
  • AdtExecutor – execution API via IExecutor contracts (class/program, with profiling)
  • AdtRuntimeClient – runtime operations (traces, logs, dumps, ATC check runs)
  • AbapDebugger, AmdpDebugger, MemorySnapshots – the ABAP and AMDP debuggers and memory snapshots, each on connections the caller opens
  • AdtClientsWS – realtime WebSocket facade for event-driven workflows
  • AdtAbapGitClient – standalone client for SAP-official ADT-integrated abapGit (/sap/bc/adt/abapgit/*); available on cloud and modern on-prem (ABAP Platform 2022+)
  • ✅ ABAP Unit test support – run and manage ABAP Unit tests (class and CDS view tests)
  • ✅ Stateful session management – maintains sap-adt-connection-id across operations
  • ✅ Lock registry – persistent .locks/active-locks.json with CLI tools for recovery
  • ✅ TypeScript-first – full type safety with comprehensive interfaces
  • ✅ **Response
Read from source at commit 62e81dc728faOBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add adt-strategies --env NODE_TLS_REJECT_UNAUTHORIZED=${NODE_TLS_REJECT_UNAUTHORIZED} --env SAP_AUTH_TYPE=${SAP_AUTH_TYPE} --env SAP_JWT_TOKEN=${SAP_JWT_TOKEN} --env SAP_PASSWORD=${SAP_PASSWORD} -- npx -y @mcp-abap-adt/[email protected]
claude-desktop
{
  "mcpServers": {
    "adt-strategies": {
      "command": "npx",
      "args": [
        "-y",
        "@mcp-abap-adt/[email protected]"
      ],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "${NODE_TLS_REJECT_UNAUTHORIZED}",
        "SAP_AUTH_TYPE": "${SAP_AUTH_TYPE}",
        "SAP_JWT_TOKEN": "${SAP_JWT_TOKEN}",
        "SAP_PASSWORD": "${SAP_PASSWORD}"
      }
    }
  }
}
03

Exposed tools (11)

11 read · 0 write · 0 destructive.

ToolRiskDescription
TEST_MCPreadworkflow field
ZCL_AC_LOAN_DEMOreadRunnable demo of the loan register
ZCL_AC_LOAN_ITEMreadOne book loan
ZCL_AC_LOAN_POLICY_STDreadStandard loan policy: 14 days, 5 per day late
ZCL_AC_LOAN_REGISTERreadLoan register: issue, take back, count open
ZIF_AC_LOAN_POLICYreadLoan policy: due dates and fines
ZMCreadd
ZTreadD
zac_shr_pkgreadTest
zok_testreadA & B
zpreadd
04

Trust audit

CAUTIONgrade B · trust 86/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (1 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (19)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
scripts/probe-domain-create-payload.ts
probe-domain-create-payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.hidden_file · CWE-1104
.locks/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.sessions/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs/development/roadmaps/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
src/__tests__/integration/runtime/debugger/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
src/__tests__/integration/runtime/feeds/.keep
.keep
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/__tests__/integration/connection/csrf.test.ts:127
console.log(`  x-csrf-token: ${describeToken(csrfToken)}`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/__tests__/integration/connection/csrf.test.ts:155
console.log(`  ${endpoint}: ${token ? describeToken(token) : 'FAILED'}`);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adt-strategies/scripts/copy-errata.js:8
const source = path.resolve(__dirname, '../../../docs/usage/ERRATA.md');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adt-strategies/src/__tests__/corpus.ts:11
const CORPUS = join(__dirname, '../../../../corpus/adt');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/adt-strategies/src/__tests__/transportTree.test.ts:16
join(__dirname, '../../../../src/__tests__/fixtures/transport', name),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/lib/functionGroupChildren.ts:18
import { fetchNodeStructure } from '../../src/core/shared/nodeStructure';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/lib/packageWalk.ts:20
import { fetchNodeStructure } from '../../src/core/shared/nodeStructure';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/unit/session/adtStubServer.ts:112
baseUrl: `http://127.0.0.1:${address.port}`,
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@mcp-abap-adt/interfaces-adt, @mcp-abap-adt/interfaces-adt-connection, @mcp-abap-adt/interfaces-network, @mcp-abap-adt/interfaces-utils, @mcp-abap-adt/logger, axios, fast-xml-parser, @biomejs/biome
Why it matters. 23 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/adt-strategies/package.json
@mcp-abap-adt/interfaces-adt, @mcp-abap-adt/interfaces-adt-connection, fast-xml-parser, @types/jest, @types/node, jest, ts-jest, typescript
Why it matters. 8 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
package-lock.json
package-lock.json
Why it matters. 1080244 bytes not read
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
src/__tests__/README.md:24
- `sessionConfig.ts` - Load configuration from `.env` and `test-config.yaml`
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.persistence · CWE-94, CWE-1427
docs/usage/RFC_CONNECTION.md:40
> **Note:** These variables must be set in the shell before running the application. They cannot be loaded from `.env` files because `dotenv` does not expand `$PATH`/`%PATH%` and does not modify the s
Why it matters. instructs the agent to persist itself in the user's environment

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 62e81dc728fafull audit observations/trust-audit/mcp-server/fr0ster__mcp-abap-adt-clients.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1162e81dc728faCAUTIONB86first audit
06

Questions

What is the @mcp-abap-adt/adt-clients MCP server?

ADT clients for SAP ABAP systems - Read-only, CRUD, and Management operations

What tools does @mcp-abap-adt/adt-clients expose?

11 in total: 11 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @mcp-abap-adt/adt-clients safe to connect to an agent?

With care. The audit graded it B (86/100) and found 19 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does @mcp-abap-adt/adt-clients need?

It reads NODE_TLS_REJECT_UNAUTHORIZED, SAP_AUTH_TYPE, SAP_JWT_TOKEN, SAP_PASSWORD, SAP_REFRESH_TOKEN, SAP_UAA_CLIENT_SECRET and UAA_CLIENT_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (62e81dc728fa), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement