Sap Adt MCP
概要
作者による説明(英語の原文)
Give Claude live access to SAP ABAP via ADT: read, search, check, test, and edit objects.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 138/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 検索・AIの記憶
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
SAP_ADT_MCP_CONFIG
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"sap-adt": {
"command": "npx",
"args": [
"-y",
"sap-adt-mcp"
],
"env": {
"SAP_ADT_MCP_CONFIG": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add sap-adt --env SAP_ADT_MCP_CONFIG=your-value -- npx -y sap-adt-mcp動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"sap-adt": {
"command": "npx",
"args": [
"-y",
"sap-adt-mcp"
],
"env": {
"SAP_ADT_MCP_CONFIG": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"sap-adt": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"sap-adt-mcp"
],
"env": {
"SAP_ADT_MCP_CONFIG": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
SAP_ADT_MCP_CONFIGenvAbsolute path to your config.json (host/client/user/password per SAP system). Defaults to ~/.sap-adt-mcp/config.json. See config.example.json in the repo.
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント yzonur で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5767件のうち0%よりスターが多い
- このカテゴリのほかの5767件のうち28%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5767件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Sap Adt MCPは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.8.57)がレジストリに届いたのは3 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
sap-adt-mcp
MCP server giving Claude (and any MCP-compatible client) live access to SAP systems via ADT.
Read source, search the repository, run syntax checks, run unit tests, run
ATC, diff the same object across landscapes, edit and activate ABAP — all
from a chat window or an autonomous agent. No add-on installation on the SAP
stack required.
Why
SAP development is full of repetitive read-the-source / check-the-callers / diff-the-system work. AI assistants are great at exactly that kind of task — but only if they can reach the system. ADT (ABAP Development Tools) is the HTTP API that Eclipse uses; it ships with every modern NetWeaver and S/4 system. This server speaks ADT on behalf of the agent so the agent can do real work against your real systems, with the same auth and scoping you'd give a developer in Eclipse.
What's in the box
50+ high-level tools wrapped around the most common ADT endpoints, plus a generic escape hatch for anything else, plus 5 user-invokable Clean Core prompts that turn the tool surface into outcome-shaped slash commands (see Clean Core prompts below).
| Category | Tools |
|---|---|
| Connection | adt_list_systems, adt_ping, adt_system_info |
| Source CRUD | adt_get_source, adt_set_source |
| Quality | adt_syntax_check, adt_pretty_print, adt_run_unit_tests, adt_run_atc, adt_run_atc_package, adt_run_atc_transport |
| Lifecycle | adt_create_object, adt_delete_object, adt_activate, adt_lock, adt_unlock, adt_list_inactive_objects |
| Versions | adt_list_versions, adt_compare_versions |
| Discovery | adt_browse_package, adt_list_packages, adt_search_objects, adt_grep_source, adt_where_used |
| CDS | adt_cds_data_preview, adt_cds_dependencies, adt_list_released_apis |
| Cross-system | adt_compare_source, adt_transport_diff |
| Transports | adt_list_transports, adt_get_transport, adt_create_transport, adt_release_transport, adt_transport_queue |
| Runtime errors | adt_list_dumps, adt_get_dump |
| Debugger | adt_debug_set_breakpoint, adt_debug_delete_breakpoint, adt_debug_listen, adt_debug_stack, adt_debug_variables, adt_debug_step, adt_debug_goto_stack, adt_debug_set_variable, adt_debug_set_watchpoint, adt_debug_delete_watchpoint, adt_debug_stop |
| Data | adt_read_table, adt_value_help |
| Generation | adt_rap_scaffold |
| Experimental¹ | adt_get_note, adt_check_note_status, adt_implement_note, adt_list_locks, adt_schedule_job, adt_read_spool |
| Escape hatch | adt_request |
¹ Experimental tools target ADT endpoints (SNOTE, SM12 enqueues, SM36/SP01) that classic NetWeaver does not expose; on such systems they return available:false with a fall-back hint rather than failing. They work where the backing service exists (typically S/4HANA).
Multi-system aware. One config, many SAP systems (DEV / QAS / PRD or landscape-wide); switch with the system argument or compare across two with adt_compare_source / adt_transport_diff.
Safe by default. A readOnly flag (global or per-system) blocks every write method. Read-only POST queries (search, where-used, package tree) remain allowed so agents can still discover.
Robust. Per-request timeout. CSRF token negotiation with auto-retry on
- Self-signed cert opt-out. Optional debug tracing to stderr.
Structured errors. ADT's envelopes are parsed into { type, message, namespace } so failed calls don't dump XML into the agent's context window.
Install
Previously published as
claude-for-abap— that package still works but is
deprecated; new installs should use
sap-adt-mcp.
# global
npm install -g sap-adt-mcp
or run without installing
npx sap-adt-mcp
Requires Node.js 22.19+ (undici v8, used as the HTTP client, requires this minimum).
Configure
Create your config:
mkdir -p ~/.sap-adt-mcp
cp config.example.json ~/.sap-adt-mcp/config.json $EDITOR ~/.sap-adt-mcp/config.json
The server searches in this order:
$SAP_ADT_MCP_CONFIG(absolute path)~/.sap-adt-mcp/config.json./config.json(cwd at server start)
Sample config
{
"defaultSystem": "DEV", "readOnly": false, "systems": { "DEV": { "host": "https://sap-dev.example.com:44300", "client": "100", "language": "EN", "user": "DEVELOPER", "password": "env:SAP_DEV_PASSWORD", "rejectUnauthorized": false }, "QAS": { "host": "https://sap-qas.example.com:44300", "client": "200", "user": "DEVELOPER", "password": "env:SAP_QAS_PASSWORD" }, "PRD": { "host": "https://sap-prd.example.com:44300", "client": "300", "user": "READONLY", "password": "env:SAP_PRD_PASSWORD", "readOnly": true } } }
Per-system options
| Field | Meaning |
|---|---|
host | Base URL including scheme + ICM HTTPS port (e.g. https://...:44300). |
client | SAP client (sets sap-client query param). |
language | Optional logon language (sets sap-language). |
user | RFC user. |
password | Either a literal string or env:VAR_NAME to read from environment. |
rejectUnauthorized | Set false to skip TLS validation for self-signed certs. Default true. |
readOnly | Block POST / PUT / DELETE / PATCH for this system (read-only POST queries still work). |
timeoutMs | Override default 30 s request timeout. |
Read-only mode
readOnly: true (top-level or per-system) refuses any unsafe HTTP method. Whitelisted read-only POST endpoints (nodestructure, search, usagereferences, parsers, checkruns) remain available so agents can still discover and analyze without being able to modify.
Recommended: set readOnly: true for QAS and PRD profiles. Keep DEV writable.
Self-signed certificates
Many internal SAP systems use self-signed certs. "rejectUnauthorized": false disables TLS validation for that profile only. Don't set this on PRD.
Audit log
Every write the server performs against SAP (POST/PUT/DELETE/PATCH — locks, source updates, activations, transport operations) is appended to a local JSONL file, including which MCP tool triggered it and, for blocked attempts in read-only mode, the violation itself. Reads and read-only queries are not logged. Nothing leaves your machine — this is your local answer to "what exactly did the AI change?".
Default location: ~/.sap-adt-mcp/audit.log. One JSON object per line:
{"ts":"2026-06-11T12:00:00.000Z","tool":"adt_set_source","host":"https://...","sapUser":"DEVELOPER","method":"PUT","path":"/sap/bc/adt/programs/programs/ztest/source/main","status":200,"ok":true,"transport":"E4DK900123"}
Configure or disable:
{ "audit": { "enabled": false, "path": "/var/log/sap-adt-mcp/audit.log" } }
…or set SAP_ADT_MCP_AUDIT=0 (also accepts false/no/off).
Result cache
Agents repeat the same discovery calls while they reason. Results of the read-only tools adt_search_objects, adt_browse_package, adt_list_packages, adt_where_used, adt_system_info and adt_value_help are cached in memory for 60 seconds per system and argument set. Any write this server performs drops the whole cache, so you never read back a stale result of your own change; changes made elsewhere (SAP GUI, Eclipse) can be up to one TTL old. A cached result carries _meta["sap-adt-mcp/cache"] = { hit: true, ageMs }.
{ "cache": { "ttlMs": 120000 } }
"ttlMs": 0 (or SAP_ADT_MCP_CACHE_TTL_MS=0) turns it off.
Automatic error reporting
The server sends small, redacted reports to the maintainer so defects get found and fixed. This is on by default and the server prints a notice saying so on startup. There are three channels:
- Crash — a tool handler throws an unexpected error.
- ADT error — a tool returns a non-2xx ADT response that the classifier flags as a likely tool bug (406/415 content negotiation, malformed requests, server dispatcher blow-ups). User/business-side responses (401/403/404, lock and enqueue conflicts, data-preview SQL errors) are not reported.
- Agent-reported — the calling agent files a defect the other two channels can't see (wrong data in a successful response, an ignored parameter, a missing capability) via the `adt_report_issue` tool.
What is sent: the sap-adt-mcp version, Node version, OS, the tool name, and the error/finding with a fingerprint for de-duplication, plus an anonymous install id (random bytes, cached at ~/.sap-adt-mcp/install-id) that lets repeat reports from the same install be grouped for triage — it identifies neither you nor your system. Before anything leaves your machine it is scrubbed of hostnames, users, passwords, tokens, IPs, and emails; tool arguments and free-text fields are redacted the same way. Reports go to a relay the maintainer owns, which files/de-dups a GitHub issue — the relay holds the GitHub credentials, never this package.
Turn it all off:
{ "reporting": { "enabled": false } }
…or set SAP_ADT_MCP_REPORT=0 (also accepts false/no/off). Finer control:
| Key | Default | Effect |
|---|---|---|
reporting.enabled | true | Master switch for all three channels. |
reporting.adtErrors | true | Channel 2 (auto-report flagged ADT errors). |
reporting.allowManual | true | Channel 3 (the adt_report_issue tool). |
reporting.includeArgs | true | Include redacted tool args / repro args. Note: object names can appear here. |
reporting.endpoint | relay URL | Point at your own relay (see worker/). |
Connect a client
Claude Code (CLI)
claude mcp add sap-adt -- npx sap-adt-mcp
Pass secrets through the registration:
claude mcp add sap-adt \
--env SAP_DEV_PASSWORD=... \ --env SAP_PRD_PASSWORD=... \ -- npx sap-adt-mcp
Claude Desktop
Edit claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": { "sap-adt": { "command": "npx", "args": ["-y", "sap-adt-mcp"], "env": { "SAP_DEV_PASSWORD": "..." } } } }
Quit and restart Claude Desktop fully (system tray → Quit) for the change to apply.
Validate before connecting
npx sap-adt-mcp --validate-config
Loads the config and pings every system; exits non-zero if any are unreachable or rejecting credentials. Run this first when troubleshooting.
Tools
Object-source CRUD
| Tool | Purpose | Notes |
|---|---|---|
adt_get_source | Fetch ABAP source by object name + type. | Returns plain text. For classes, pick the include via include: main (default), definitions, implementations, macros, testclasses. Function modules require group. For large objects, pass outputFile to write the source straight to disk (response omits inline source). |
adt_set_source | Replace source. Orchestrates lock → PUT → unlock. | Supply the new source inline via source, or via sourceFile (a local path the MCP reads itself) for large objects that exceed the per-call I/O cap. Optional transport assigns the change to a TR (corrNr); optional lockHandle reuses an externally-acquired lock. Refused under readOnly: true. |
| adt_create_object | Create a new ABAP object in a package. | Supported types: program, class, interface, include, functiongroup, function, cds, accesscontrol, metadataext, beh
冒頭だけを表示しています。続きはリポジトリで読めます