Skip to main content
Glama
xiaoliang2

dsh-abap-mcp

by xiaoliang2

dsh-abap-mcp

⚠️ 実験段階 · EXPERIMENTAL

本プラグインはまだ実験段階(Experimental)であり、開発/テスト(Dev / Test)環境専用です。

  • 本番システムに直接接続しないでください。 デフォルトでは読み取り専用でも、読み取り専用ツールで本番システムのソースコードや業務データを読み取ることができます。

  • 最小権限(least-privilege)の SAP アカウント で接続してください。

  • 書き込み権限スイッチ(sourceWrite / transports / refactor / exec / git / debug / serviceBinding)はデフォルトですべて無効で、開発システム上でのみ必要に応じて慎重に有効化してください。

  • パスワードはローカルの settings.yaml平文で書き込まれるため、認証情報のセキュリティに注意してください。

本プラグインの使用により、上記のリスクを理解し、自己責任で使用することに同意したものとみなされます。

DeepSeek Harness プラグイン:MCP を介して SAP ABAP ADT に接続し、DSH 内で SAP の ABAP オブジェクトを直接照会・閲覧できます。デフォルトでは厳格な読み取り専用で、7 種類の書き込み権限は設定可能なスイッチとして提供されます。

アップストリームサーバー:mario-andreschak/mcp-abap-abap-adt-api 本プラグインは server/ 内に権限レイヤーを追加したサーバーコピー(デフォルト読み取り専用 + スイッチ)を内蔵し、接続、ツール登録、設定変更に伴う再接続を担当します。


アーキテクチャ

DSH 设置页卡片(ABAP MCP)
        │  settingsScope.set(...)   ←→  settings/updated
        ▼
Host 插件 lib/index.js
  1. settings.register("abap-mcp", schema)   # 连接配置 + 7 类权限开关 + 状态
  2. spawn `node server/dist/index.js`(StdioClientTransport,env=SAP_* + MCP_ABAP_PERMISSIONS)
  3. MCP Client 连接,把服务器工具注册为 mcp__abap__<tool>
  4. 配置变更 → 去抖重连;连接断开 → 有界退避重试
        ▼
server/dist/index.js(MCP 服务器,权限在这里强制生效)
  - MCP_ABAP_PERMISSIONS 未设置 → 默认只读(约 75 个只读工具)
  - 7 类写权限通过 MCP_ABAP_PERMISSIONS 的 JSON 开关启用
  • 権限の単一情報源はサーバー側:Host はスイッチ値をサーバーに透過するだけで、ツールリストと呼び出しは権限に基づいてフィルタリング/拒否されます。DSH を迂回してサーバーに直接接続しても、権限は有効です。

  • ツール命名:mcp__abap__<ツール名>(例:mcp__abap__searchObject)。

Related MCP server: vibing-steampunk

権限モデル(デフォルト = 厳格な読み取り専用)

権限モデルは server 側で強制されます(server/src/permissions.tsdist/permissions.js)。デフォルトの読み取り専用コアは常に有効で、7 種類の書き込み権限はデフォルトで全て無効、MCP_ABAP_PERMISSIONS 環境変数でカテゴリごとに有効化します。未登録のツールはすべて拒否(deny-by-default)され、新しく追加されたハンドラが黙って開放されることはありません。

読み取り専用コア(約 75 ツール、常時有効)

サブグループ

ツール

説明

認証 / セッション

login logout dropSession

ログイン / ログアウト / ローカルセッションキャッシュのクリア

オブジェクト探索

objectStructure searchObject findObjectPath objectTypes reentranceTicket

オブジェクト構造の照会 / 検索 / パス特定 / オブジェクトタイプ / 再入チケット

クラスイントロスペクション

classIncludes classComponents

クラスの include 構成 / コンポーネント一覧

コード分析(読み取り専用)

syntaxCheckCode syntaxCheckCdsUrl codeCompletion findDefinition usageReferences syntaxCheckTypes codeCompletionFull codeCompletionElement usageReferenceSnippets fixProposals fixEdits fragmentMappings abapDocumentation

構文チェック / 補完 / 定義ジャンプ / 参照照会 / 修正提案 / ドキュメント(読み取り専用)

ソースコード読み取り

getObjectSource

オブジェクトソースの読み取り

非アクティブオブジェクト

inactiveObjects

未アクティブ化オブジェクトの一覧

登録 / 検証

objectRegistrationInfo validateNewObject

オブジェクト登録情報 / 新規オブジェクトパラメータ検証(読み取り専用)

トランスポート読み取り

transportInfo hasTransportConfig transportConfigurations getTransportConfiguration userTransports transportsByConfig systemUsers transportReference

トランスポートリクエスト情報 / ユーザートランスポート / 設定 / システムユーザー(読み取り専用)

リポジトリブラウズ

nodeContents mainPrograms

オブジェクトツリーブラウズ / include メインプログラム

機能 / ディスカバリ

featureDetails collectionFeatureDetails findCollectionByUrl loadTypes adtDiscovery adtCoreDiscovery adtCompatibiliyGraph

ADT 能力ディスカバリ / 機能照会

単体テスト結果読み取り

unitTestEvaluation unitTestOccurrenceMarkers

単体テスト結果の評価 / マーカー位置(読み取り専用)

フォーマット設定読み取り

prettyPrinterSetting

フォーマット設定の読み取り(変更なし)

Git 読み取り

gitRepos gitExternalRepoInfo checkRepo remoteRepoInfo

リポジトリ一覧 / リモート情報 / チェック(読み取り専用)

DDIC 読み取り

annotationDefinitions ddicElement ddicRepositoryAccess packageSearchHelp

アノテーション / DDIC 要素 / パッケージ検索(読み取り専用)

サービスバインディング詳細

bindingDetails

サービスバインディング詳細(読み取り専用)

データ読み取り

tableContents runQuery

テーブルデータ / SQL クエリ(読み取り専用)

Feeds / Dumps

feeds dumps

動的オブジェクト一覧 / 短いダンプ一覧

リネーム分析

renameEvaluate renamePreview

リネーム評価 / プレビュー(実行のみで書き込みなし)

ATC 読み取り

atcCustomizing atcCheckVariant atcWorklists atcUsers isProposalMessage atcContactUri

ATC チェック設定 / バリアント / ワークリスト / ユーザー / 連絡先(読み取り専用)

トレース読み取り

tracesList tracesListRequests tracesHitList tracesDbAccess tracesStatements

トレース一覧 / リクエスト / ヒット / DB アクセス / ステートメント(読み取り専用)

リビジョン / ヘルス

revisions healthcheck

オブジェクトリビジョン履歴 / 接続ヘルスチェック

7 種類の書き込み権限(デフォルトすべて無効)

スイッチ

サブカテゴリ

ツール

説明

sourceWrite

ソース書き込み

setObjectSource deleteObject activateObjects activateByName createObject createTestInclude lock unLock

ソース書き込み / オブジェクト削除 / アクティベート / オブジェクト作成 / テストインクルード作成 / ロックとロック解除

transports

トランスポート要求

createTransport setTransportsConfig createTransportsConfig transportDelete transportRelease transportSetOwner transportAddUser

作成 / 設定 / 削除 / リリース / 責任者変更 / ユーザー追加

refactor

リファクタリング

renameExecute extractMethodEvaluate extractMethodPreview extractMethodExecute prettyPrinter setPrettyPrinterSetting

名前変更実行 / メソッド抽出(評価/プレビュー/実行)/ フォーマット(読み書き)

exec

実行系

runClass unitTestRun

ABAP クラス実行 / 単体テスト実行

ATC 書き込み操作

createAtcRun atcExemptProposal atcRequestExemption atcChangeContact

ATC チェック開始 / 免除提案 / 免除要求 / 連絡先変更

トレース設定

tracesSetParameters tracesCreateConfiguration tracesDeleteConfiguration tracesDelete

トレースパラメータ設定 / 設定作成 / 設定削除 / レコード削除

git

Git 書き込み操作

gitCreateRepo gitPullRepo gitUnlinkRepo stageRepo pushRepo switchRepoBranch

リポジトリ作成 / プル / リンク解除 / ステージ / プッシュ / ブランチ切り替え

debug

デバッグ

debuggerListeners debuggerListen debuggerDeleteListener debuggerSetBreakpoints debuggerDeleteBreakpoints debuggerAttach debuggerSaveSettings debuggerStackTrace debuggerVariables debuggerChildVariables debuggerStep debuggerGoToStack debuggerSetVariableValue

リスナー / ブレークポイント / アタッチ / ステップ / スタック / 変数の読み書き

serviceBinding

サービスバインディング

publishServiceBinding unPublishServiceBinding

OData サービスバインディングの公開 / 公開解除

説明:読み取り専用コア内の「ATC 読み取り」「トレース読み取り」「Git 読み取り」「トランスポート読み取り」は読み取りのみ可能。対応するカテゴリ内の書き込みツール(チェック開始、設定変更、コードプッシュ、サービス公開など)には権限が必要。名前変更前にプレビューのみ行う場合(renameEvaluate/renamePreview)は読み取り専用で、実際に実行する場合(renameExecute)のみ refactor が必要。

権限の手動確認(AI による権限の自動有効化を防止)

任意の権限スイッチを有効にする際、プラグインは手動確認を要求する:設定ページのカードでチェックを入れると、一回限りの確認資格情報confirm-<タイムスタンプ>-<ランダム文字列>)が生成され設定に書き込まれる。Host 側は資格情報が新しい(60 秒以内)かつ形式が正しい場合にのみ、対応するモードでの接続を許可する。それ以外の場合は強制的に読み取り専用へフォールバックし、ステータスに「設定カードで手動確認が必要」と表示する。この仕組みは全 7 種類の権限スイッチ(sourceWrite / transports / refactor / exec / git / debug / serviceBinding)を一律にカバーする。

  • 権限は設定ページのカードからのみ有効化できるsettings API / settings.yaml の直接変更 / 会話中にモデルに permissions を変更させる方法で有効化しようとすると、有効な資格情報がないため拒否される。

  • 資格情報は 60 秒の有効期限があり、再起動後は自動的に失効するため、カードで再度操作する必要がある。

  • 全権限を無効化(全オフに戻す)には確認は不要で、常に許可される。

インストール

npm から(正式パッケージ)

dsh plugin add @xiaobanli/dsh-abap-mcp

ローカルディレクトリ(開発/結合テスト)

profile の package.json に依存関係を追加し、pnpm install を実行する:

{
  "dependencies": {
    "@xiaobanli/dsh-abap-mcp": "link:C:/othersoftware/harness/harness/project6/dsh-abap-mcp"
  },
  "dsh": { "profile": { "bundles": [ "...", "dsh-abap-mcp" ] } }
}

DSH を再起動すると、設定ページの左側に「ABAP MCP」カードが表示される。

設定(設定ページのカード)

事前準備(接続前に確認してください)

  1. SAP 側でトランザクションコード SICF にて ADT サービスノードを有効化する:プラグインは ABAP Development Tools (ADT) の HTTP(S) サービスを介して SAP にアクセスするため、関連する ADT サービスノードがアクティブでないと接続が失敗する。通常は SICF で default_host/sap/bc/adt とそのサブノードをアクティブ化すればよい(具体的なノードはシステムバージョンによって多少異なる)。

  2. SAP アドレスの形式:大半は http://アドレス:ポート または https://アドレス:ポート(一部の高バージョン/ゲートウェイ設定では http://アドレス:ポート/sap/bc/adt の完全パス)。実際のシステムに合わせてプロトコルとポートを確認してください。例:http://10.0.0.1:8000 または https://sap.example.com:44300

フィールド

説明

接続を有効化

全体スイッチ。オフの場合は接続せず、ツールも一切登録しない

SAP アドレス

例:http://アドレス:ポート / https://アドレス:ポート(先に ADT サービスを有効化する必要あり)

ユーザー名 / パスワード

接続資格情報

クライアント / 言語

例:000 / EN

7 種類の書き込み権限スイッチ

チェックすると対応する書き込み機能が有効になる

保存後、Host は自動的に再接続する。また、会話内で直接モデルに abap_mcp_status を尋ねて接続状態を確認することもできる。

「接続テスト」ボタン:まず現在のフォームをディスクに保存し、現在の設定で実際の spawn→接続→ツール列挙→切断を 1 回実行する。結果(成功/失敗、所要時間、ツール数)はボタンの横に表示される。「接続を有効化」スイッチの状態は変更しない。

  • SAP アドレス / ユーザー名 / パスワードが未入力の場合、ボタンは「先に設定を入力してください」と直接表示し、空のテストは実行しない。

  • テスト実行中はボタンに「テスト中…」と表示される。60 秒で結果が出ない場合は自動的にタイムアウトと判定され、その旨が表示される。

  • テスト結果(status.lastTest)はボタンの横に表示され続け、再接続状態の更新によって消去されることはない。

  • テストは一回限りの動作:永続接続や自動再接続はトリガーされず、テスト失敗時にバックオフ再試行に入ることもない。永続接続と制限付き再接続(最大 5 回で断念)がトリガーされるのは、設定変更(有効化スイッチ/接続フィールド/権限)があった場合のみ。

サーバーのビルド(server/ を変更した場合)

cd server
npm install --ignore-scripts   # 依赖均为纯 JS,无需生命周期脚本
node node_modules/typescript/bin/tsc -p tsconfig.json   # 产出 dist/

トラブルシューティング

「接続テスト」がずっと「テスト中…」のまま、またはクリックしても反応がない

  • 原因の大半は設定の書き込みがディスクに保存されていないこと。SAP アドレス / ユーザー名 / パスワードがすべて入力されていることを確認してください。プラグインは設定をローカルの settings.yaml に書き戻します。

  • 繰り返し固まる場合は、DSH ログに SettingsConflictError(設定のリビジョン競合により書き込みが破棄された)がないか確認してください。DSH を再起動してもう一度試してください。

接続で McpError: Connection closed が発生する

  • デスクトップ版ホストは Electron 上で動作するため、子プロセスは Node モードで起動する必要があります(プラグインが自動的に ELECTRON_RUN_AS_NODE=1 を設定済み)。

  • それでも発生する場合は、server/dist/index.js が存在することを確認してください(server/ のソースを変更していなければ再ビルドは不要)。node server/dist/index.js を直接実行してターミナルで待機状態になれば、サーバー自体は正常です。

書き込み権限スイッチを有効にしたのに、対応するツールが表示されない

  • 権限が実際に有効になるのはサーバー側です。スイッチを保存するとプラグインは再接続し、ツールを再列挙します(ツール数が増えるはずです。例:75 → 83)。

  • 権限を有効にしてもツール数が変わらない場合は、abap_mcp_statusmoderead-only + <カテゴリ> に変わっているか確認してください。まだ read-only のままなら、スイッチが正しく保存されていません。

server/ のソースを変更したのにツールの動作が変わらない

  • 再ビルドが必要です:cd server && npm install --ignore-scripts && node node_modules/typescript/bin/tsc -p tsconfig.json を実行し、その後 DSH を再起動してプラグインが新しい dist/ を使用するようにしてください。

実行時に ABAP で STRING_OFFSET_TOO_LARGE などのエラーが発生する

  • この種のエラーは SAP 側で読み取り/実行される ABAP プログラム自体に起因するもので、プラグインとは無関係です。mcp__abap__dumps で短ダンプの詳細を確認するか、SE38 で該当プログラムを修正してください。

セキュリティについて

  • 読み取り専用 ≠ 無害:読み取り専用ツールでも、本番システムのソースコードや業務データを読み取る可能性があります。開発/テストシステムへの接続と、最小権限アカウントの使用を強く推奨します(権限スイッチは DSH 側のガードレールであり、SAP 側の認可を代替するものではありません)。

  • サーバーは起動時に権限モードと「開発/テストシステム専用の使用を推奨」という注意書きを出力します(これは推奨 + 注意であり、強制ではありません)。

  • パスワードはローカルの settings.yaml平文で書き込まれます(DSH の settings サービスによって永続化されます)。より高いセキュリティレベルが必要な場合は、credentials サービスによる保存に拡張してください。

  • サーバーの子プロセスは、SDK のホワイトリスト環境変数と、本プラグインが明示的に注入する SAP_* および MCP_ABAP_PERMISSIONS のみを継承し、ホストのその他の環境変数は漏洩しません。

License

MIT。サーバー部分の著作権は原作者 mario-andreschak(MIT)に帰属し、本プラグインはその上に権限レイヤーを追加したものです。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with SAP ABAP systems through ABAP Development Tools (ADT), providing access to repository objects, source code, where-used analysis, and SQL queries with support for both on-premise and BTP systems.
    2
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants like Claude Code to directly connect to SAP ABAP systems via the ADT REST API with read/write capabilities, featuring AI-friendly high-level tools and built-in safety measures such as read-only mode, prefix whitelisting, and automatic locking.
    9
    MIT
  • F
    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.
    4
    24

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

  • Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiaoliang2/dsh-abap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server