dsh-abap-mcp
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.ts → dist/permissions.js)。デフォルトの読み取り専用コアは常に有効で、7 種類の書き込み権限はデフォルトで全て無効、MCP_ABAP_PERMISSIONS 環境変数でカテゴリごとに有効化します。未登録のツールはすべて拒否(deny-by-default)され、新しく追加されたハンドラが黙って開放されることはありません。
読み取り専用コア(約 75 ツール、常時有効)
サブグループ | ツール | 説明 |
認証 / セッション |
| ログイン / ログアウト / ローカルセッションキャッシュのクリア |
オブジェクト探索 |
| オブジェクト構造の照会 / 検索 / パス特定 / オブジェクトタイプ / 再入チケット |
クラスイントロスペクション |
| クラスの include 構成 / コンポーネント一覧 |
コード分析(読み取り専用) |
| 構文チェック / 補完 / 定義ジャンプ / 参照照会 / 修正提案 / ドキュメント(読み取り専用) |
ソースコード読み取り |
| オブジェクトソースの読み取り |
非アクティブオブジェクト |
| 未アクティブ化オブジェクトの一覧 |
登録 / 検証 |
| オブジェクト登録情報 / 新規オブジェクトパラメータ検証(読み取り専用) |
トランスポート読み取り |
| トランスポートリクエスト情報 / ユーザートランスポート / 設定 / システムユーザー(読み取り専用) |
リポジトリブラウズ |
| オブジェクトツリーブラウズ / include メインプログラム |
機能 / ディスカバリ |
| ADT 能力ディスカバリ / 機能照会 |
単体テスト結果読み取り |
| 単体テスト結果の評価 / マーカー位置(読み取り専用) |
フォーマット設定読み取り |
| フォーマット設定の読み取り(変更なし) |
Git 読み取り |
| リポジトリ一覧 / リモート情報 / チェック(読み取り専用) |
DDIC 読み取り |
| アノテーション / DDIC 要素 / パッケージ検索(読み取り専用) |
サービスバインディング詳細 |
| サービスバインディング詳細(読み取り専用) |
データ読み取り |
| テーブルデータ / SQL クエリ(読み取り専用) |
Feeds / Dumps |
| 動的オブジェクト一覧 / 短いダンプ一覧 |
リネーム分析 |
| リネーム評価 / プレビュー(実行のみで書き込みなし) |
ATC 読み取り |
| ATC チェック設定 / バリアント / ワークリスト / ユーザー / 連絡先(読み取り専用) |
トレース読み取り |
| トレース一覧 / リクエスト / ヒット / DB アクセス / ステートメント(読み取り専用) |
リビジョン / ヘルス |
| オブジェクトリビジョン履歴 / 接続ヘルスチェック |
7 種類の書き込み権限(デフォルトすべて無効)
スイッチ | サブカテゴリ | ツール | 説明 |
| ソース書き込み |
| ソース書き込み / オブジェクト削除 / アクティベート / オブジェクト作成 / テストインクルード作成 / ロックとロック解除 |
| トランスポート要求 |
| 作成 / 設定 / 削除 / リリース / 責任者変更 / ユーザー追加 |
| リファクタリング |
| 名前変更実行 / メソッド抽出(評価/プレビュー/実行)/ フォーマット(読み書き) |
| 実行系 |
| ABAP クラス実行 / 単体テスト実行 |
ATC 書き込み操作 |
| ATC チェック開始 / 免除提案 / 免除要求 / 連絡先変更 | |
トレース設定 |
| トレースパラメータ設定 / 設定作成 / 設定削除 / レコード削除 | |
| Git 書き込み操作 |
| リポジトリ作成 / プル / リンク解除 / ステージ / プッシュ / ブランチ切り替え |
| デバッグ |
| リスナー / ブレークポイント / アタッチ / ステップ / スタック / 変数の読み書き |
| サービスバインディング |
| OData サービスバインディングの公開 / 公開解除 |
説明:読み取り専用コア内の「ATC 読み取り」「トレース読み取り」「Git 読み取り」「トランスポート読み取り」は読み取りのみ可能。対応するカテゴリ内の書き込みツール(チェック開始、設定変更、コードプッシュ、サービス公開など)には権限が必要。名前変更前にプレビューのみ行う場合(
renameEvaluate/renamePreview)は読み取り専用で、実際に実行する場合(renameExecute)のみrefactorが必要。
権限の手動確認(AI による権限の自動有効化を防止)
任意の権限スイッチを有効にする際、プラグインは手動確認を要求する:設定ページのカードでチェックを入れると、一回限りの確認資格情報(confirm-<タイムスタンプ>-<ランダム文字列>)が生成され設定に書き込まれる。Host 側は資格情報が新しい(60 秒以内)かつ形式が正しい場合にのみ、対応するモードでの接続を許可する。それ以外の場合は強制的に読み取り専用へフォールバックし、ステータスに「設定カードで手動確認が必要」と表示する。この仕組みは全 7 種類の権限スイッチ(sourceWrite / transports / refactor / exec / git / debug / serviceBinding)を一律にカバーする。
権限は設定ページのカードからのみ有効化できる。
settingsAPI /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」カードが表示される。
設定(設定ページのカード)
事前準備(接続前に確認してください)
SAP 側でトランザクションコード SICF にて ADT サービスノードを有効化する:プラグインは ABAP Development Tools (ADT) の HTTP(S) サービスを介して SAP にアクセスするため、関連する ADT サービスノードがアクティブでないと接続が失敗する。通常は SICF で
default_host/sap/bc/adtとそのサブノードをアクティブ化すればよい(具体的なノードはシステムバージョンによって多少異なる)。SAP アドレスの形式:大半は
http://アドレス:ポートまたはhttps://アドレス:ポート(一部の高バージョン/ゲートウェイ設定ではhttp://アドレス:ポート/sap/bc/adtの完全パス)。実際のシステムに合わせてプロトコルとポートを確認してください。例:http://10.0.0.1:8000またはhttps://sap.example.com:44300。
フィールド | 説明 |
接続を有効化 | 全体スイッチ。オフの場合は接続せず、ツールも一切登録しない |
SAP アドレス | 例: |
ユーザー名 / パスワード | 接続資格情報 |
クライアント / 言語 | 例: |
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_statusのmodeがread-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)に帰属し、本プラグインはその上に権限レイヤーを追加したものです。
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to access SAP ADT APIs for reading, writing, debugging, deploying, and testing ABAP code through natural language or DSL automation.448MIT
- AlicenseAqualityCmaintenanceEnables 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.9MIT
- FlicenseAqualityCmaintenanceEnables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.424
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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