Skip to main content
Glama
Leonkhchen

abap-adt-mcp

by Leonkhchen

abap-adt-mcp

Claude Code / Codex 直接連接 SAP ABAP ADT(ABAP Development Tools)REST API 的獨立 MCP server —— 不需要 VS Code、不需要 Eclipse,且具備完整讀寫能力

Claude Code ◄── stdio (MCP) ──► abap-adt-mcp ◄── HTTPS (ADT REST) ──► SAP 系統

為什麼做這個?

vscode_abap_remote_fs 是很棒的專案,但它的 MCP 模式有兩個限制:必須開著 VS Code 作為橋接層,而且 MCP 工具是唯讀的。市面上其他 standalone 方案則多半把 ADT API 一對一薄包裝,把 lock/unlock 等底層步驟直接丟給 AI 操作,容易出錯並留下殘留鎖定。

本專案的設計理念:封裝成「AI 友善」的高階工作流程工具。

  • write_source 一個工具內部自動完成:讀取現況 → 並行衝突檢查 → 語法檢查 → lock → 寫入 → unlock(try/finally 保證釋放)

  • 錯誤訊息經過翻譯,附帶可行動的建議(例如「請檢查 SICF 節點 /sap/bc/adt」),AI 能自行修正

  • 安全優先:唯讀模式、prod 系統強制唯讀、Z*/Y* 前綴白名單、audit log

Related MCP server: abap-adt-mcp

功能(MVP)

工具

說明

ping_system

連線測試與診斷

search_objects

萬用字元搜尋 ABAP 物件

browse_package

瀏覽 package 內容

get_object_structure

物件結構(methods / includes)

read_source

讀取原始碼(含行號、分段讀取、截斷保護)

syntax_check

語法檢查(免鎖定)

list_transports

查詢可用 transport requests

write_source

✏️ 寫入原始碼(自動鎖定編排 + 並行保護 + 可選啟用)

activate_object

✏️ 啟用物件

✏️ = 寫入工具,唯讀模式下不會註冊(AI 完全看不到)。

系統需求

  • Node.js ≥ 20

  • SAP 系統已啟用 ADT(SICF 節點 /sap/bc/adt)— 已在 S/4HANA 2022 / ABAP 7.56 上以此為目標開發

  • SAP 使用者具備開發權限(S_DEVELOP)

快速開始(Claude Code)

# 1. 安裝
git clone https://github.com/<your-account>/abap-adt-mcp.git
cd abap-adt-mcp
npm install && npm run build

# 2. 註冊到 Claude Code(密碼建議用環境變數帶入,勿寫死)
claude mcp add abap \
  --env SAP_URL=https://your-sap-host:44300 \
  --env SAP_CLIENT=100 \
  --env SAP_USER=DEVELOPER \
  --env SAP_PASSWORD="$SAP_PASSWORD" \
  --env ABAP_MCP_SYSTEM_ROLE=dev \
  -- node /絕對路徑/abap-adt-mcp/dist/index.js

# 3. 在 Claude Code 中測試
# > 請用 ping_system 確認 SAP 連線

詳細設定(含 Codex、自簽憑證、唯讀模式)請見 docs/SETUP.md

環境變數

變數

必填

預設

說明

SAP_URL

例如 https://host:44300

SAP_USER / SAP_PASSWORD

SAP 帳密(僅從環境變數讀取)

SAP_CLIENT

''

例如 100

SAP_LANGUAGE

EN

登入語言

ABAP_MCP_READONLY

false

true 時不註冊寫入工具

ABAP_MCP_SYSTEM_ROLE

dev

dev/qa/prod;prod 強制唯讀

ABAP_MCP_ALLOWED_PREFIXES

Z,Y,$

可寫入的物件名稱前綴白名單

ABAP_MCP_ALLOW_SELF_SIGNED

false

允許自簽憑證(限內網開發系統)

ABAP_MCP_AUDIT_LOG

(停用)

寫入操作稽核紀錄檔路徑

ABAP_MCP_MAX_SOURCE_LINES

5000

read_source 回傳行數上限

安全設計

AI 直接寫入 SAP 系統風險很高,本專案內建多層防護,詳見 docs/SECURITY.md:

  1. 唯讀模式 — 寫入工具不註冊,而非「註冊後拒絕」

  2. prod 強制唯讀 — 設定 ABAP_MCP_SYSTEM_ROLE=prod 後無法以任何方式覆寫

  3. 前綴白名單 — 預設僅允許 Z* / Y* / $(本機物件),保護 SAP 標準物件

  4. 並行保護 — 寫入前比對先前讀取的版本,避免蓋掉他人變更

  5. 寫入前語法檢查 — 預設不讓語法錯誤的程式碼進系統

  6. Audit log — JSON Lines 紀錄所有寫入操作(不含憑證與原始碼內容)

  7. 鎖定保證釋放 — try/finally,不留殘留鎖定

開發

npm run build   # tsc 編譯
npm test        # vitest 單元測試(不需 SAP 系統)

Roadmap

  • Phase 2:create_object、ABAP Unit 測試、ATC、where-used

  • Phase 3:SQL 資料查詢(Data Preview)、ST22 dump 分析、DDIC 資訊

  • Phase 4:BTP ABAP Environment(JWT / Service Key)

致謝

License

MIT

Available Tools

9 tools
activate_object啟用物件C

啟用(activate)指定的 ABAP 物件,回傳啟用結果與錯誤訊息(若有)。

ParametersJSON Schema
NameRequiredDescriptionDefault
object_urlYes物件 URI,例如 /sap/bc/adt/oo/classes/zcl_demo
object_nameNo選填:物件名稱;省略時由 URI 推導

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states that activation returns a result and errors, but fails to mention that this is a mutating operation that changes the system state (activating an object), which may require certain authorizations or have side effects. The description is minimal and does not alert the agent to potential impacts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, very concise, and front-loaded with the key action. However, it may be too terse for a complex operation, missing critical information like side effects and usage context. It is efficient but could benefit from more detail without sacrificing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and the complexity of ABAP object activation (which may fail due to dependencies or errors), the description does not provide enough context. It does not explain what the activation result format is, potential failure modes, or necessary preconditions. Sibling tools like syntax_check suggest activation might follow validation, but no such relationship is indicated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both parameters. The description adds no additional meaning beyond what is in the schema. Baseline 3 is appropriate as the description does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('activate'), the resource ('ABAP object'), and the output (result and error messages). It distinguishes the tool from siblings like read_source and write_source, which perform different operations. The verb '啟用(activate)' is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternative tools, such as syntax_check for verification or write_source for editing. Prerequisites like object existence or transport request assignment are not mentioned. The description does not advise when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_package瀏覽 Package 內容B

列出指定 package(開發類別)內的所有物件,例如 ZFI_TOOLS 或 $TMP。

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesPackage 名稱,例如 ZFI_TOOLS、$TMP

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It lacks details about read-only nature, permissions, output format, or pagination. Very minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no wasted words, appropriately front-loaded. Could be slightly more informative but not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and description does not explain return values or any filtering. Adequate for a simple list operation but incomplete for a comprehensive understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter that has a description. The description adds an example but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all objects in a specified package, using a specific verb (list) and resource (package objects). It is distinct from siblings like get_object_structure and search_objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no exclusions or context provided. Only states the basic action with examples.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_object_structure取得物件結構A

取得 ABAP 物件的結構資訊(class 的 methods/includes、program 的組成等)與 source URI。

ParametersJSON Schema
NameRequiredDescriptionDefault
object_urlYes物件的 ADT URI,例如 /sap/bc/adt/oo/classes/zcl_demo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It mentions retrieving structure info and source URI, but does not disclose any behavioral traits (e.g., read-only nature, auth requirements, side effects, rate limits). It adds minimal context beyond the purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose and key details. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description covers the basic function but could be more complete by elaborating on what 'structure information' includes (e.g., format, hierarchical details). Adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'object_url' is fully described in the schema (100% coverage) with an example. The description adds no additional meaning beyond what the schema provides, so baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves structure information of ABAP objects, with specific examples like class methods/includes and program composition. This distinguishes it from siblings like read_source (source code) and browse_package (package browsing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when one needs structure info and source URI, but does not explicitly state when to use this tool versus alternatives like read_source or search_objects. No guidance on when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_transports查詢 Transport RequestsA

列出使用者可用的(modifiable)workbench transport requests,供 write_source 指定使用。

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo選填:SAP 使用者帳號,預設為登入帳號

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that only 'modifiable' and 'available' transports are listed, but omits details on authentication, rate limits, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys the tool's purpose and context, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks an output schema and doesn't explain the format or structure of the returned transport requests. However, given the simple single-parameter input, it is adequate for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter 'user' is already described in the schema as optional with a default. The description adds no additional semantic meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists 'modifiable workbench transport requests' for the user, and specifies it is for use by 'write_source', distinguishing it from sibling tools like read_source and write_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is a prerequisite for 'write_source', providing contextual usage. However, it does not explicitly state when not to use it or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ping_system測試 SAP 連線A

測試與 SAP 系統的 ADT 連線是否正常,回傳系統 URL、登入帳號與目前的安全模式。連線異常時會回傳診斷建議。建議在開始任何工作前先呼叫一次。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description covers what it does and its read-only nature. It doesn't discuss rate limits or permissions, but for a simple check, it is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences in Chinese, concise and front-loaded with purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and simple function, the description is complete: tells what it does, returns, and when to use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so description does not need to add meaning beyond schema. Baseline 4 as per instructions for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it tests ADT connectivity to SAP system, returns specific info (URL, login, security mode), and provides diagnostics on failure. It distinguishes from sibling tools which are all for specific operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly suggests calling it before starting any work, providing clear usage context. It lacks explicit alternatives but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_source讀取原始碼A

讀取 ABAP 物件的原始碼。可傳入物件 URI(自動解析 main include)或完整 source URI。回傳內容含行號,超過上限時會截斷並標註。

ParametersJSON Schema
NameRequiredDescriptionDefault
end_lineNo選填:結束行(含)
object_urlYes物件 URI 或 source URI,例如 /sap/bc/adt/oo/classes/zcl_demo
start_lineNo選填:起始行(1-based)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It reveals that the tool auto-resolves the main include, returns line numbers, and truncates with a marker. This adds useful context beyond a simple read operation, though the truncation limit is unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose, key features, and limitations. No extraneous information; every sentence is purposeful. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the main functionality and return content (line numbers, truncation), it omits details like error handling (e.g., object not found), output format examples, and specific limits. Without an output schema, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that object_url accepts either object URI (with auto-resolve) or full source URI, and that start_line/end_line are optional. This provides extra context not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads ABAP object source code, specifying verb and resource. It distinguishes from siblings like write_source by focusing on reading, and adds detail about automatically resolving main includes and returning line numbers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (reading source code) but does not explicitly state when to use or exclude alternatives. No direct comparison to sibling tools such as search_objects or get_object_structure is provided, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_objects搜尋 ABAP 物件A

以名稱(支援 * 萬用字元)搜尋 ABAP 物件,例如 'ZCL_INVOICE*'。回傳物件名稱、類型、package 與 ADT URI(後續工具皆以此 URI 操作)。

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes搜尋字串,支援萬用字元,例如 ZCL_* 或 Z*PRICING*
max_resultsNo最多回傳筆數,預設 30
object_typeNo選填:限定物件類型,例如 CLAS/OC(class)、PROG/P(program)、INTF/OI(interface)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the return values (name, type, package, URI) and implies a read-only search. No side effects are mentioned, which is acceptable for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences that front-load the action and resource, with zero wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the return structure (name, type, package, URI) and gives an example, but does not mention pagination or error scenarios. For a simple search tool with 3 parameters and no output schema, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description's example 'ZCL_INVOICE*' reinforces the wildcard usage but adds little beyond the schema descriptions for query, max_results, and object_type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '搜尋' (search), resource 'ABAP 物件', and the method '以名稱(支援 * 萬用字元)', distinguishing it from siblings which operate on specific objects (e.g., read_source, activate_object).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by noting that returned URIs are used by subsequent tools, but does not explicitly state when not to use or mention alternatives like browse_package.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

syntax_check語法檢查A

對指定的原始碼內容執行 ABAP 語法檢查(不需要鎖定、不會修改系統)。可用來在寫入前先驗證修改後的程式碼。

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNo要檢查的原始碼內容;省略時檢查系統上目前的版本
object_urlYes物件 URI,例如 /sap/bc/adt/oo/classes/zcl_demo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and explicitly states 'no lock needed, does not modify system', clearly communicating behavioral traits (read-only, safe operation). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence (30 characters) that is front-loaded with the tool's purpose. Every word is essential, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers purpose and behavior, it lacks details about the output (e.g., syntax errors or warnings) and does not explain what happens when errors are found. Given no output schema, this is a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description does not add additional meaning beyond what is already in the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'perform syntax check' on the resource 'specified source code' and distinguishes from write tools by noting it does not modify the system. It also gives a concrete use case: verifying modified code before writing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says it can be used to verify code before writing, providing clear context. However, it does not discuss when not to use it or compare directly with sibling tools like read_source or write_source, which would strengthen guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_source寫入原始碼(自動鎖定)A

修改 ABAP 物件的原始碼。內部自動完成:讀取現況 → 並行檢查 → 鎖定 → 寫入 → 解鎖,失敗時保證釋放鎖定。建議流程:先 read_source 取得現況,修改後將舊內容放入 expected_current_source 以啟用並行保護,再呼叫本工具。預設會先做語法檢查,有語法錯誤時不寫入。

ParametersJSON Schema
NameRequiredDescriptionDefault
activateNo寫入成功後立即啟用(預設 false)
transportNoTransport request 編號;$TMP 本機物件可省略
new_sourceYes完整的新原始碼(整份取代,不是 diff)
object_urlYes物件 URI,例如 /sap/bc/adt/oo/classes/zcl_demo
skip_syntax_checkNo跳過寫入前語法檢查(預設 false;不建議跳過)
expected_current_sourceNo先前 read_source 讀到的內容;提供時若系統內容已被他人改動會中止寫入

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the internal process: read, concurrency check, lock, write, unlock, guaranteed release on failure. Also explains default syntax check and that syntax errors prevent writing. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with purpose, and structured logically. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 params and no output schema or annotations, the description covers key aspects: workflow, concurrency, syntax check. Lacks return value details but that's acceptable without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining expected_current_source for concurrency protection and that new_source is a full replacement, not a diff.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool modifies ABAP object source code, with a specific verb and resource. It distinguishes from siblings by recommending a prior read_source call and describing the internal locking process.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a recommended workflow: read_source first, then modify and use expected_current_source for concurrency protection. Implicitly suggests when to use (writing source) but no explicit when-not-to-use or comparison to siblings like syntax_check.

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. 9 tool updatesv0.1.0
    • First observedactivate_object
    • First observedbrowse_package
    • First observedget_object_structure
    • First observedlist_transports
    • First observedping_system
    • First observedread_source
    • First observedsearch_objects
    • First observedsyntax_check
    • First observedwrite_source

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

All 9 tools have clearly distinct purposes, from system testing and searching to reading, writing, syntax checking, and activating objects. There is no overlap or ambiguity between any tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., activate_object, list_transports, syntax_check). No mixing of conventions or irregular names.

Tool Count5/5

With 9 tools, the set is well-scoped for an ABAP development server, covering the essential workflow without being bloated or sparse. Each tool has a clear role.

Completeness4/5

The tools cover the core lifecycle: search, browse, read, write, syntax check, activate, transport management, and system ping. Minor gaps like delete or rename operations are missing, but the primary workflow is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.
    24
    342
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to work with SAP ABAP systems through the ADT REST API, supporting repository search, source code read/write, activation, syntax checks, and transport request management.
    Apache 2.0