Skip to content

feat(adt-mcp): Feature parity with vibing-steampunk — onboard essential MCP tool capabilities #100

@ThePlenkov

Description

@ThePlenkov

Overview

vibing-steampunk (vsp) is a Go-native MCP server that bridges SAP ADT REST APIs with AI coding assistants. It exposes 122 ADT operations as MCP tools (81 in "focused" mode). Our adt-mcp package currently exposes 17 tools.

This issue tracks the gap analysis and proposes a prioritised roadmap to onboard the most impactful features into our TypeScript-native toolset.


Current State: adt-mcp (17 tools)

Tool Description
discovery Discover available ADT services
system_info System / session information
search_objects Search ABAP objects by name pattern
get_object Retrieve object metadata
get_source Read source code (any object type)
update_source Write/update source code
activate_object Activate a single object
check_syntax Syntax check
run_unit_tests Execute ABAP Unit tests
get_test_classes List test classes of an object
list_package_objects List package contents
atc_run Run ATC checks
cts_list_transports List transports
cts_get_transport Get transport details
cts_create_transport Create transport (stub — not implemented)
cts_release_transport Release transport (stub — not implemented)
cts_delete_transport Delete transport

Gap Analysis vs. vibing-steampunk

🔍 1. Search & Grep

vsp exposes powerful in-system content search. We have only name-pattern search.

vsp tool Description Priority
GrepObjects Regex search across a list of ADT URIs with context lines High
GrepPackages Regex search across a package (and subpackages) High
GrepObject Regex search within a single object Medium

Impact: Lets AI agents do code-level discovery without reading every file individually. ADT endpoint: /sap/bc/adt/repository/informationsystem/search.


📖 2. Extended Read Operations

We have generic get_source but are missing several dedicated readers for non-source objects and data.

vsp tool Description Priority
GetTableContents Read table data with SQL WHERE filter + column selection + row limit High
RunQuery Execute freestyle ABAP SQL queries High
GetTable Read DDIC table / structure definition High
GetFunction Read function module source + signature Medium
GetFunctionGroup Read function group overview Medium
GetTransaction Read transaction metadata Low
GetTypeInfo Read ABAP type definition Low

Impact: GetTableContents and RunQuery alone dramatically improve debugging and data exploration workflows for AI agents.


🧭 3. Code Intelligence & Navigation

vsp exposes full ADT code-intelligence endpoints. We expose none of these.

vsp tool Description Priority
FindDefinition Navigate to definition of a symbol at position High
FindReferences Find all usages (where-used) for a symbol High
GetCallersOf Call hierarchy — upward traversal High
GetCalleesOf Call hierarchy — downward traversal High
GetObjectStructure Object explorer tree (methods, attributes, hierarchy) Medium
GetTypeHierarchy Super/sub-types of a class or interface Medium
CodeCompletion Code completion suggestions at a position Low

Impact: This is the single biggest capability gap for AI-assisted development. Finding usages and definitions allows agents to understand context without manual search.


✍️ 4. Object Lifecycle — Create & Delete

We have update_source but do not expose object creation or deletion via MCP.

vsp tool Description Priority
CreateObject Create ABAP objects (PROG, CLAS, INTF, FUGR, FUGR/FF, DEVC, DDLS, BDEF, SRVD, SRVB) High
DeleteObject Delete an ABAP object High
CreatePackage Create a local () or transportable package Medium
CreateTable Create a DDIC table from JSON definition Low

Impact: Without create/delete, AI agents cannot scaffold new development objects end-to-end.


🔄 5. Object Management — Clone, Rename, Move

Higher-level refactoring operations.

vsp tool Description Priority
CloneObject Copy object to a new name (PROG, CLAS, INTF) Medium
RenameObject Rename an object (creates copy) Medium
MoveObject Move object to a different package Medium

✅ 6. Quality & Activation Improvements

We have single-object activate and syntax check. Missing batch and formatting.

vsp tool Description Priority
ActivatePackage Batch-activate all inactive objects in a package High
PrettyPrint Format ABAP source code via SAP pretty printer Medium
SetPrettyPrinterSettings Configure pretty printer (indent, keyword case…) Low
GetPrettyPrinterSettings Read current pretty printer settings Low

🚀 7. Transport Management — Completions

Our CTS tools have stub implementations.

Feature Status in adt-mcp Priority
cts_create_transport Stub — backend not implemented High
cts_release_transport Stub — backend not implemented High
Transport object assignment Not exposed Medium
Transport owner/reassign Not exposed Low

🔒 8. Locking API Exposure

Object locking is done implicitly inside update_source but not exposed as dedicated MCP tools, which limits fine-grained AI workflows.

vsp tool Description Priority
LockObject Acquire an edit lock (returns lock handle) Medium
UnlockObject Release a lock handle Medium

🌐 9. RAP / OData / CDS Pipeline Support

vsp has comprehensive end-to-end RAP support (CDS, BDEF, SRVD, SRVB), including service binding publish/unpublish.

vsp tool / capability Description Priority
CDS / DDLS source read via get_source Partial — object type routing needed Medium
BDEF / SRVD / SRVB create + write End-to-end RAP scaffolding Medium
PublishServiceBinding Activate and publish OData service Medium
UnpublishServiceBinding Unpublish an OData endpoint Low

🧪 10. Execute Arbitrary ABAP Code

vsp implements ExecuteABAP — wraps user code in a temporary unit test and runs it.

Feature Description Priority
execute_abap Run ad-hoc ABAP snippets via unit test wrapper Medium

Security note: Must be opt-in via explicit config flag, with risk-level controls (harmless / dangerous / critical).


🖥️ 11. System & Feature Introspection

vsp tool Description Priority
GetInstalledComponents List installed software components with versions Medium
GetFeatures Probe system for available features (abapGit, RAP, AMDP, UI5, CTS) Medium

🔮 12. Debugging (Experimental / Long-term)

vsp implements debugging via a custom ABAP WebSocket handler (ZADT_VSP) that must be installed on the SAP system. This is complex and experimental even in vsp.

vsp tool Description Priority
SetBreakpoint / GetBreakpoints / DeleteBreakpoint Breakpoint management Low
DebuggerListen / DebuggerAttach Attach to debugger session Low
DebuggerStep / DebuggerGetStack / DebuggerGetVariables Interactive step-debug Low
AMDPDebugger* HANA/SQLScript AMDP debugging Low

Note: This requires a custom ABAP package (ZADT_VSP) installed on the SAP system. The standard ADT debugger is highly session-stateful and complex to operate over HTTP. Recommend tracking separately once core features are complete.


🎨 13. UI5 / BSP (Partial, Future)

vsp exposes read-only UI5/BSP operations. Write operations are blocked by ADT's read-only filestore (requires a different API).

vsp tool Description Priority
UI5ListApps List BSP/Fiori applications Low
UI5GetApp Get app details Low
UI5GetFile Read a UI5 file Low

🌿 14. abapGit Integration

vsp has abapGit detection and export tooling. We have some abapGit serialization in adt-plugin-abapgit.

vsp tool / feature Description Priority
GetGitTypes List objects eligible for abapGit export Medium
GitExport Export package in abapGit format Medium
InstallAbapGit Install abapGit on the SAP system Low

Priority Summary

🔴 High Priority (most value for AI-assisted development)

  • #H1 grep_objects / grep_packages — in-system regex search
  • #H2 get_table_contents / run_query — table data and SQL access
  • #H3 get_table — DDIC table/structure definition reader
  • #H4 find_definition + find_references — code navigation (where-used, go-to-def)
  • #H5 get_callers_of + get_callees_of — call hierarchy traversal
  • #H6 create_object + delete_object — full object lifecycle
  • #H7 activate_package — batch activation of inactive objects
  • #H8 Complete cts_create_transport and cts_release_transport backend implementations

🟡 Medium Priority (significant quality-of-life improvements)

  • #M1 get_function + get_function_group — function module reader
  • #M2 get_object_structure + get_type_hierarchy — structural navigation
  • #M3 lock_object / unlock_object — explicit lock API
  • #M4 clone_object / rename_object / move_object — refactoring
  • #M5 pretty_print — ABAP code formatting
  • #M6 create_package — create development packages
  • #M7 execute_abap — run arbitrary ABAP snippets (opt-in, gated)
  • #M8 get_installed_components + get_features — system introspection
  • #M9 RAP pipeline: publish_service_binding + CDS/BDEF/SRVD/SRVB create
  • #M10 git_export / get_git_types — abapGit MCP exposure

🟢 Low Priority (specialized or experimental)

  • #L1 code_completion at position
  • #L2 Pretty printer settings (get/set)
  • #L3 get_transaction / get_type_info
  • #L4 create_table (DDIC from JSON)
  • #L5 Debugging tools (SetBreakpoint, DebuggerListen, …) — requires ZADT_VSP on SAP
  • #L6 AMDP debugging — experimental, requires HANA
  • #L7 UI5 / BSP read tools
  • #L8 Transport refinements (owner, reassign)

Implementation Notes

Architecture Alignment

  • All new tools should follow the existing pattern in packages/adt-mcp/src/lib/tools/: one file per tool, registerXxxTool(server, ctx) export, zod schema for inputs
  • New ADT client calls should go through adt-contracts (speci descriptors) and adt-client for full type safety
  • Heavy write operations should follow the lock → write → unlock → activate cycle already established in adk

Safety / Gating

  • Destructive operations (delete_object, execute_abap, create_table) must be gated behind explicit opt-in config flags, matching the safety philosophy in vsp
  • SQL / run_query should be opt-in (read-only by default)

Phasing

Recommend tackling in this order:

  1. Grep + Table Data (#H1, #H2, #H3) — high value, lower complexity
  2. Code Navigation (#H4, #H5) — high value, ADT endpoints are well-known
  3. Object Lifecycle (#H6, #H7) — enables full scaffolding
  4. Transport completions (#H8) — removes existing stubs
  5. Medium priority items as bandwidth allows

References

Metadata

Metadata

Labels

kilo-duplicateAuto-generated label by Kilokilo-triagedAuto-generated label by Kilo

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions