Install
$ agentstack add mcp-arc-mcp-arc1-adt-abap-mcp-ext ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
arc1-adt-abap-mcp-ext
[](https://github.com/marianfoo/arc1-adt-abap-mcp-ext/actions/workflows/build.yml) [](https://github.com/marianfoo/arc1-adt-abap-mcp-ext/releases) [](LICENSE)
Use Claude, GitHub Copilot, Cursor, or any MCP-capable AI client to read your ABAP system — without leaving Eclipse.
Drop one JAR into your Eclipse dropins/, turn on SAP's built-in MCP server, restart, point your AI client at http://localhost:2234/mcp — done. Your AI can now search ABAP repositories, read source code, list transports, inspect service bindings, and more.
> [!IMPORTANT] > Requires ABAP Development Tools (ADT) 3.60 or newer. Version 0.5.1 builds > on SAP's supported MCP server, which first shipped an activation surface in > ADT 3.60. For ADT 3.58 / 3.59 use plugin version ≤ 0.3.x instead (those > reflectively woke the then-dormant server).
What this actually does
As of ADT 3.60, SAP ships a supported MCP server inside Eclipse-for-ABAP. It's off by default and, on its own, only exposes SAP's own MCP tools. This plugin:
- Adds 18 read-only ABAP tools via SAP's documented Eclipse extension
point com.sap.adt.mcp.core.adtMcpTools — search, read source, object metadata, where-used, package/object structure, syntax check, unit tests, ATC, transports, and authenticated HTTP escape hatches.
- Logs you in automatically to your ABAP project (optional) so the AI can
reach the backend on the first call.
You enable SAP's server once (a preference toggle + one eclipse.ini line); this plugin's tools then register on it automatically every time it starts. No reflection, no internal hacks — just a standard tool contribution.
> [!NOTE] > This is a community plugin, not an official SAP product. It uses only the > documented extension point. SAP owns the server lifecycle (start/stop, port, > token); this plugin only contributes tools.
Quick install (5 minutes)
What you need first
- Eclipse for ABAP with ADT 3.60+ (check via Help → Installation Details)
- JDK 21 — comes bundled with Eclipse-for-ABAP, no separate install needed
- An ABAP project that you can log into (this plugin connects through it)
Step 1: Download the plugin JAR
From the latest release, grab com.arc1.mcp_0.5.1.jar.
Step 2: Drop it into Eclipse's dropins/ folder
| Platform | Path | |---|---| | macOS | ~/eclipse/java-2025-09/Eclipse.app/Contents/Eclipse/dropins/ | | Linux | ~/eclipse/java-2025-09/eclipse/dropins/ | | Windows | C:\eclipse\java-2025-09\eclipse\dropins\ |
> If your Eclipse is somewhere else, look for the dropins/ folder next to > your Eclipse executable (or one level up on macOS — inside the .app).
Step 3: Add one line to eclipse.ini
Find eclipse.ini (next to the Eclipse executable, or inside the macOS app bundle at Contents/Eclipse/eclipse.ini). Add this line at the very bottom, after the existing -vmargs block:
-DadtMcpServerPrefEnabled=true
This is SAP's flag that makes the MCP server auto-start on every boot. Without it, the server only runs while you keep the preference applied in the current session.
(Optional) if you want this plugin to auto-log-into a specific ABAP project, also add:
-Darc1.mcp.destination=YOUR_DESTINATION_ID
See [how to find your destination ID](#how-to-find-your-destination-id) below.
Step 4: Restart Eclipse with -clean
# macOS
pkill -f Eclipse
~/eclipse/java-2025-09/Eclipse.app/Contents/MacOS/eclipse -clean &
# Linux
pkill -f eclipse
~/eclipse/java-2025-09/eclipse/eclipse -clean &
> Windows: close Eclipse normally, then run eclipse.exe -clean from a > command prompt. The -clean flag is only needed once per plugin update.
Step 5: Turn on the MCP server (SAP preference page)
In Eclipse: Preferences → ABAP Development → MCP Server.
- Tick Enable ADT MCP Server.
- Leave Token blank and click Generate (or type your own long string).
- Port defaults to
2234— change it only if that port is taken. - Click Apply. You should see "ADT MCP Server started successfully."
Copy the Token value — you'll paste it into your AI client in the next section. (SAP shows it right there on the page; this plugin does not write a token file.)
Step 6: Verify it started
Window → Show View → Error Log. You should see (from SAP and from us):
ADT MCP Server started successfully.
ARC-1 MCP extension: tool contributions registered. The ADT MCP server is started by SAP ...
ARC-1 MCP extension: Auto-login succeeded for destination: YOUR_DESTINATION_ID
If you see those, you're done with the plugin install. Now connect a client.
Connect your AI client
Use the port and token from the preference page (default port 2234). Pick one client below:
GitHub Copilot (inside Eclipse or VS Code)
Preferences → GitHub Copilot → Model Context Protocol (MCP), paste:
{
"servers": {
"mcp-abap-server": {
"url": "http://localhost:2234/mcp",
"requestInit": {
"headers": {
"Authorization": "Bearer PASTE-TOKEN-FROM-PREFERENCE-PAGE"
}
}
}
}
}
Click Apply. Test it: open Copilot Chat, ask "use abap mcp server to search for ZARC1*".
Auto-approve the read-only tools (optional). Recent GitHub Copilot for Eclipse can pre-approve MCP tool calls so you aren't prompted on every call. In Preferences → GitHub Copilot → (MCP settings):
- MCP Server and Tool Approval (recommended) — expand the
abap-mcpserver
and tick the individual arc1_sap_* tools you want pre-approved. Every arc1_sap_* tool this plugin adds is read-only, so it's safe to auto-approve here. This works regardless of whether a tool advertises an annotation.
- Trust MCP tool annotations — auto-approves tools that advertise a read-only
hint, without confirmation. Convenient, but it only covers tools that set the hint, so the per-tool list above is the reliable way to cover the arc1_sap_* tools.
- Global Auto Approve → "Auto approve all tool calls" — approves everything
(terminal commands, file edits, all MCP tools) with no confirmation. SAP's own MCP surface alongside these read tools includes mutating ones (abap_transport-create, abap_generators-generate_objects, abap_activate_objects), so leave this off and prefer per-tool approval.
> Auto-approving read-only tools still lets the AI read your ABAP and send it to > the model on its own initiative — the same data flow you opt into by using the > server at all, just without the per-call prompt. It does not enable any writes.
Claude Code (CLI)
claude mcp add abap http://localhost:2234/mcp \
--header "Authorization: Bearer PASTE-TOKEN-FROM-PREFERENCE-PAGE" \
--transport http
Test it: claude and ask "list my ABAP destinations".
Cursor
Settings → MCP Servers → Add Server:
- Transport: HTTP
- URL:
http://localhost:2234/mcp - Headers:
Authorization: Bearer PASTE-TOKEN-FROM-PREFERENCE-PAGE
Claude Desktop
Claude Desktop only supports stdio MCP servers natively. Bridge it with mcp-remote:
{
"mcpServers": {
"abap": {
"command": "npx",
"args": [
"mcp-remote", "http://localhost:2234/mcp",
"--header", "Authorization: Bearer PASTE-TOKEN-FROM-PREFERENCE-PAGE"
]
}
}
}
How to find your destination ID
The destination ID is the internal name of your ABAP project's connection. It's not the SID; it looks like A4H_001_marian_en_1 (____).
Easiest: open ADT's Project Explorer. The name shown for your ABAP project is the destination ID. Copy it.
Other ways:
- Right-click ABAP project → Properties → ABAP Project
- Once the server is running, call
abap_list_destinations(SAP's built-in
tool) from your AI client and read the IDs back
If you skip -Darc1.mcp.destination=... entirely, the plugin auto-picks the first available ABAP project. Set it explicitly when you have multiple projects.
Troubleshooting
The MCP server never starts
- Make sure you ticked Enable ADT MCP Server under *Preferences → ABAP
Development → MCP Server* and clicked Apply.
- For auto-start on boot, confirm
-DadtMcpServerPrefEnabled=trueis in
eclipse.ini (under -vmargs) and you restarted. Without that flag, the server does not come back after an Eclipse restart.
- Port already taken by another process: change the port on the preference
page (e.g. 2235) and update the URL in your AI client config.
arc1_sap_* tools don't show up in tools/list (only SAP's tools do)
The plugin bundle didn't load. Check Help → About Eclipse → Installation Details → Plug-ins for com.arc1.mcp. If it's missing:
- Confirm the JAR is in
dropins/(not a subfolder), then restart with-clean. - Confirm your ADT version is 3.60+ — this plugin refuses to load on older
ADT (the OSGi requirement is [3.60.0,4.0.0)).
Tool calls return HTTP 401
The token your AI client sent doesn't match the one on the preference page. Open Preferences → ABAP Development → MCP Server, copy the Token value, and update the Authorization: Bearer ... header in your client config. Restart your AI client after changing its config. If the header is missing entirely, your client isn't sending Authorization at all — it must be named exactly Authorization with a value starting Bearer (with a space).
arc1_sap_search returns "Unable to initialize the ADT Discovery"
You're not logged into the ABAP project yet. In Project Explorer, expand your ABAP project — Eclipse will prompt for the password. Tick "Save password" so future restarts log in silently. (Or set -Darc1.mcp.destination=... so this plugin pre-logs-in for you.)
What you get — the tools
Plugin tools (18, all read-only)
Search + metadata (v0.1.0)
| Tool | What it does | |---|---| | arc1_sap_search | Quick search by name pattern. Wildcards * +. | | arc1_sap_repository_search | Search with filters: object types, packages, users, release states. | | arc1_sap_object_info | Metadata for one URI: name, type, package, description. | | arc1_sap_find_definition | Go-to-definition for an identifier in source. | | arc1_sap_list_projects | Workspace ABAP projects with login state. | | arc1_sap_system_info | Installed software components (SAP_BASIS release etc.), servers, clients. | | arc1_sap_object_types | Workbench object type catalog with URI templates and capabilities. |
Source reading + HTTP (v0.2.0)
| Tool | What it does | |---|---| | arc1_sap_read_source | Fetch ABAP source code for an object. CLAS includes supported. | | arc1_sap_http_get | Authenticated GET to any /sap/bc/adt/... endpoint (escape hatch). |
Transports + POST (v0.3.0)
| Tool | What it does | |---|---| | arc1_sap_list_transports | List transports with username / status / type filters. | | arc1_sap_http_post | Authenticated POST to any /sap/bc/adt/... endpoint (escape hatch). |
Navigation + structure + quality (v0.5.0)
| Tool | What it does | |---|---| | arc1_sap_where_used | Where-used / find references for an object (impact analysis). | | arc1_sap_package_contents | List the objects in a package (top-down exploration). | | arc1_sap_object_structure | Outline of an object: methods, attributes, events, includes. | | arc1_sap_list_inactive | List inactive (un-activated) objects on the system. | | arc1_sap_check_syntax | ABAP syntax check (no activation); can check proposed source transiently. | | arc1_sap_run_unit_tests | Run an object's ABAP Unit tests (executes them server-side). | | arc1_sap_atc_check | Run ABAP Test Cockpit static analysis and return findings. |
SAP's own MCP tools (alongside these)
When the server is running, SAP also contributes its own tools (the exact set depends on which ADT features are installed). On a typical S/4 ADT install that includes:
abap_list_destinations, abap_generators-list_generators, abap_generators-get_schema, abap_generators-generate_objects, abap_transport-get, abap_transport-create, abap_business_services-fetch_services, abap_business_services-fetch_service_information.
These are SAP's, not this plugin's — they ship and register on their own.
Verify everything works (full smoke test)
If you have the source checked out, pass the server URL + token from the preference page via environment variables:
git clone https://github.com/marianfoo/arc1-adt-abap-mcp-ext.git
cd arc1-adt-abap-mcp-ext
export ARC1_MCP_URL=http://localhost:2234/mcp # port from the preference page
export ARC1_MCP_TOKEN=PASTE-TOKEN-FROM-PREFERENCE-PAGE
./scripts/smoke-test.sh A4H_001_marian_en_1 # use your destination ID
This exercises all 18 plugin tools through the MCP protocol end-to-end and prints the responses.
Configuration reference
The MCP server's port, token, and on/off live in SAP's preference page (Preferences → ABAP Development → MCP Server) and the eclipse.ini flag -DadtMcpServerPrefEnabled=true. This plugin adds only two optional knobs, set via JVM -D flags in eclipse.ini:
| Property | Default | Purpose | |---|---|---| | arc1.mcp.destination | first ABAP project | Which destination to auto-login. | | arc1.mcp.autologin | true | Set false to skip auto-login. |
Build from source
git clone https://github.com/marianfoo/arc1-adt-abap-mcp-ext.git
cd arc1-adt-abap-mcp-ext
./build.sh # produces com.arc1.mcp_.jar
INSTALL=yes ./build.sh # also copies to your local Eclipse dropins/
No Maven, no Tycho. build.sh uses the JDK and SAP ADT JARs (3.60+) from your local Eclipse install (~/.p2/pool/plugins/). Build time: ~3 seconds.
How it works (deep dive)
- Architecture overview: [docs/architecture.md](docs/architecture.md)
- Why each design decision: [docs/decisions.md](docs/decisions.md)
- Underlying research (SAP bytecode analysis, ADT API maps): [docs/research/](docs/research/)
- Implementation plans (one per release): [docs/plans/](docs/plans/)
TL;DR: SAP designed the MCP server to be extended via the standard Eclipse extension point com.sap.adt.mcp.core.adtMcpTools. This plugin contributes 18 ` entries, which SAP's own ToolRegistrationService` picks up whenever the server starts. SAP owns activation (the preference page
-DadtMcpServerPrefEnabled=true); this plugin never touches the server
lifecycle.
FAQ
Is this an official SAP product?
No. It's a community plugin. See the note at the top.
Why do I need ADT 3.60?
ADT 3.60 is the first release where SAP shipped a way to turn the MCP server on (a preference page + startup flag) and a stable startMCPServer signature. Earlier releases (3.58/3.59) had the server but no activation surface — plugin versions ≤ 0.3.x handled those by reflectively waking it. 0.4.0 drops that and relies on SAP's supported activation, so it's 3.60+ only.
Does this read or modify my source code?
The 18 tools this plugin adds are read-only with respect to your repository — none create, change, or delete source. Two execute code on the backend without changing it: arc1_sap_run_unit_tests runs an object's ABAP Unit tests and arc1_sap_atc_check runs ATC static analysis (the same as the corresponding ADT menu actions). arc1_sap_check_syntax can validate proposed source transiently without saving it. SAP's own MCP tools may include genuinely mutating workflows (abap_generators-generate_objects, abap_transport-create). All of these use your normal SAP authorizations — same as the equivalent ADT UI action.
What about credentials / security?
- The MCP server binds to `l
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: arc-mcp
- Source: arc-mcp/arc1-adt-abap-mcp-ext
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.