{"ref":"artifact:netweaver1970-abap-config-mcp","page":"/artifacts/netweaver1970-abap-config-mcp","json":"/artifacts/netweaver1970-abap-config-mcp.json","generated":"2026-11-12","drafted_with_ai":true,"entity":{"id":"netweaver1970-abap-config-mcp","name":"abap-config-mcp","artifact_type":"mcp-server","ecosystem":"abap","domain":"ai-and-agents","secondary_domains":["developer-experience"],"origin_ring":"independent","use_as":"dependency","source_available":true,"drafted_with_ai":true,"description":{"one_line":"An MCP server that reaches an ABAP system over ADT for the development loop and drives customizing through ABAP it deploys into the system, so a config change runs the SM30/SM34 maintenance-view runtime.","short":"ABAP MCP server that writes customizing through the SM30 runtime","what_it_solves":"A Node server that logs into the ABAP systems listed in its own `connections.json`, reaches [the ADT resources](artifact:sap-adt) over HTTP through [abap-adt-api](artifact:abap-adt-api), and serves 58 tools to any MCP client at an endpoint of its own: search, read, write, activate, ATC, ABAP Unit, transports, table queries, where-used, dumps and a debugger among them. The customizing half is what separates it: the server deploys two ABAP units into the box, `ZCL_MCP_DIAG` behind a SICF node for read-only probes and `ZCL_MCP_CUST_ENGINE` for writes, and a config change runs through SAP's `VIEW_MAINTENANCE_SINGLE_ENTRY`, so the foreign-key checks, change documents and transport recording of a manual SPRO change happen too. All 58 tools carry a risk tier and `ABAP_MCP_MAX_TIER` decides which are registered at all: `0` for read-only diagnostics, `1` to add governed customizing writes, `2` for the repository and debug surface, with an unclassified tool defaulting to `2`. Beside the HTTP server, `npm run package` builds a Claude Code plugin marketplace, a `.mcpb` extension for Claude Desktop and a `sap-abap` skill archive, and in that form Claude starts the server itself over stdio with no port and no shared secret. The idea of driving ADT from outside the SAP GUI is credited to [ABAP remote filesystem](artifact:marcellourbani-vscode-abap-remote-fs), whose code the maintainer states this server does not contain.","when_not_to_use":"The HTTP server is a plain HTTP service whose only gate is a shared secret: the README states that anyone who can reach its port and knows the secret can drive every tool, and an empty `apiKey` leaves it unauthenticated with a warning in the log. Past that the limit is whatever the one SAP user in the connection may do, so least privilege on that user and the `ABAP_MCP_MAX_TIER` ceiling are the whole boundary. It is intended for DEV and UAT systems; for production the maintainer intends read-only investigation under a read-only user, and a client closed for changes would refuse the write tools in any case.","to_build_on_it":"The README ends with the ADT locking rules for anyone adding a write tool: lock the exact resource the PUT or POST targets and not its parent, worked through on the text-element pool, with a checklist and a table of known enqueue boundaries beside it. Classification lives in `src/tools/riskTiers.ts` and an unclassified tool is treated as tier 2, so a new tool is never exposed on a restricted server by omission. Which in-system units are transportable is per-connection configuration, and `engine_deploy` can be re-run for any unit to move it into a Workbench Z package on a transport."},"links":{"repo":"https://github.com/netweaver1970/abap-config-mcp"},"compat":{"runtimes":["node"],"abap":{"floor":{"value":"740","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, SAP system requirements","checked":"2026-11-11","quote":"SAP NetWeaver 7.40+ or SAP S/4HANA"}]}}},"type_properties":{"transports":{"value":["http","stdio"],"sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Claude Code","checked":"2026-11-11","quote":"It connects to HTTP MCP servers directly (no bridge)."},{"url":"https://raw.githubusercontent.com/netweaver1970/abap-config-mcp/main/packaging/INSTALL.md","title":"abap-config-mcp — INSTALL","checked":"2026-11-11","quote":"No daemon, port or shared secret: Claude starts the server itself over stdio."}]}},"provides":[{"capability":"capability:agent-code-access","what_it_does":"Gives an MCP client the ABAP development loop on a live system over ADT with no IDE in the path: object search and metadata, source read, grep and batch read, syntax check, lock, write, create and delete, single and batch activation, ATC, ABAP Unit, classrun execution, where-used, version history, ST22 dumps, package browsing and text elements. A source write can be handed over as the path of a local file under the user's home directory instead of passing through the conversation.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README","checked":"2026-11-11","quote":"Connects directly to your SAP system via the ADT REST API and exposes **58 tools** to any MCP-compatible AI client — **no VS Code, no Copilot subscription required**."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README","checked":"2026-11-11","quote":"**ABAP development** — search, read, write, activate, transport, debug, run ATC & unit tests, browse packages, query and compare table data — a full ABAP development toolset exposed as standalone MCP tools."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, write_abap_object_source","checked":"2026-11-11","quote":"Instead of source: absolute path of a local file under your home"}],"facets":[{"key":"read_source","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Read full source, grep within source, batch-read multiple objects, syntax-check without saving"}},{"key":"search_objects","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Find objects by name/wildcard, inspect metadata, list systems, explore ADT services"}},{"key":"where_used","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Where-used cross-reference, version history, runtime dumps (ST22), inactive objects list"}},{"key":"ddic_metadata","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, describe_database_table","checked":"2026-11-11","quote":"Show the complete field list for a SAP table or view: field name, type, length, description, and which fields form the key."}},{"key":"table_data","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Search tables by description keyword, describe table structure, run SELECT queries, read table contents"}},{"key":"write_source","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Lock objects, write source, unlock/discard, create new objects, delete objects"}},{"key":"create_objects","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, create_abap_object","checked":"2026-11-11","quote":"Create a new ABAP development object — program, class, interface, function group, table, data element, domain, and more."}},{"key":"activate","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Activate single objects, batch-activate all inactive objects"}},{"key":"transports","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"List transports across all users with their objects (read from E070/E071), create/release/delete/change owner, find which transport an object needs."}},{"key":"syntax_check","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, syntax_check","checked":"2026-11-11","quote":"Check ABAP source code syntax against the server without saving or activating."}},{"key":"atc","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"ATC checks with findings and locations, unit test execution, create test includes"}},{"key":"unit_tests","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"ATC checks with findings and locations, unit test execution, create test includes"}},{"key":"run_code","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, abap_run_class","checked":"2026-11-11","quote":"Run a class that implements `IF_OO_ADT_CLASSRUN`"}},{"key":"dumps_or_traces","value":true,"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, analyze_dump","checked":"2026-11-11","quote":"List ABAP runtime short dumps (ST22) from the SAP system."}},{"key":"objects_read","value":["PROG","CLAS","INTF","FUGR","TABL","DEVC"],"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, get_abap_object_lines","checked":"2026-11-11","quote":"Read the full source code of any ABAP object — programs, classes, function modules, includes, interfaces, etc."},"sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, get_abap_object_lines","checked":"2026-11-11","quote":"Read the full source code of any ABAP object — programs, classes, function modules, includes, interfaces, etc."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, browse_package","checked":"2026-11-11","quote":"List all development objects inside an ABAP package, grouped by object type."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, search_abap_objects","checked":"2026-11-11","quote":"Filter by type: \"PROG\", \"CLAS\", \"FUGR\", \"TABL\", \"INTF\", etc."}]},{"key":"objects_write","value":["PROG","CLAS","INTF","FUGR","TABL","DTEL","DOMA","DEVC"],"source":{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, create_abap_object","checked":"2026-11-11","quote":"Create a new ABAP development object — program, class, interface, function group, table, data element, domain, and more."},"sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, create_abap_object","checked":"2026-11-11","quote":"Create a new ABAP development object — program, class, interface, function group, table, data element, domain, and more."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, create_package","checked":"2026-11-11","quote":"Create a new ABAP development package (development class)."}]}]},{"capability":"capability:agent-systems-access","what_it_does":"Reaches the configuration and the state of the system beside its code: the IMG tree searched by keyword, a customizing object described with its maintenance object, delivery class, keys and transport object, its rows read, two keys diffed, a copy or delete planned as a dry run and then applied through the SM30 maintenance-view runtime, and an organizational unit copied with its dependent tables in a background job. The writes run in ABAP the server deploys into the system, so class C, G and E config records onto a Customizing request while a class-A application table writes direct. Beside customizing it reports HANA memory from the engine's ADBC access to the `SYS.M_*` views, lists ST22 dumps, and runs SELECT queries and table reads that can be compared between two configured systems.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README","checked":"2026-11-11","quote":"an **in-system customizing engine** the server deploys into your SAP box drives the standard SM30/SM34 maintenance-view runtime, so configuration changes get foreign-key checks, change documents and **governed transport recording** exactly as a manual SPRO change would."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Search IMG/SPRO, describe/read/diff/plan customizing, copy or delete config the SM30-standard way with governed transport recording, headless org-unit copy, bootstrap/cleanup the in-system engine"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, customizing_apply","checked":"2026-11-11","quote":"Class C/G/E config records onto a Customizing request (governed transport selection); class-A application tables write direct with no transport."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, hana_memory_report","checked":"2026-11-11","quote":"Report HANA memory usage (used / peak / allocation limit, top consumers) via the engine's ADBC access to the `SYS.M_*` views"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Security & authorization","checked":"2026-11-11","quote":"**table-content comparisons** between systems"}]},{"capability":"capability:change-promotion","what_it_does":"Exposes the Change and Transport System as tools: every open or released request across all users with the objects it contains, read from E070 and E071, a full view of one request's tasks, objects, owner and status, and create, release, delete and change owner. Every tool that records onto a transport decides by one documented order, and a write with no request named returns the open requests to choose from with the create options beside them. The choice is kept per piece of work in `~/.abap-mcp/transport-memory.json`, keyed by a `workItem` name, so it survives a server restart and two conversations do not land on the same request.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, list_all_transports","checked":"2026-11-11","quote":"List open (or all) transport requests across **all users** in the SAP system. Shows each transport's owner, description, status, and every object it contains."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Customizing & IMG","checked":"2026-11-11","quote":"**Governed transport selection:** a recorded write uses an explicit `transport` as-is; with none given it returns an interactive prompt listing your open requests (pass `showAllTransports: true` for everyone's) plus the create options, rather than silently minting one."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Transport selection","checked":"2026-11-11","quote":"A piece of work is `workItem` (any short name — `HPM`, a ticket number)."}]},{"capability":"capability:debugging","what_it_does":"Drives the ADT debugger from the chat: a breakpoint is set on a line, `abap_debug_session listen` blocks until execution triggered in SAP hits it, and the call stack, the variables in scope down to structures, internal tables and object instances, and the step types of the ABAP debugger are then available, including changing a variable's value to bypass a condition without touching source.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Feature overview","checked":"2026-11-11","quote":"Attach debugger, set/delete breakpoints, step through code, inspect/change variables, call stack"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Debugging","checked":"2026-11-11","quote":"Set a breakpoint, then trigger execution in SAP (run the report, call the BAPI, send the HTTP request)."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, abap_debug_variable","checked":"2026-11-11","quote":"Inspect the current values of variables in an active debug session. Can drill into complex types (structures, internal tables, object instances)."}]}],"requires":[{"ref":"artifact:sap-adt","requirement":"required","basis":"binding","role":"adt-endpoint","for":"The adt ICF service has to be active on the system, under a user with development authorisations; every tool call goes there. The `whereClause` of `read_table_contents` additionally uses the `/sap/bc/adt/datapreview` node, which is activated on its own and absent below SAP_BASIS 7.40 SP08.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, SAP system requirements","checked":"2026-11-11","quote":"ADT (ABAP Development Tools) REST service enabled — activate in SICF: `/sap/bc/adt`"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, SAP system requirements","checked":"2026-11-11","quote":"User with development authorizations: `S_DEVELOP`, `S_TCODE` for `SE80`"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, read_table_contents","checked":"2026-11-11","quote":"The `whereClause` parameter uses the `/sap/bc/adt/datapreview` ADT service"}]}],"connects":[{"ref":"artifact:sap-adt","kind":"data","direction":"outbound","protocols":["http"],"for":"Every tool call goes to the [ADT resources](artifact:sap-adt) of the system named in `connections.json`, logged in with that connection's user and client; the session is re-established after eight idle minutes and `force_relogin` resets a degraded one.","sources":[{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README","checked":"2026-11-11","quote":"Connects directly to your SAP system via the ADT REST API and exposes **58 tools** to any MCP-compatible AI client — **no VS Code, no Copilot subscription required**."},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, Security & authorization","checked":"2026-11-11","quote":"every action runs through ADT / RFC **as the SAP user in that connection's"},{"url":"https://github.com/netweaver1970/abap-config-mcp","title":"netweaver1970/abap-config-mcp — README, force_relogin","checked":"2026-11-11","quote":"Drop and re-establish the ADT session for a connection."}]}],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-11-11"},"maintainers":["actor:netweaver1970"],"contributors":["actor:netweaver1970"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-11, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":"SAP_BASIS 740 and up, stated: includes every maintained line to 816"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"36 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 11 pages, README 77 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-11-11","npm":"not published under this name","stars":1,"forks":1,"open_issues":0,"archived":false,"pushed_at":"2026-11-10","language":"TypeScript","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2026-06-14T20:20:12Z","open_prs":0,"tree_truncated":false,"test_files":36,"workflows":0,"other_ci":false,"readme_bytes":78818,"docs_files":11,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-06-14","last_commit":"2026-11-10","commits":67,"contributors":1,"readme_path":"README.md","readme_sha":"cabe6fb39b950b0b31e898948d939ec96e28e9ef","repo_read":"2026-11-11"},"edges":{"maintainers":[{"ref":"actor:netweaver1970","name":"Geert Steyaert","json":"/actors/netweaver1970.json"}],"contributors":[{"ref":"actor:netweaver1970","name":"Geert Steyaert","json":"/actors/netweaver1970.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}