sap-abap-mcp
Connects an AI assistant to an ADT-enabled SAP ABAP system through a governed capability-discovery and invocation gateway.
Search available SAP capabilities by keyword, name, category, risk level, and pagination cursor.
Describe one or more capabilities (up to 10) to retrieve exact input schemas, schema hashes, and optionally output schemas.
Invoke read-only capabilities using a described capability name, schema hash, and arguments.
Invoke write capabilities with schema-hash validation for scoped changes.
Invoke destructive capabilities when exposed, marked as destructive and not read-only.
Supports reading ABAP, inspecting check results, and making scoped changes through discovered capabilities; actual operations depend on what the connected SAP system exposes.
Provides tools to connect to SAP ABAP systems via ADT HTTP API, enabling management of ABAP objects, searching, reading source code, and more.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sap-abap-mcpSearch for ZCL_DEMO class in DEV100 and show its source."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SAP ABAP MCP
Connect your AI assistant to an ADT-enabled SAP system to read ABAP, make scoped changes and inspect actual check results.

Quick start
Install Node.js 22/24 and connect to your company VPN.
Run
npx -y @coaspe/sap-abap-mcp@2.2.0 onboard(npx.cmdon Windows).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 |
|
Codex |
|
VS Code |
|
Cursor |
|
Gemini CLI |
|
Claude Desktop |
|
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 |
| Complete local setup and reconnect; this state is not an accepted SAP installation |
Removed Node/cache or old registered version | |
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
Transport
assureand CI, full reference, CLI, profiles, changelog.Reliability validation and field procedure. Checkout manifest version:
2.2.0.
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 toolssap.capability.describeDescribe SAP CapabilityBRead-onlyIdempotent
Get exact input schemas and hashes: name or names (up to 10).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| names | No | ||
| includeOutputSchema | No |
TDQS
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.
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.
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.
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.
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.
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 CapabilityCDestructive
Invoke a destructive capability with its described schemaHash and arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| arguments | No | ||
| schemaHash | Yes |
TDQS
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.
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.
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.
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.
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.
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 CapabilityCRead-onlyIdempotent
Invoke a read capability with its described schemaHash and arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| arguments | No | ||
| schemaHash | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| arguments | No | ||
| schemaHash | Yes |
TDQS
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.
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.
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.
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.
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.
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 CapabilitiesBRead-onlyIdempotent
Find capabilities; browse categories if keyword search misses.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| risk | No | ||
| limit | No | ||
| query | No | ||
| cursor | No | ||
| category | No |
TDQS
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.
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.
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.
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.
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.
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 tool update
v2.0.1- Changed
sap.capability.describe2 fields changed- added
Input schema / properties / namesAdded value: +{ + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "name" -]
125 tool updates
v1.7.0- Removed
sap.artifact.mermaid.create - Removed
sap.artifact.mermaid.detect - Removed
sap.artifact.mermaid.validate - Removed
sap.artifact.test_document.create - Added
sap.capability.describe - Added
sap.capability.invoke_destructive - Added
sap.capability.invoke_read - Added
sap.capability.invoke_write - Added
sap.capability.search - Removed
sap.classic.read - Removed
sap.classic.write - Removed
sap.data.export - Removed
sap.data.query - Removed
sap.ddic.read - Removed
sap.ddic.update - Removed
sap.debug.breakpoint.remove - Removed
sap.debug.breakpoint.set - Removed
sap.debug.evaluate - Removed
sap.debug.session.inspect - Removed
sap.debug.session.start - Removed
sap.debug.session.stop - Removed
sap.debug.stack - Removed
sap.debug.status - Removed
sap.debug.step - Removed
sap.debug.variables - Removed
sap.execution.execute - Removed
sap.execution.health - Removed
sap.execution.preview - Removed
sap.git.branch.switch - Removed
sap.git.check - Removed
sap.git.create - Removed
sap.git.inspect - Removed
sap.git.list - Removed
sap.git.pull - Removed
sap.git.push - Removed
sap.git.stage - Removed
sap.git.unlink - Removed
sap.ops.watch.history - Removed
sap.ops.watch.start - Removed
sap.ops.watch.status - Removed
sap.ops.watch.stop - Removed
sap.ops.watch.task.add - Removed
sap.ops.watch.task.disable - Removed
sap.ops.watch.task.enable - Removed
sap.ops.watch.task.list - Removed
sap.ops.watch.task.remove - Removed
sap.ops.watch.task.update - Removed
sap.ops.watch.trigger - Removed
sap.ops.watch.watchlist.read - Removed
sap.quality.atc.cached - Removed
sap.quality.atc.documentation - Removed
sap.quality.atc.run - Removed
sap.quality.test_include.create - Removed
sap.quality.unit_test - Removed
sap.rap.availability - Removed
sap.rap.binding.inspect - Removed
sap.rap.binding.publish - Removed
sap.rap.binding.unpublish - Removed
sap.rap.defaults - Removed
sap.rap.generate - Removed
sap.rap.preview - Removed
sap.rap.schema - Removed
sap.rap.validate - Removed
sap.refactor.execute - Removed
sap.refactor.preview - Removed
sap.repository.compare - Removed
sap.repository.create - Removed
sap.repository.delete.execute - Removed
sap.repository.delete.preview - Removed
sap.repository.dependency_graph - Removed
sap.repository.inspect - Removed
sap.repository.resolve - Removed
sap.repository.search - Removed
sap.repository.where_used - Removed
sap.runtime.dump.inspect - Removed
sap.runtime.dump.list - Removed
sap.runtime.feed.read - Removed
sap.runtime.trace.configuration - Removed
sap.runtime.trace.hit_list - Removed
sap.runtime.trace.inspect - Removed
sap.runtime.trace.list - Removed
sap.runtime.trace.statements - Removed
sap.semantic.complete - Removed
sap.semantic.components - Removed
sap.semantic.definition - Removed
sap.semantic.documentation - Removed
sap.semantic.format_preview - Removed
sap.semantic.hierarchy - Removed
sap.semantic.quick_fixes - Removed
sap.source.activate - Removed
sap.source.diagnose - Removed
sap.source.export - Removed
sap.source.patch - Removed
sap.source.read - Removed
sap.source.read_batch - Removed
sap.source.search - Removed
sap.system.capabilities - Removed
sap.system.discovery - Removed
sap.system.discovery.export - Removed
sap.system.inspect - Removed
sap.system.list - Removed
sap.text_elements.read - Removed
sap.text_elements.write - Removed
sap.transport.assess - Removed
sap.transport.compare - Removed
sap.transport.create - Removed
sap.transport.delete - Removed
sap.transport.inspect - Removed
sap.transport.list - Removed
sap.transport.object.add - Removed
sap.transport.object.resolve - Removed
sap.transport.owner.set - Removed
sap.transport.release - Removed
sap.transport.user.add - Removed
sap.transport.user.list - Removed
sap.ui.object_url - Removed
sap.ui.transaction_launch - Removed
sap.ui.transaction_url - Removed
sap.version.history.compare - Removed
sap.version.history.list - Removed
sap.version.history.read - Removed
sap.version.inactive.list - Removed
sap.version.inactive.read - Removed
sap.version.restore.execute - Removed
sap.version.restore.preview
9 tool updates
v1.4.0- Added
sap.classic.read - Added
sap.classic.write - Added
sap.ddic.read - Added
sap.ddic.update - Changed
sap.repository.create2 fields changed- added
Input schema / properties / activate / descriptionAdded value: +"Activate after writing create-time source" - added
Input schema / properties / source / descriptionAdded value: +"Create-time source for textual ADT object types"
- Changed
sap.repository.inspect5 fields changed- added
Input schema / properties / childLimitAdded value: +{ + "default": 50, + "maximum": 500, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / childStartIndexAdded value: +{ + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / includeChildrenAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / includeEnhancementSourceAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / includeEnhancementsAdded value: +{ + "default": false, + "type": "boolean" +}
- Changed
sap.repository.search1 field changed- changed
Input schema / properties / objectTypes / items / enumPrevious 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" +]
- Added
sap.runtime.feed.read - Changed
sap.source.read1 field changed- changed
Input schema / properties / objectType / enumPrevious 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" +]
47 tool updates
v1.0.1- Added
sap.artifact.mermaid.detect - Added
sap.artifact.mermaid.validate - Added
sap.data.export - Added
sap.debug.breakpoint.remove - Added
sap.debug.breakpoint.set - Added
sap.debug.evaluate - Added
sap.debug.session.inspect - Added
sap.debug.session.start - Added
sap.debug.session.stop - Added
sap.debug.stack - Added
sap.debug.step - Added
sap.debug.variables - Added
sap.git.unlink - Added
sap.ops.watch.start - Added
sap.quality.atc.documentation - Added
sap.quality.atc.run - Added
sap.quality.unit_test - Added
sap.rap.availability - Added
sap.rap.binding.inspect - Added
sap.rap.defaults - Added
sap.rap.generate - Added
sap.rap.preview - Added
sap.rap.schema - Added
sap.rap.validate - Added
sap.repository.search - Added
sap.runtime.dump.inspect - Added
sap.runtime.dump.list - Added
sap.runtime.trace.inspect - Added
sap.runtime.trace.list - Added
sap.runtime.trace.statements - Added
sap.semantic.quick_fixes - Added
sap.source.export - Added
sap.source.read - Added
sap.source.search - Added
sap.system.capabilities - Added
sap.system.discovery - Added
sap.transport.assess - Added
sap.transport.object.resolve - Added
sap.transport.user.list - Added
sap.ui.transaction_launch - Added
sap.ui.transaction_url - Added
sap.version.history.compare - Added
sap.version.history.list - Added
sap.version.history.read - Added
sap.version.inactive.list - Added
sap.version.inactive.read - Added
sap.version.restore.preview
114 tool updates
v1.0.0- Removed
abap_activate - Removed
abap_debug_breakpoint - Removed
abap_debug_session - Removed
abap_debug_stack - Removed
abap_debug_status - Removed
abap_debug_step - Removed
abap_debug_variable - Removed
abap_download - Removed
abap_fs_documentation - Removed
adt_discovery_export - Removed
analyze_abap_dumps - Removed
analyze_abap_traces - Removed
compare_abap_systems - Removed
create_mermaid_diagram - Removed
create_object_programmatically - Removed
create_test_documentation - Removed
create_test_include - Removed
detect_mermaid_diagram_type - Removed
execute_data_query - Removed
find_where_used - Removed
get_abap_dependency_graph - Removed
get_abap_diagnostics - Removed
get_abap_object_info - Removed
get_abap_object_lines - Removed
get_abap_object_workspace_uri - Removed
get_abap_sql_syntax - Removed
get_atc_decorations - Removed
get_batch_lines - Removed
get_mermaid_documentation - Removed
get_object_by_uri - Removed
get_version_history - Removed
inspect_abap_code - Removed
manage_abap_versions - Removed
manage_abapgit - Removed
manage_heartbeat - Removed
manage_rap_generator - Removed
manage_transport_requests - Removed
open_object - Removed
refactor_abap_code - Removed
replace_string_in_abap_object - Removed
run_abap_application - Removed
run_atc_analysis - Removed
run_sap_transaction - Removed
run_unit_tests - Added
sap.artifact.mermaid.create - Added
sap.artifact.test_document.create - Added
sap.data.query - Added
sap.debug.status - Added
sap.execution.execute - Added
sap.execution.health - Added
sap.execution.preview - Added
sap.git.branch.switch - Added
sap.git.check - Added
sap.git.create - Added
sap.git.inspect - Added
sap.git.list - Added
sap.git.pull - Added
sap.git.push - Added
sap.git.stage - Added
sap.ops.watch.history - Added
sap.ops.watch.status - Added
sap.ops.watch.stop - Added
sap.ops.watch.task.add - Added
sap.ops.watch.task.disable - Added
sap.ops.watch.task.enable - Added
sap.ops.watch.task.list - Added
sap.ops.watch.task.remove - Added
sap.ops.watch.task.update - Added
sap.ops.watch.trigger - Added
sap.ops.watch.watchlist.read - Added
sap.quality.atc.cached - Added
sap.quality.test_include.create - Added
sap.rap.binding.publish - Added
sap.rap.binding.unpublish - Added
sap.refactor.execute - Added
sap.refactor.preview - Added
sap.repository.compare - Added
sap.repository.create - Added
sap.repository.delete.execute - Added
sap.repository.delete.preview - Added
sap.repository.dependency_graph - Added
sap.repository.inspect - Added
sap.repository.resolve - Added
sap.repository.where_used - Added
sap.runtime.trace.configuration - Added
sap.runtime.trace.hit_list - Added
sap.semantic.complete - Added
sap.semantic.components - Added
sap.semantic.definition - Added
sap.semantic.documentation - Added
sap.semantic.format_preview - Added
sap.semantic.hierarchy - Added
sap.source.activate - Added
sap.source.diagnose - Added
sap.source.patch - Added
sap.source.read_batch - Added
sap.system.discovery.export - Added
sap.system.inspect - Added
sap.system.list - Added
sap.text_elements.read - Added
sap.text_elements.write - Added
sap.transport.compare - Added
sap.transport.create - Added
sap.transport.delete - Added
sap.transport.inspect - Added
sap.transport.list - Added
sap.transport.object.add - Added
sap.transport.owner.set - Added
sap.transport.release - Added
sap.transport.user.add - Added
sap.ui.object_url - Added
sap.version.restore.execute - Removed
search_abap_object_lines - Removed
validate_mermaid_syntax
9 tool updates
v0.4.15- Changed
abap_activate5 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / connectionIdAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / urlAdded value: +{ + "description": "One ABAP workspace URI to activate", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / urlsAdded 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" +}
- Changed
create_object_programmatically2 fields changed- added
Input schema / properties / activate / descriptionAdded value: +"Activate after create-time source writing; currently supported only for BDEF/BDO" - added
Input schema / properties / source / descriptionAdded value: +"Create-time source; currently supported only for BDEF/BDO"
- Removed
get_abap_object_url - Removed
get_connected_systems - Removed
get_sap_capabilities - Removed
get_sap_system_info - Removed
manage_text_elements - Changed
manage_transport_requests7 fields changed- changed
Input schema / properties / action / enumPrevious 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" +] - added
Input schema / properties / checksAdded value: +{ + "default": [ + "atc", + "unit_tests" + ], + "items": { + "enum": [ + "atc", + "unit_tests", + "target_compare" + ], + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / failOnAtcWarningsAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / maxObjectsAdded value: +{ + "default": 20, + "maximum": 200, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / reportDirectoryAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / reportFormatsAdded value: +{ + "default": [ + "json" + ], + "items": { + "enum": [ + "json", + "sarif", + "junit" + ], + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / targetConnectionIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Removed
search_abap_objects
1 tool update
v0.4.6- Changed
run_abap_application8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / actionAdded value: +{ + "enum": [ + "repl_health", + "preview_class", + "preview_snippet", + "execute" + ], + "type": "string" +} - added
Input schema / properties / classNameAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / codeAdded value: +{ + "maxLength": 98304, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / confirmationAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / connectionIdAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / planIdAdded 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" +} - added
Input schema / requiredAdded value: +[ + "action", + "connectionId" +]
52 tool updates
v0.4.5- First observed
abap_activate - First observed
abap_debug_breakpoint - First observed
abap_debug_session - First observed
abap_debug_stack - First observed
abap_debug_status - First observed
abap_debug_step - First observed
abap_debug_variable - First observed
abap_download - First observed
abap_fs_documentation - First observed
adt_discovery_export - First observed
analyze_abap_dumps - First observed
analyze_abap_traces - First observed
compare_abap_systems - First observed
create_mermaid_diagram - First observed
create_object_programmatically - First observed
create_test_documentation - First observed
create_test_include - First observed
detect_mermaid_diagram_type - First observed
execute_data_query - First observed
find_where_used - First observed
get_abap_dependency_graph - First observed
get_abap_diagnostics - First observed
get_abap_object_info - First observed
get_abap_object_lines - First observed
get_abap_object_url - First observed
get_abap_object_workspace_uri - First observed
get_abap_sql_syntax - First observed
get_atc_decorations - First observed
get_batch_lines - First observed
get_connected_systems - First observed
get_mermaid_documentation - First observed
get_object_by_uri - First observed
get_sap_capabilities - First observed
get_sap_system_info - First observed
get_version_history - First observed
inspect_abap_code - First observed
manage_abap_versions - First observed
manage_abapgit - First observed
manage_heartbeat - First observed
manage_rap_generator - First observed
manage_text_elements - First observed
manage_transport_requests - First observed
open_object - First observed
refactor_abap_code - First observed
replace_string_in_abap_object - First observed
run_abap_application - First observed
run_atc_analysis - First observed
run_sap_transaction - First observed
run_unit_tests - First observed
search_abap_object_lines - First observed
search_abap_objects - First observed
validate_mermaid_syntax
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- FlicenseBqualityNot gradedmaintenanceAn 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-

dassian-adtofficial
AlicenseNot gradedqualityDmaintenanceMCP server for SAP ABAP development via the ADT API. Connect AI assistants to your SAP system — read, write, test, and deploy ABAP code without SAP GUI.19MIT- AlicenseNot gradedqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceAn 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.3MIT