Skip to main content
Glama
Coaspe

sap-abap-mcp

by Coaspe

SAP ABAP MCP

npm version npm downloads

Connect your AI assistant to an ADT-enabled SAP system to read ABAP, make scoped changes and inspect actual check results.

SAP ABAP MCP demo

Quick start

  1. Install Node.js 22/24 and connect to your company VPN.

  2. Run npx -y @coaspe/sap-abap-mcp@2.2.0 onboard (npx.cmd on Windows).

  3. Verify and save your SAP connection, register your host, then restart the app and verify an actual SAP system read.

Host

Setup command

Claude Code

npx -y @coaspe/sap-abap-mcp@2.2.0 onboard

Codex

npx -y @coaspe/sap-abap-mcp@2.2.0 onboard

VS Code

npx -y @coaspe/sap-abap-mcp@2.2.0 register DEV100 --client vscode --apply

Cursor

npx -y @coaspe/sap-abap-mcp@2.2.0 register DEV100 --client cursor --apply

Gemini CLI

npx -y @coaspe/sap-abap-mcp@2.2.0 register DEV100 --client gemini --apply

Claude Desktop

npx -y @coaspe/sap-abap-mcp@2.2.0 register DEV100 --client claude-desktop --apply

Version 2.2.0 includes company CA files, six-host registration and Windows SAP Logon import. Omit --apply to preview a registration; existing entries are preserved and existing settings files are backed up. Claude Desktop MCPB users should avoid a duplicate registration. On Windows replace npx with npx.cmd.

CA profiles use file format version 3 and need 2.2.0 or later. Existing npm registrations pin their package version: restart alone does not update a 2.1.0 registration. Use registration doctor and reviewed repair to update an existing registration to 2.2.0 before using a CA profile.

See setup details, including Linux environment-only credentials and registration recovery.

2.1.0 fixes noninteractive startup, native macOS credential storage and registration recovery. Windows DPAPI explicitly loads its native security module even when Node inherits a PowerShell 7 module path. Bundled npm/npx Windows launchers are resolved without a shell while preserving custom wrappers. This release also reduces the runtime package. Patched vendor bytes are preserved across Windows and Unix checkouts. Existing five gateways still reach 120 capabilities.

Related MCP server: dassian-adt

Fixes in 2.2.0

Repeated source patches use the same current-source view, preserve literal $ sequences and activate after unlock. Transport release supports ADT background runs; the release also improves RAP response recovery, V4 unpublish errors, old open-transport discovery, CTS-key object assignment, Dictionary checks and top-level package creation. See the eight fixes and validation limits.

These paths have local automated coverage. Live B4D write/release acceptance has not been established by this release. Older npm 2.1.0 still has the reported source-patch limitations; upgrading the package and its pinned host registration is required to use the fixes.

One existing-object change

Select the existing sap-change-object prompt, with the configured systemId, exact Z program/class as target, and desired behavior in goal. It reuses source, semantic/public API, dependency, quality and transport features.

Production/read-only policy, package restrictions, transport requirements and exact-source checks remain enforced. In 2.2.0, source writes recheck the same current-source view under lock, without an explicit inactive probe. A changed current version stops the write. Requested activation follows successful unlock and is skipped on syntax errors. Uncertain multi-object writes stop with saved/uncertain/unattempted identities; there is no automatic rollback or atomic-transaction claim. Inspect state before retrying. Zero tests, unsupported checks and partial findings cannot establish completion.

For a read-only evaluation, keep readOnly: true and expose only search, describe and invoke_read gateways in the host. Do not execute write, activation, Unit, ATC, debugger or profiling operations during that evaluation. See workflow prompts and T1–T5 criteria.

Verified environments and limits

Scope

Evidence and limit

Clean npm tarball, macOS arm64, Node 24

Eight launch/profile combinations, Unicode/spaces, help, invalid commands and shutdown passed on the reliability candidate

macOS Keychain

Actual throwaway legacy-item/UTF-8/9,000-byte storage, renewal and deletion passed

Windows read-only field procedure

Owner reports all supplied steps passed without candidate source changes; sanitized operation records were not supplied

Windows DPAPI / npx.cmd automation

Windows CI passed: native storage/module-shadow regression, bundled launchers and eight installed-tarball protocol cases

Native Desktop MCPB / host restart

Standalone bundle checks and an owner's overall field report remain distinct from retained app-level evidence

Current 2.x live-SAP acceptance

not verified by retained operation-level records; owner-reported read-only completion is recorded separately

Historical live SAP / model comparison

2026-08-05 results are historical; no identical-model T1–T5 completion rate or product ranking is established

Candidate measurements reduced compressed npm size from 26.29 to 13.33 MB and installed dependency bytes from 118.89 to 91.81 MB. Three warm protocol sessions measured 346–351 to 223–239 ms. Cold install was 12.92 to 16.06 seconds; no cold speed improvement is claimed. See exact snapshots and limits.

If setup fails

Symptom

Next action

MCP closes immediately

Keep serve explicit, especially on 2.0.1; verify Node on the host PATH

SETUP_REQUIRED

Complete local setup and reconnect; this state is not an accepted SAP installation

Removed Node/cache or old registered version

Run registration doctor and reviewed repair/update

Certificate untrusted / expired / hostname mismatch

Keep verification enabled; use the company CA PEM file or ask the administrator to fix the certificate/URL. See TLS trust

SAP URL unknown

On Windows use SAP Logon import to find candidate URLs, then check ADT and confirm the endpoint with your administrator

SAP authentication/authorization failure

Renew locally or ask the administrator for ADT permission; avoid blind repeated logins

Inactive conflict / uncertain write

Read current active/inactive state and reconcile with its owner before resuming

Reference and release status

Normal clients should omit both --api-version and --toolsets.

Privacy Policy

PRIVACY.md: no default remote telemetry. Credentials remain in OS-protected storage. Feedback exports are voluntary; public adopter names and quotes require separate explicit permission. Downloads and automated tests do not establish active users, task success or independent adoption.

Available Tools

5 tools
sap.capability.describeDescribe SAP CapabilityB
Read-onlyIdempotent

Get exact input schemas and hashes: name or names (up to 10).

NameRequiredDescriptionDefault
nameNo
namesNo
includeOutputSchemaNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds that the return is 'exact input schemas and hashes', which is useful behavioral context, but says nothing about error handling for unknown names or how the hash should be used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no filler and the verb/object front-loaded. The telegraphic ': name or names (up to 10)' phrasing is efficient, though slightly clipped for a first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with annotations covering safety and no output schema, the description is serviceable but thin: it never explains what a 'hash' is for, when the described schema should be fetched, or how the result feeds into the invoke_* siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does clarify the name-or-names alternation and the 10-item cap, but completely omits includeOutputSchema, which materially changes the response and is the one parameter an agent would most likely mis-set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('exact input schemas and hashes') tied to SAP capabilities, so the agent knows this is a schema-discovery tool. It implicitly separates itself from the invoke_* siblings, but never explicitly names them or states the relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: nothing says this should be called before sap.capability.invoke_read/write/destructive to learn the required inputs, nor any exclusion against sap.capability.search. The intended workflow is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap.capability.invoke_destructiveInvoke Destructive SAP CapabilityC
Destructive

Invoke a destructive capability with its described schemaHash and arguments.

NameRequiredDescriptionDefault
nameYes
argumentsNo
schemaHashYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds one genuinely useful behavioral fact – that the invocation is bound to a 'described' schemaHash – but says nothing about irreversibility, argument validation, or what happens if the hash does not match.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler and the key requirement front-loaded, which is the right shape for a dispatch-style tool. It is efficient rather than wasteful, though its brevity leaves real questions unanswered given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world dispatcher with no output schema, nested argument objects and 0% schema coverage, the definition is insufficient. An agent cannot tell how to obtain a valid schemaHash, how arguments are validated, or what a destructive result looks like, and no prior-step workflow is described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, so the description must carry the burden and largely does not. It mentions schemaHash and arguments by name but gives no meaning for either (origin of the hash, validation against the described capability, free-form argument shape), and it omits the required 'name' parameter entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (invoke) and a scoped resource (a destructive capability), which lets an agent separate it from the read/write siblings at a glance. It is clear but thin: it never explains what a 'capability' is or that the target is resolved by name, so the purpose is understood only at the level of the title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose invoke_destructive over invoke_write or invoke_read, and no prerequisite stated even though the schemaHash clearly implies a prior describe call. The only hint of routing is the word 'destructive' in the name, which the sibling names already convey.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap.capability.invoke_readInvoke Read SAP CapabilityC
Read-onlyIdempotent

Invoke a read capability with its described schemaHash and arguments.

NameRequiredDescriptionDefault
nameYes
argumentsNo
schemaHashYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond the schema: no error behavior, no hash-mismatch semantics, no note that the capability is dispatched by name from an open-world catalog.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the invocation and its two key inputs lead the sentence. It is efficient, though its brevity comes at the cost of specification rather than being a model of tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a generic dispatcher for an open-world capability catalog with no output schema and zero parameter documentation, so the description carries a heavy burden. It omits how to discover valid 'name' values, how to obtain the required 64-hex schemaHash, and what failure modes exist, leaving an agent unable to call it reliably without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters (two required), and the description only names 'schemaHash' and 'arguments' without explaining format, origin, or how the arguments object must match the target capability's schema. The phrase 'described schemaHash' hints at provenance but does not compensate for the total absence of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('invoke a read capability'), and the 'read' qualifier separates it from sibling tools invoke_write and invoke_destructive without the agent needing to open those schemas. However, it never explains what a 'capability' is in this system, leaving the resource concept abstract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of the alternative siblings (search, describe, invoke_write). The word 'described' weakly implies the schemaHash must first be obtained elsewhere, likely via sap.capability.describe, but this prerequisite is never stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap.capability.invoke_writeInvoke Write SAP CapabilityC

Invoke a write capability with its described schemaHash and arguments.

NameRequiredDescriptionDefault
nameYes
argumentsNo
schemaHashYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is partly carried by structured data. The description adds nothing beyond that: it does not say whether the write is reversible, whether it requires prior describe/search to obtain a valid schemaHash, or how it differs behaviorally from the destructive sibling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is structurally clean. However, it is under-specified rather than concise by design, leaving no room for the routing or parameter guidance the tool needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent, open-world write tool with a nested arguments object, 0% parameter documentation, and no output schema, the description is too thin. It does not explain how to obtain the schemaHash, what happens on mismatch, or how it relates to the destructive variant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema gives no prose for any of the three parameters. The description mentions schemaHash and arguments but omits the required 'name' parameter entirely and offers no format, sourcing, or validation guidance (e.g., that schemaHash must be a 64-char hex digest obtained from describe).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb (invoke) and scope (write capability) with the two things it needs, but 'capability' is a meta-resource and the description never distinguishes this from the sibling sap.capability.invoke_destructive, which is the boundary an agent most needs to see. Purpose is inferable but not sharp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative routing is given, despite three closely related siblings (invoke_read, invoke_destructive, describe). The agent is left to guess whether a given capability should go through invoke_write or invoke_destructive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap.capability.searchSearch SAP CapabilitiesB
Read-onlyIdempotent

Find capabilities; browse categories if keyword search misses.

NameRequiredDescriptionDefault
nameNo
riskNo
limitNo
queryNo
cursorNo
categoryNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered structurally. The description adds the useful behavioral detail that there are two lookup modes (keyword vs. category browse), but says nothing about pagination, result limits, or what the returned capability records contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded clause pair with no filler; the primary action precedes the fallback. Brevity here borders on under-specification given the six undocumented parameters, but the sentence itself is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters at zero schema coverage, no output schema, and an enum param whose meaning is never explained, an agent cannot reliably construct a call — limit/cursor pagination semantics and the risk filter are entirely absent. The description does not compensate for the structural gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description carries the full burden. It only gestures at two of them ('keyword search' maps to query, 'categories' maps to category) and leaves name, risk (an enum with read/write/destructive), limit, and cursor completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find capabilities') and implies a discovery-only role via keyword browsing, which distinguishes it in spirit from the invoke_* siblings. It never names those siblings or explicitly says it does not execute capabilities, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one fallback rule: 'browse categories if keyword search misses,' which implies when to use the category parameter. There is no guidance on when to search vs. call sap.capability.describe, and no mention of exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev2.0.1
    • Changedsap.capability.describe2 fields changed
      • addedInput schema / properties / names
        Added value: +{
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "name"
        -]
  2. 125 tool updatesv1.7.0
    • Removedsap.artifact.mermaid.create
    • Removedsap.artifact.mermaid.detect
    • Removedsap.artifact.mermaid.validate
    • Removedsap.artifact.test_document.create
    • Addedsap.capability.describe
    • Addedsap.capability.invoke_destructive
    • Addedsap.capability.invoke_read
    • Addedsap.capability.invoke_write
    • Addedsap.capability.search
    • Removedsap.classic.read
    • Removedsap.classic.write
    • Removedsap.data.export
    • Removedsap.data.query
    • Removedsap.ddic.read
    • Removedsap.ddic.update
    • Removedsap.debug.breakpoint.remove
    • Removedsap.debug.breakpoint.set
    • Removedsap.debug.evaluate
    • Removedsap.debug.session.inspect
    • Removedsap.debug.session.start
    • Removedsap.debug.session.stop
    • Removedsap.debug.stack
    • Removedsap.debug.status
    • Removedsap.debug.step
    • Removedsap.debug.variables
    • Removedsap.execution.execute
    • Removedsap.execution.health
    • Removedsap.execution.preview
    • Removedsap.git.branch.switch
    • Removedsap.git.check
    • Removedsap.git.create
    • Removedsap.git.inspect
    • Removedsap.git.list
    • Removedsap.git.pull
    • Removedsap.git.push
    • Removedsap.git.stage
    • Removedsap.git.unlink
    • Removedsap.ops.watch.history
    • Removedsap.ops.watch.start
    • Removedsap.ops.watch.status
    • Removedsap.ops.watch.stop
    • Removedsap.ops.watch.task.add
    • Removedsap.ops.watch.task.disable
    • Removedsap.ops.watch.task.enable
    • Removedsap.ops.watch.task.list
    • Removedsap.ops.watch.task.remove
    • Removedsap.ops.watch.task.update
    • Removedsap.ops.watch.trigger
    • Removedsap.ops.watch.watchlist.read
    • Removedsap.quality.atc.cached
    • Removedsap.quality.atc.documentation
    • Removedsap.quality.atc.run
    • Removedsap.quality.test_include.create
    • Removedsap.quality.unit_test
    • Removedsap.rap.availability
    • Removedsap.rap.binding.inspect
    • Removedsap.rap.binding.publish
    • Removedsap.rap.binding.unpublish
    • Removedsap.rap.defaults
    • Removedsap.rap.generate
    • Removedsap.rap.preview
    • Removedsap.rap.schema
    • Removedsap.rap.validate
    • Removedsap.refactor.execute
    • Removedsap.refactor.preview
    • Removedsap.repository.compare
    • Removedsap.repository.create
    • Removedsap.repository.delete.execute
    • Removedsap.repository.delete.preview
    • Removedsap.repository.dependency_graph
    • Removedsap.repository.inspect
    • Removedsap.repository.resolve
    • Removedsap.repository.search
    • Removedsap.repository.where_used
    • Removedsap.runtime.dump.inspect
    • Removedsap.runtime.dump.list
    • Removedsap.runtime.feed.read
    • Removedsap.runtime.trace.configuration
    • Removedsap.runtime.trace.hit_list
    • Removedsap.runtime.trace.inspect
    • Removedsap.runtime.trace.list
    • Removedsap.runtime.trace.statements
    • Removedsap.semantic.complete
    • Removedsap.semantic.components
    • Removedsap.semantic.definition
    • Removedsap.semantic.documentation
    • Removedsap.semantic.format_preview
    • Removedsap.semantic.hierarchy
    • Removedsap.semantic.quick_fixes
    • Removedsap.source.activate
    • Removedsap.source.diagnose
    • Removedsap.source.export
    • Removedsap.source.patch
    • Removedsap.source.read
    • Removedsap.source.read_batch
    • Removedsap.source.search
    • Removedsap.system.capabilities
    • Removedsap.system.discovery
    • Removedsap.system.discovery.export
    • Removedsap.system.inspect
    • Removedsap.system.list
    • Removedsap.text_elements.read
    • Removedsap.text_elements.write
    • Removedsap.transport.assess
    • Removedsap.transport.compare
    • Removedsap.transport.create
    • Removedsap.transport.delete
    • Removedsap.transport.inspect
    • Removedsap.transport.list
    • Removedsap.transport.object.add
    • Removedsap.transport.object.resolve
    • Removedsap.transport.owner.set
    • Removedsap.transport.release
    • Removedsap.transport.user.add
    • Removedsap.transport.user.list
    • Removedsap.ui.object_url
    • Removedsap.ui.transaction_launch
    • Removedsap.ui.transaction_url
    • Removedsap.version.history.compare
    • Removedsap.version.history.list
    • Removedsap.version.history.read
    • Removedsap.version.inactive.list
    • Removedsap.version.inactive.read
    • Removedsap.version.restore.execute
    • Removedsap.version.restore.preview
  3. 9 tool updatesv1.4.0
    • Addedsap.classic.read
    • Addedsap.classic.write
    • Addedsap.ddic.read
    • Addedsap.ddic.update
    • Changedsap.repository.create2 fields changed
      • addedInput schema / properties / activate / description
        Added value: +"Activate after writing create-time source"
      • addedInput schema / properties / source / description
        Added value: +"Create-time source for textual ADT object types"
    • Changedsap.repository.inspect5 fields changed
      • addedInput schema / properties / childLimit
        Added value: +{
        +  "default": 50,
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / childStartIndex
        Added value: +{
        +  "default": 0,
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / includeChildren
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeEnhancementSource
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeEnhancements
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedsap.repository.search1 field changed
      • changedInput schema / properties / objectTypes / items / enum
        Previous value: -[
        -  "FUNC",
        -  "CLAS",
        -  "TABL",
        -  "PROG",
        -  "INTF",
        -  "DTEL",
        -  "DDLS",
        -  "DOMA",
        -  "TTYP",
        -  "ENQU",
        -  "MSAG",
        -  "FUGR",
        -  "DEVC",
        -  "TRAN",
        -  "VIEW",
        -  "SICF",
        -  "WDYN",
        -  "SPRX",
        -  "XSLT",
        -  "TRANSFORMATIONS",
        -  "SUSH",
        -  "SUSC",
        -  "PINF",
        -  "ENHC",
        -  "ENHS",
        -  "BADI",
        -  "BADII",
        -  "SAMC",
        -  "SAPC",
        -  "SFSW",
        -  "SFBF",
        -  "SFBS",
        -  "JOBD",
        -  "NROB",
        -  "ENHO",
        -  "SUSO",
        -  "BDEF",
        -  "SRVB"
        -]New value: +[
        +  "FUNC",
        +  "CLAS",
        +  "TABL",
        +  "PROG",
        +  "INTF",
        +  "DTEL",
        +  "DDLS",
        +  "DCLS",
        +  "DDLX",
        +  "DDLA",
        +  "DOMA",
        +  "TTYP",
        +  "ENQU",
        +  "MSAG",
        +  "FUGR",
        +  "DEVC",
        +  "TRAN",
        +  "VIEW",
        +  "SICF",
        +  "WDYN",
        +  "SPRX",
        +  "XSLT",
        +  "TRANSFORMATIONS",
        +  "SUSH",
        +  "SUSC",
        +  "PINF",
        +  "ENHC",
        +  "ENHS",
        +  "BADI",
        +  "BADII",
        +  "SAMC",
        +  "SAPC",
        +  "SFSW",
        +  "SFBF",
        +  "SFBS",
        +  "JOBD",
        +  "NROB",
        +  "ENHO",
        +  "SUSO",
        +  "BDEF",
        +  "SRVD",
        +  "SRVB"
        +]
    • Addedsap.runtime.feed.read
    • Changedsap.source.read1 field changed
      • changedInput schema / properties / objectType / enum
        Previous value: -[
        -  "FUNC",
        -  "CLAS",
        -  "TABL",
        -  "PROG",
        -  "INTF",
        -  "DTEL",
        -  "DDLS",
        -  "DOMA",
        -  "TTYP",
        -  "ENQU",
        -  "MSAG",
        -  "FUGR",
        -  "DEVC",
        -  "TRAN",
        -  "VIEW",
        -  "SICF",
        -  "WDYN",
        -  "SPRX",
        -  "XSLT",
        -  "TRANSFORMATIONS",
        -  "SUSH",
        -  "SUSC",
        -  "PINF",
        -  "ENHC",
        -  "ENHS",
        -  "BADI",
        -  "BADII",
        -  "SAMC",
        -  "SAPC",
        -  "SFSW",
        -  "SFBF",
        -  "SFBS",
        -  "JOBD",
        -  "NROB",
        -  "ENHO",
        -  "SUSO",
        -  "BDEF",
        -  "SRVB"
        -]New value: +[
        +  "FUNC",
        +  "CLAS",
        +  "TABL",
        +  "PROG",
        +  "INTF",
        +  "DTEL",
        +  "DDLS",
        +  "DCLS",
        +  "DDLX",
        +  "DDLA",
        +  "DOMA",
        +  "TTYP",
        +  "ENQU",
        +  "MSAG",
        +  "FUGR",
        +  "DEVC",
        +  "TRAN",
        +  "VIEW",
        +  "SICF",
        +  "WDYN",
        +  "SPRX",
        +  "XSLT",
        +  "TRANSFORMATIONS",
        +  "SUSH",
        +  "SUSC",
        +  "PINF",
        +  "ENHC",
        +  "ENHS",
        +  "BADI",
        +  "BADII",
        +  "SAMC",
        +  "SAPC",
        +  "SFSW",
        +  "SFBF",
        +  "SFBS",
        +  "JOBD",
        +  "NROB",
        +  "ENHO",
        +  "SUSO",
        +  "BDEF",
        +  "SRVD",
        +  "SRVB"
        +]
  4. 47 tool updatesv1.0.1
    • Addedsap.artifact.mermaid.detect
    • Addedsap.artifact.mermaid.validate
    • Addedsap.data.export
    • Addedsap.debug.breakpoint.remove
    • Addedsap.debug.breakpoint.set
    • Addedsap.debug.evaluate
    • Addedsap.debug.session.inspect
    • Addedsap.debug.session.start
    • Addedsap.debug.session.stop
    • Addedsap.debug.stack
    • Addedsap.debug.step
    • Addedsap.debug.variables
    • Addedsap.git.unlink
    • Addedsap.ops.watch.start
    • Addedsap.quality.atc.documentation
    • Addedsap.quality.atc.run
    • Addedsap.quality.unit_test
    • Addedsap.rap.availability
    • Addedsap.rap.binding.inspect
    • Addedsap.rap.defaults
    • Addedsap.rap.generate
    • Addedsap.rap.preview
    • Addedsap.rap.schema
    • Addedsap.rap.validate
    • Addedsap.repository.search
    • Addedsap.runtime.dump.inspect
    • Addedsap.runtime.dump.list
    • Addedsap.runtime.trace.inspect
    • Addedsap.runtime.trace.list
    • Addedsap.runtime.trace.statements
    • Addedsap.semantic.quick_fixes
    • Addedsap.source.export
    • Addedsap.source.read
    • Addedsap.source.search
    • Addedsap.system.capabilities
    • Addedsap.system.discovery
    • Addedsap.transport.assess
    • Addedsap.transport.object.resolve
    • Addedsap.transport.user.list
    • Addedsap.ui.transaction_launch
    • Addedsap.ui.transaction_url
    • Addedsap.version.history.compare
    • Addedsap.version.history.list
    • Addedsap.version.history.read
    • Addedsap.version.inactive.list
    • Addedsap.version.inactive.read
    • Addedsap.version.restore.preview
  5. 114 tool updatesv1.0.0
    • Removedabap_activate
    • Removedabap_debug_breakpoint
    • Removedabap_debug_session
    • Removedabap_debug_stack
    • Removedabap_debug_status
    • Removedabap_debug_step
    • Removedabap_debug_variable
    • Removedabap_download
    • Removedabap_fs_documentation
    • Removedadt_discovery_export
    • Removedanalyze_abap_dumps
    • Removedanalyze_abap_traces
    • Removedcompare_abap_systems
    • Removedcreate_mermaid_diagram
    • Removedcreate_object_programmatically
    • Removedcreate_test_documentation
    • Removedcreate_test_include
    • Removeddetect_mermaid_diagram_type
    • Removedexecute_data_query
    • Removedfind_where_used
    • Removedget_abap_dependency_graph
    • Removedget_abap_diagnostics
    • Removedget_abap_object_info
    • Removedget_abap_object_lines
    • Removedget_abap_object_workspace_uri
    • Removedget_abap_sql_syntax
    • Removedget_atc_decorations
    • Removedget_batch_lines
    • Removedget_mermaid_documentation
    • Removedget_object_by_uri
    • Removedget_version_history
    • Removedinspect_abap_code
    • Removedmanage_abap_versions
    • Removedmanage_abapgit
    • Removedmanage_heartbeat
    • Removedmanage_rap_generator
    • Removedmanage_transport_requests
    • Removedopen_object
    • Removedrefactor_abap_code
    • Removedreplace_string_in_abap_object
    • Removedrun_abap_application
    • Removedrun_atc_analysis
    • Removedrun_sap_transaction
    • Removedrun_unit_tests
    • Addedsap.artifact.mermaid.create
    • Addedsap.artifact.test_document.create
    • Addedsap.data.query
    • Addedsap.debug.status
    • Addedsap.execution.execute
    • Addedsap.execution.health
    • Addedsap.execution.preview
    • Addedsap.git.branch.switch
    • Addedsap.git.check
    • Addedsap.git.create
    • Addedsap.git.inspect
    • Addedsap.git.list
    • Addedsap.git.pull
    • Addedsap.git.push
    • Addedsap.git.stage
    • Addedsap.ops.watch.history
    • Addedsap.ops.watch.status
    • Addedsap.ops.watch.stop
    • Addedsap.ops.watch.task.add
    • Addedsap.ops.watch.task.disable
    • Addedsap.ops.watch.task.enable
    • Addedsap.ops.watch.task.list
    • Addedsap.ops.watch.task.remove
    • Addedsap.ops.watch.task.update
    • Addedsap.ops.watch.trigger
    • Addedsap.ops.watch.watchlist.read
    • Addedsap.quality.atc.cached
    • Addedsap.quality.test_include.create
    • Addedsap.rap.binding.publish
    • Addedsap.rap.binding.unpublish
    • Addedsap.refactor.execute
    • Addedsap.refactor.preview
    • Addedsap.repository.compare
    • Addedsap.repository.create
    • Addedsap.repository.delete.execute
    • Addedsap.repository.delete.preview
    • Addedsap.repository.dependency_graph
    • Addedsap.repository.inspect
    • Addedsap.repository.resolve
    • Addedsap.repository.where_used
    • Addedsap.runtime.trace.configuration
    • Addedsap.runtime.trace.hit_list
    • Addedsap.semantic.complete
    • Addedsap.semantic.components
    • Addedsap.semantic.definition
    • Addedsap.semantic.documentation
    • Addedsap.semantic.format_preview
    • Addedsap.semantic.hierarchy
    • Addedsap.source.activate
    • Addedsap.source.diagnose
    • Addedsap.source.patch
    • Addedsap.source.read_batch
    • Addedsap.system.discovery.export
    • Addedsap.system.inspect
    • Addedsap.system.list
    • Addedsap.text_elements.read
    • Addedsap.text_elements.write
    • Addedsap.transport.compare
    • Addedsap.transport.create
    • Addedsap.transport.delete
    • Addedsap.transport.inspect
    • Addedsap.transport.list
    • Addedsap.transport.object.add
    • Addedsap.transport.owner.set
    • Addedsap.transport.release
    • Addedsap.transport.user.add
    • Addedsap.ui.object_url
    • Addedsap.version.restore.execute
    • Removedsearch_abap_object_lines
    • Removedvalidate_mermaid_syntax
  6. 9 tool updatesv0.4.15
    • Changedabap_activate5 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / connectionId
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / url
        Added value: +{
        +  "description": "One ABAP workspace URI to activate",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / urls
        Added value: +{
        +  "description": "One through 100 same-connection ABAP workspace URIs to activate in one batch",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedcreate_object_programmatically2 fields changed
      • addedInput schema / properties / activate / description
        Added value: +"Activate after create-time source writing; currently supported only for BDEF/BDO"
      • addedInput schema / properties / source / description
        Added value: +"Create-time source; currently supported only for BDEF/BDO"
    • Removedget_abap_object_url
    • Removedget_connected_systems
    • Removedget_sap_capabilities
    • Removedget_sap_system_info
    • Removedmanage_text_elements
    • Changedmanage_transport_requests7 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "get_user_transports",
        -  "get_transport_details",
        -  "get_transport_objects",
        -  "compare_transports",
        -  "create_transport",
        -  "release_transport",
        -  "delete_transport",
        -  "set_owner",
        -  "add_user",
        -  "add_object",
        -  "list_system_users",
        -  "resolve_object"
        -]New value: +[
        +  "get_user_transports",
        +  "get_transport_details",
        +  "get_transport_objects",
        +  "assess_transport",
        +  "compare_transports",
        +  "create_transport",
        +  "release_transport",
        +  "delete_transport",
        +  "set_owner",
        +  "add_user",
        +  "add_object",
        +  "list_system_users",
        +  "resolve_object"
        +]
      • addedInput schema / properties / checks
        Added value: +{
        +  "default": [
        +    "atc",
        +    "unit_tests"
        +  ],
        +  "items": {
        +    "enum": [
        +      "atc",
        +      "unit_tests",
        +      "target_compare"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / failOnAtcWarnings
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / maxObjects
        Added value: +{
        +  "default": 20,
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / reportDirectory
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / reportFormats
        Added value: +{
        +  "default": [
        +    "json"
        +  ],
        +  "items": {
        +    "enum": [
        +      "json",
        +      "sarif",
        +      "junit"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetConnectionId
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Removedsearch_abap_objects
  7. 1 tool updatev0.4.6
    • Changedrun_abap_application8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / action
        Added value: +{
        +  "enum": [
        +    "repl_health",
        +    "preview_class",
        +    "preview_snippet",
        +    "execute"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / className
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / code
        Added value: +{
        +  "maxLength": 98304,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / confirmation
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / connectionId
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / planId
        Added value: +{
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "action",
        +  "connectionId"
        +]
  8. 52 tool updatesv0.4.5
    • First observedabap_activate
    • First observedabap_debug_breakpoint
    • First observedabap_debug_session
    • First observedabap_debug_stack
    • First observedabap_debug_status
    • First observedabap_debug_step
    • First observedabap_debug_variable
    • First observedabap_download
    • First observedabap_fs_documentation
    • First observedadt_discovery_export
    • First observedanalyze_abap_dumps
    • First observedanalyze_abap_traces
    • First observedcompare_abap_systems
    • First observedcreate_mermaid_diagram
    • First observedcreate_object_programmatically
    • First observedcreate_test_documentation
    • First observedcreate_test_include
    • First observeddetect_mermaid_diagram_type
    • First observedexecute_data_query
    • First observedfind_where_used
    • First observedget_abap_dependency_graph
    • First observedget_abap_diagnostics
    • First observedget_abap_object_info
    • First observedget_abap_object_lines
    • First observedget_abap_object_url
    • First observedget_abap_object_workspace_uri
    • First observedget_abap_sql_syntax
    • First observedget_atc_decorations
    • First observedget_batch_lines
    • First observedget_connected_systems
    • First observedget_mermaid_documentation
    • First observedget_object_by_uri
    • First observedget_sap_capabilities
    • First observedget_sap_system_info
    • First observedget_version_history
    • First observedinspect_abap_code
    • First observedmanage_abap_versions
    • First observedmanage_abapgit
    • First observedmanage_heartbeat
    • First observedmanage_rap_generator
    • First observedmanage_text_elements
    • First observedmanage_transport_requests
    • First observedopen_object
    • First observedrefactor_abap_code
    • First observedreplace_string_in_abap_object
    • First observedrun_abap_application
    • First observedrun_atc_analysis
    • First observedrun_sap_transaction
    • First observedrun_unit_tests
    • First observedsearch_abap_object_lines
    • First observedsearch_abap_objects
    • First observedvalidate_mermaid_syntax

TDQS

B3.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct role: search discovers capabilities, describe retrieves schemas/hashes, and the three invoke tools are cleanly separated by effect class (read/write/destructive). An agent can select the right tool based on intent without overlapping functionality.

Naming Consistency5/5

All tools follow the same `sap.capability.<action>` namespace with lowercase and snake_case suffixes. The invoke variants consistently append the effect type, creating a predictable and readable pattern.

Tool Count5/5

Five tools neatly cover the generic capability gateway pattern: discovery, introspection, and execution split by effect class. Each tool earns its place with no redundant or missing meta-operations.

Completeness5/5

The set covers discovery (search), schema retrieval (describe), and execution across all effect classes (read/write/destructive), forming a complete lifecycle for invoking SAP capabilities without obvious dead ends.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    An MCP server that enables AI assistants to interact with SAP systems via the ABAP Development Tools (ADT) REST API. It allows users to read ABAP source code, inspect DDIC objects, and execute SQL queries directly.
    66
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A standalone MCP server for SAP ABAP development and customizing that connects directly to your SAP system via ADT REST API, enabling AI assistants to search, read, write, activate, transport, debug, and run quality checks on ABAP code, as well as manage customizing/IMG configurations with governed transport recording.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects AI assistants to SAP systems via the ADT REST API, enabling read, write, syntax-check, and activation of ABAP code directly from the chat.
    3
    MIT