mcpField
M
mcp-abap-adt-sse-ro

mcp-abap-adt-sse-ro

ローカル
github.com/fr0ster開発ツール1003 日前に更新

mcp-abap-adt-sse-ro について

mcp-abap-adt-sse-ro は、SAP ECC/S/4HANA と SAP BTP ABAP Cloud の ABAP リポジトリを調べる読み取り専用 MCP サーバーです。HTTP+SSE で分析・検索ツールを提供し、SAP 認証情報を x-sap-* ヘッダーで受け取ります。

主な機能

  1. 01ABAP リポジトリの読み取り専用アクセス
  2. 02オブジェクトのメタデータと構造の参照
  3. 03使用箇所と依存関係の分析
  4. 04リポジトリの閲覧と検索
  5. 05バッチ操作

活用シーン

  1. 01ABAP オブジェクトを変更せずに調査
  2. 02オブジェクトの使用箇所を追跡
  3. 03依存関係と影響範囲を確認
  4. 04ABAP リポジトリ内を検索

MCP 対応

HTTP+SSE 経由で MCP クライアントに読み取り専用の SAP ABAP ADT ツールを公開します。認証情報は x-sap-* ヘッダーで渡します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"fr0ster-mcp-abap-adt-sse-ro": {
"command": "npx",
"args": [
"-y",
"@mcp-abap-adt/sse-ro"
],
"env": {
"SAP_SYSTEM_TYPE": "<SAP_SYSTEM_TYPE>",
"MCP_SSE_HOST": "<MCP_SSE_HOST>",
"MCP_SSE_PORT": "<MCP_SSE_PORT>"
}
}
}
}
起動コマンドnpx -y @mcp-abap-adt/sse-ro
設定が必要な環境変数
SAP_SYSTEM_TYPESystem type, required (here or as --system-type; no default, never guessed, no request header states it): the tools offered, the connector, and how the system's answers are read. Without it the server does not start.
MCP_SSE_HOSTHost to listen on: 127.0.0.1 (this machine only) or 0.0.0.0 (every interface).
MCP_SSE_PORTPort to listen on, 1-65535.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@mcp-abap-adt/sse-ro20.0.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-abap-adt logo mcp-abap-adt:ABAP 開発ツール(ADT)へのゲートウェイ

Stand With Ukraine

mcp-abap-adt は、SAP ECC/S/4HANA(オンプレミス)および SAP BTP ABAP Cloud システム向けの MCP サーバーです。エージェントが ADT を通じて実際の ABAP リポジトリに制御されたアクセスを行えるようにし、分析や変更を推測ではなくシステムデータに基づいて実施できます。これは、オートパイロットによる雰囲気任せのコーディングではなく、AI 支援によるペアプログラミング(AIPNV:AI Pairing, Not Vibing)向けに構築されています。

主なワークフロー:

  • ABAP の詳細分析:使用箇所、オブジェクトのメタデータ、リポジトリ内のナビゲーション、オブジェクト構造、セマンティック分析、依存関係や影響範囲の調査。
  • 高度な ABAP 開発:RAP および従来型 ABAP 成果物(クラス、インターフェース、関数グループ/モジュール、プログラム、DDIC、CDS/ビュー/サービス成果物)の迅速な CRUD と反復的な更新を、ADT のワークフローで検証します。

チームが利用する理由:

  • 完全な CRUD(読み取り専用ではありません):ABAP 成果物の作成、読み取り、更新、削除
  • **オンプレミス(ECC/S/4HANA)**および ABAP Cloud(BTP) システムで動作します
  • レガシーシステム(BASIS < 7.50)は現時点ではサポートされていません:稼働中のレガシーシステムで試せるようになるまで、そのサポートは parked/legacy-support ブランチに保留されています
  • stdio 経由の 3 種類の認証:basic(HTTP または RFC)、SNC(パスワードレス、RFC)、ブラウザーログインを使用する JWT(サービスキー、ABAP または XSUAA)。すでに保有している JWT は、mcp-abap-adt-http/mcp-abap-adt-sse の x-sap-jwt-token ヘッダーに設定します
  • 複数のトランスポート:stdio、HTTP、SSE
  • 複数のインストール方式:完全版サーバー(@mcp-abap-adt/core)またはコンパクト版(@mcp-abap-adt/compact)。どちらも HTTP、RFC、SNC 経由でシステムに接続します。詳しくはインストール方式を参照してください
  • ABAP オブジェクト、メタデータ、移送、検索に対応する豊富なツール群

認可と宛先(重要): 宛先とは、ローカルに保存されたサービスキーのファイル名です。サービスキーを service-keys ディレクトリに配置し、--mcp=<destination> を使って使用するキーを選択します。これはオンプレミスおよび BTP システムの主要な認証モデルです。認証と宛先を参照してください。

MCP クライアントは手動(JSON/TOML)またはコンフィギュレーター CLI(@mcp-abap-adt/configurator、リポジトリ:mcp-abap-adt-conf)を使って設定できます。

目次

  1. はじめに
  2. アーキテクチャ
  3. クイックスタート
  4. ユースケース
  5. 対象ユーザー
  6. 機能(高レベルの概要)
  7. 用語
  8. 認可と宛先
  9. レジストリ
  10. 機能
  11. ドキュメント
  12. 依存関係
  13. サーバーの実行

はじめに

まず、バリアントを選択してください。フルサーバーまたはコンパクトサーバー、そしてシステムへの接続方式として HTTP、RFC、SNC のいずれかを選びます。HTTP に必要なのは Node.js 22 または 24 だけです。RFC と SNC では、サーバーの実行時に SAP NW RFC ライブラリが必要です。Windows では SAP GUI の 64 ビット版 sapnwrfc.dll、それ以外では SAP NW RFC SDK を使用します。RFC モジュールは Linux x64(glibc)、Windows x64、macOS ARM64 向けのビルド済みで、npm install によるコンパイルは不要です。インストールのバリアントに表とコマンドがあり、手順については RFC のセットアップを参照してください。Node.js のないマシンで実行するには、Node.js と SAP NW RFC SDK を組み込んだ独自のポータブル実行ファイルをビルドしてください。

サーバーをインストールし、コンフィギュレーターを使ってクライアントを設定します。

npm install -g @mcp-abap-adt/core
npm install -g @mcp-abap-adt/configurator

# stdio (destination)
mcp-conf --client cline --name abap --mcp TRIAL

# HTTP (streamable HTTP)
mcp-conf --client copilot --name abap --transport http --url http://localhost:3000/mcp/stream/http

コンフィギュレーターの使用方法の全容(別のリポジトリ):CLIENT_INSTALLERS.md。

用語

Destination(接続先):ローカルのサービスキーのファイル名です。サービスキーは標準の service-keys ディレクトリに保存し、使用するシステムを選択するには、拡張子を除いたファイル名を --mcp=<destination> で指定します。

用語の一覧は docs/user-guide/TERMINOLOGY.md を参照してください。

認証と宛先

宛先ベースの認証がデフォルトです。標準のプラットフォームフォルダーにサービスキーを配置し、ファイル名を宛先として使用します。

mcp-abap-adt --mcp=TRIAL --system-type=cloud

標準のサービスキーパス:

  • Unix(Linux/macOS):~/.config/mcp-abap-adt/service-keys/<destination>.json
  • Windows:%USERPROFILE%\\Documents\\mcp-abap-adt\\service-keys\\<destination>.json

mcp-abap-adt(stdio)がサポートする認証は、正確に3種類です。いずれもサービスキー、.env、またはその両方に記載された宛先を使います。手元にあるJWTは、HTTPまたはSSEサーバーへのヘッダーで送信します。

認証.env のキー
Basic(HTTPまたはRFC)SAP_AUTH_TYPE=basic、SAP_USERNAME、SAP_PASSWORD
SNC(RFCのみ、パスワードレス)SAP_AUTH_TYPE=snc、SAP_SNC_PARTNERNAME、任意の SAP_SNC_QOP、SAP_SNC_LIB、SAP_SNC_MYNAME — ユーザーなし、パスワードなし
JWT、ブラウザーログインSAP_AUTH_TYPE=jwt、SAP_GRANT_TYPE=authorization_code、サービスキー(ABAPまたはXSUAA)、または SAP_UAA_*
手元にあるJWTmcp-abap-adt-http / mcp-abap-adt-sse の x-sap-jwt-token ヘッダー(stdioでは提供されません)

jwt の .env には SAP_GRANT_TYPE の記載が必要です。このような .env を書き込む mcp-auth コマンドは、@mcp-abap-adt/auth-broker-cli に含まれています。ブラウザーログインは、--browser-auth-port で別のポートが指定されない限り、ポート 61001 で待ち受けます。

作成されたオブジェクトには、必ず担当者が含まれ、判明している場合はマスターシステムも含まれます。サーバーは接続作成時に、宛先ごとに一度、その認証情報とABAPシステムを使って担当者とマスターシステムを特定します。これは @mcp-abap-adt/responsible-rules のルールに従います。オンプレミスでもABAP Cloudでも、システムの systeminformation の応答(ユーザーとシステムID)が優先されます。ただし、ツールの引数で値(たとえばトランスポートの owner)が指定されている場合、その呼び出しではその値が使われます。システムから情報が得られない場合、ABAP Cloudではエラーになります(404 の場合は cloud_without_systeminformation、それ以外は system_lookup_failed)。オンプレミスでは、担当者は指定があれば SAP_RESPONSIBLE / x-sap-responsible、なければログインユーザー(SAP_USERNAME、x-sap-login)になります。マスターシステムは、指定があれば SAP_MASTER_SYSTEM / x-sap-master-system になります。ユーザーがまったくいない場合、呼び出しは system_user_unknown で拒否され、stdioの起動は終了コード 1 で終了します。401 は受け取ったとおりに返されます。ライブラリは、埋め込み側からルールを渡されない限り、ルールを適用しません。認証と宛先を参照してください。 19.xから移行する場合は、20.0移行ノートを参照してください。接続19のRFCとsap-rfc-lite 0.3.2では、インストール時にコンパイルされるものはなく、ビルド済みバインディングはLinux x64、Windows x64、macOS ARM64のみです。Streamable HTTPでは、state_handle がすべてのツールの引数となり、長時間のセッションでは呼び出し間で1つのSAPセッションが維持されます。 18.xから移行する場合は、19.0移行ノートを参照してください。サーバーはトランスポートとツールセットごとのパッケージに分割され、システムタイプが必須になり、lowセットは廃止され、認証チェーンは6.0になりました。17.xから移行する場合は、18.0移行ノートを参照してください。デバッガーの埋め込み側のインターフェイスはadt-clients 29に移り、デバッガーの起動には少なくとも1つのブレークポイントが必要になりました。16.xから移行する場合は、まず17.0移行ノートを参照してください。

詳細(パス、.env、直接指定するヘッダー)については、認証と宛先を参照してください。

アーキテクチャ

このプロジェクトでは、ライブラリとサーバーに加えて、各サーバーのコンパクト版も提供しています。2つの利用形態では、必要なライセンスが異なるためです。ネットワークサービスにツールを組み込んでも、そのサービスが実行しないサーバーの義務まで負う必要はありません。

パッケージライセンス概要
@mcp-abap-adt/libApache-2.0ADT ツールのハンドラーと、組み込み可能な MCP サーバーです。トランスポートは含まれず、ホストが用意します。
@mcp-abap-adt/coreAGPL-3.0-onlyスタンドアロンの stdio サーバー mcp-abap-adt です。認証ブローカーを通じて 1 つの接続先を使用します。ライブラリに依存します。
@mcp-abap-adt/httpAGPL-3.0-onlyStreamable HTTP サーバー mcp-abap-adt-http です。各リクエストの x-sap-* ヘッダーから認証情報を取得します。
@mcp-abap-adt/sseAGPL-3.0-onlyHTTP+SSE サーバー mcp-abap-adt-sse です。各 SSE 接続の GET の x-sap-* ヘッダーから認証情報を取得します。
@mcp-abap-adt/compactAGPL-3.0-onlystdio 経由のコンパクトサーバー mcp-abap-adt-compact です。操作ごとに 1 つのツールを使用し、引数でオブジェクトタイプを指定します。コンパクトツールセットと、core のランチャーおよび設定(server-runtime 提供)を組み合わせています。
@mcp-abap-adt/compact-httpAGPL-3.0-onlyStreamable HTTP 経由のコンパクトサーバー mcp-abap-adt-compact-http です。コンパクトツールセットと、http のランチャーおよび設定(server-runtime 提供)を組み合わせています。
@mcp-abap-adt/compact-sseAGPL-3.0-onlyHTTP+SSE 経由のコンパクトサーバー mcp-abap-adt-compact-sse です。コンパクトツールセットと、sse のランチャーおよび設定(server-runtime 提供)を組み合わせています。
@mcp-abap-adt/server-runtimeAGPL-3.0-onlyすべてのサーバーの起動コードです。stdio、Streamable HTTP、SSE のランチャーとサーバー、および接続先レイヤーを提供します。独自のコマンドはありません。すべてのサーバーパッケージが依存するため、各サーバーとともにインストールされます。個別にインストールする必要はありません。
@mcp-abap-adt/background-runs-memoryApache-2.0バックグラウンド実行のインメモリストア(ライブラリの IBackgroundRuns)です。実行をプロセス内に保持する組み込み側向けに、サーバーのストアを提供します。すべてのサーバーパッケージが依存します。
@mcp-abap-adt/responsible-rulesApache-2.0systeminformation から呼び出しの担当者、ユーザー、システムを特定するルール(ライブラリの SystemContextRules)と、バイナリが必要とするシステムタイプです。すべてのサーバーがこのルールを渡します。ライブラリは適用しないため、組み込み側で有効化する必要があります。
@mcp-abap-adt/core-ro、http-ro、sse-roAGPL-3.0-only読み取り専用サーバー mcp-abap-adt-ro、mcp-abap-adt-http-ro、mcp-abap-adt-sse-ro です。読み取り専用ツール(システムおよび検索を含む)、バッチモード、stdio での残存セッション一覧とログオフを備え、core、http、sse のランチャーを使用します。high、デバッガー、バックグラウンド実行、再開の各ツールはありません。
@mcp-abap-adt/compact-ro、compact-http-ro、compact-sse-roAGPL-3.0-only読み取り専用のコンパクトサーバー mcp-abap-adt-compact-ro、-compact-http-ro、-compact-sse-ro です。何も変更しない 17 個のコンパクトツール、HandlerBatch、および stdio での残存セッション一覧とログオフを備えています。
@mcp-abap-adt/compact-readonly-entries、compact-modifyApache-2.0ライブラリとしてのコンパクトツールです。何も変更しないツールと書き込みを行うツールの 2 つに分かれています(compact-readonly-entries は 19.0.0 より前は compact-readonly でした)。
18 個のパッケージ、12 個のバイナリ:各トランスポートに 4 種類のバイナリ(core、core-ro、compact、compact-ro)があります。ツールセットはバイナリによって決まります(19.0.0。--exposition はありません)。使用するトランスポートと、サーバーで実行するツールに応じて、@mcp-abap-adt/core、http または sse(readonly、high、debugger)、それらの -ro パッケージ(readonly ツールのみ)、compact、compact-http、compact-sse、またはそれらの -ro パッケージ(変更を行わない compact ツール)をインストールしてください。ツールを独自のアプリケーションに組み込む場合は、@mcp-abap-adt/lib をインストールしてください。すべてのバイナリとそのツールについては、ハンドラーセットをご覧ください。

各サーバーは個別にインストールします(npm install -g @mcp-abap-adt/compact)。サーバーパッケージには、その実行に必要なもの(server-runtime、lib など)がすべて含まれており、他のサーバーパッケージには依存しません。そのため、2 つのサーバーを 1 回のコマンドでも 2 回のコマンドでもインストールでき、互いに依存することもありません。19.2.0 以降、プロセスで @mcp-abap-adt/lib のコピーが 2 つ読み込まれた場合、プロセスは起動しません。Two copies of @mcp-abap-adt/lib are loaded in this process (…): reinstall <package> (npm install -g <package>). と表示して 1 で終了します。詳しくは、サーバープロセスごとに lib を 1 つをご覧ください。

1. スタンドアロン MCP サーバー(デフォルト)

スタンドアロン MCP サーバーとして実行します。バイナリによってトランスポートが決まります(--transport オプションはありません)。

mcp-abap-adt --mcp=TRIAL --system-type=cloud # stdio (@mcp-abap-adt/core): one destination
mcp-abap-adt-http --system-type=<onprem|cloud> # Streamable HTTP (@mcp-abap-adt/http): x-sap-* headers per request
mcp-abap-adt-sse --system-type=<onprem|cloud> # SSE (@mcp-abap-adt/sse): x-sap-* headers per SSE connection
mcp-abap-adt-compact --mcp=TRIAL --system-type=cloud # the compact tool set over stdio (@mcp-abap-adt/compact)
mcp-abap-adt-compact-http --system-type=<onprem|cloud> # ... over Streamable HTTP (@mcp-abap-adt/compact-http)
mcp-abap-adt-compact-sse --system-type=<onprem|cloud> # ... over SSE (@mcp-abap-adt/compact-sse)
mcp-abap-adt-ro --mcp=TRIAL --system-type=cloud # the readonly tools alone over stdio (@mcp-abap-adt/core-ro)
mcp-abap-adt-compact-ro --mcp=TRIAL --system-type=cloud # the compact tools that change nothing (@mcp-abap-adt/compact-ro)
                                       # (and -http-ro, -sse-ro, -compact-http-ro, -compact-sse-ro)
2. 組み込み可能なサーバー(統合用)

MCP サーバーを既存のアプリケーション(例:SAP CAP/CDS、Express)に組み込みます。 必要なのは @mcp-abap-adt/lib のみで、AGPL サーバーは不要です。

npm install @mcp-abap-adt/lib
import { EmbeddableMcpServer } from '@mcp-abap-adt/lib/embeddable';

const server = new EmbeddableMcpServer({
  connection,              // Your AbapConnection instance
  logger,                  // Optional logger
  exposition: ['readonly', 'high'],  // Handler groups to expose
  // A tool both groups serve under one name (Get<Type>) is listed once.
  // readOnlyDedupStrategy: a custom IReadOnlyDedupStrategy hides more.
});
await server.connect(transport);

readonly ツールを high と重複排除する方法、およびロールベースのルールに対応したカスタム IReadOnlyDedupStrategy の組み込み方については、ハンドラー管理 → EmbeddableMcpServer の重複排除戦略をご覧ください。

クイックスタート

  1. サーバーをインストール:インストールバリアント(full または compact、HTTP、RFC または SNC)を選び、インストールガイドに従ってください
  2. クライアントを設定(自動):@mcp-abap-adt/configurator の mcp-conf を使用してください(リポジトリ:mcp-abap-adt-conf、ドキュメント:CLIENT_INSTALLERS.md)
  3. クライアントを設定(手動):クライアント設定をご覧ください
  4. 使用する:

ユースケース

  • 変更前の影響分析/使用箇所の調査:オブジェクトの使用状況と、影響が及ぶ可能性のある範囲を把握します。
  • 依存関係の監査:クラス、インターフェース、DDIC、CDS/ビュー、RAP アーティファクト間のリンクを調査します。
  • 移行とクリーンアップの準備:リポジトリの事実情報を抽出し、リファクタリングやクラウド対応の作業計画を立てます。
  • RAP と ABAP の反復開発:ADT ベースの操作でアーティファクトをすばやく作成・更新します。
  • ドキュメントの自動生成と RAG への取り込み:ABAP システムから構造化データを取得し、後続のツールで活用します。

対象ユーザー

  • ABAP 開発者と ABAP アーキテクト
  • RAP 開発者
  • リポジトリをすばやく把握する必要があるチームリードとテックリード
  • SAP ランドスケープ向けの RAG/エージェントワークフローを構築するチーム

機能(主な用途)

価値の高いワークフローとツールの主な例:

  • リポジトリと影響範囲の分析:GetWhereUsed、DescribeByList、GetObjectStructure、GetObjectInfo、SearchObject、GetPackageTree、GetPackageContents
  • コードとセマンティクスのイントロスペクション:GetAbapAST、GetAbapSemanticAnalysis、GetIncludesList
  • RAP 開発:CreateBehaviorDefinition、UpdateBehaviorDefinition、CreateBehaviorImplementation、UpdateBehaviorImplementation、CreateServiceDefinition、UpdateServiceDefinition、CreateMetadataExtension、UpdateMetadataExtension
  • CDS/ビュー開発:CreateView、UpdateView、GetView、DeleteView
  • ABAP OO の CRUD:CreateClass、UpdateClass、GetClass、DeleteClass、CreateInterface、UpdateInterface、GetInterface、DeleteInterface
  • 関数モジュール/グループの CRUD:CreateFunctionGroup、UpdateFunctionGroup、GetFunctionGroup、DeleteFunctionGroup、CreateFunctionModule、UpdateFunctionModule、GetFunctionModule、DeleteFunctionModule
  • 移送と有効化のサポート:CreateTransport、GetTransport、ActivateObject
  • 品質とテスト:RunATC、GetATCRunStatus、GetATCFindings(ABAP Test Cockpit — 複数のオブジェクトを対象に1回実行し、作業リストごとに検出結果を読み戻します)、テスト対象ごとの ABAP Unit — クラス用の CreateUnitTest/UpdateUnitTest/DeleteUnitTest/RunUnitTest、CDS ビュー用の CreateCdsUnitTest/RunCdsUnitTest、レポート用の CreateProgramUnitTest/RunProgramUnitTest、関数グループ用の CreateFunctionGroupUnitTest/RunFunctionGroupUnitTest/RunFunctionModuleUnitTest(デフォルトの runner: 'async' は制限時間内に実行を待機し、待機時間を超えた実行結果は GetUnitTestResult で読み取ります。runner: 'sync' は /abapunit/testruns への1回のリクエストで完了済みの結果を返します。このエンドポイントだけがあるシステム向けです。関数モジュールの同期実行では function_group_name を受け取り、グループ内のすべてのテストを対象にします) — CheckClass およびその他の Check* 系ツール
長時間の読み取りには timeout を指定します

承認済みリストにある長時間の読み取り(使用箇所検索と検索、パッケージの走査、データのプレビュー、ダンプフィード、プロファイラートレースなど — リストは MIGRATION-19.0 を参照してください)は、それぞれ専用の ABAP セッションで実行され、秒単位の省略可能な timeout を受け取ります。デフォルト値はありません。 タイムアウトに達すると読み取りはキャンセルされ、セッションはログオフされます。変更は行われません。MCP クライアントのリクエスト制限より短い値を設定してください(TypeScript SDK のクライアントは60秒でキャンセルします)。ツール呼び出しはキャンセルできません。クライアント側でキャンセルしても何も中止されず、呼び出しは最後まで実行されます。timeout を受け取るツールはほかにありません。ユニットテスト、ATC、クラスまたはプログラムの実行は最後まで続行されます。

バッチモード

リクエストが互いの応答に依存しない呼び出しは、それぞれ個別に送る代わりに、1つの ADT バッチエンベロープにまとめて記録し、一括で送信できます。BatchBegin でサーバーをバッチモードに切り替えると、このような呼び出しはすべて記録され、応答は返されず、呼び出し順に1から次の番号が割り当てられます。BatchEnd は、何が起きても、すべての呼び出しを送信してバッチモードを終了します。BatchAnswers は、番号を指定して各呼び出しの応答を読み取ります。これは、SAP が応答した内容に対して、バッチモード外でツールが返す応答です。コンパクトなバイナリでは、1つのツール HandlerBatch(action: 'begin' | 'end' | 'answers')で同じ操作を行えます。すべてのバイナリで利用でき、-ro のものも含め、すべてのトランスポートに対応しています。

前の応答からリクエストを構築するツールは、バッチモードでは拒否されます。高レベルの作成または更新、404 の後のフォールバック、ポーリングなどが該当します。このような作業は、各フェーズを個別のバッチとして実行し、単一ステップのツールを使用してください。作成(コンパクトな HandlerCreate、リクエスト1件)、ロック(HandlerLock。ハンドルは BatchAnswers で読み取ります)、書き込み(lock_handle を指定した HandlerUpdate、リクエスト1件。PACKAGE、DOMAIN、DATA_ELEMENT、FUNCTION_GROUP の場合は、メタデータドキュメント全体を source_code に指定します)、ロック解除(HandlerUnlock)、読み戻し(HandlerGet。source または metadata の各パートにつきリクエスト1件)、有効化(HandlerActivate、リクエスト1件。リスト、object_adt_type、およびオブジェクトごとの有効化で実行応答 { run_id } に委ねる型を指定します)、実行状態の確認(HandlerGet に part: activation_status を指定し、その後 run_id で activation_results を取得します。回数は任意です)。単体テストの実行は、同期ランナー(runner: 'sync' を指定した HandlerUnitTestRun。完了した結果が返されます)ならリクエスト1件です。非同期ランナー(デフォルトの runner: 'async')では、開始(HandlerUnitTestRun。run_id が返されます)、状態確認(HandlerUnitTestStatus。FINISHED になるまで回数は任意です)、結果取得(HandlerUnitTestResult、リクエスト1件)に分けます。プロファイリング実行では、スケジュール(HandlerProfileSchedule。profiler_id が返されます)、その ID を指定した実行(HandlerProfileRun)、トレースの確認(HandlerProfileList。回数は任意です)の後、HandlerProfileView を実行します。削除は、削除チェック(HandlerDeletionCheck、リクエスト1件)を行ってから、削除(HandlerDelete、削除リクエストのみ)を実行します。1つのバッチに含められるリクエストの種類は1つです。最初に記録された呼び出しによって、LOCK、UNLOCK、ステートレスのいずれかに決まります。そのため、バッチ終了時には1つのエンベロープが送信されます。異なる種類の呼び出しは batch_other_kind として拒否されるため、次のバッチに記録してください。各ツールの説明には、バッチモードでの動作を示す文が1つ含まれています。記録可能、指定された引数に限り記録可能、またはバッチモード外で実行、のいずれかです。Streamable HTTP では、BatchBegin の応答に含まれる state_handle を、バッチ内のすべての呼び出しで引数 state_handle として指定するか、リクエストヘッダー x-mcp-state-handle に指定してください。記録可能なすべての呼び出しの一覧については、バッチモードを参照してください。

レジストリ

公式 MCP Registry に公開され、Glama.ai に掲載されています。

機能

  • 🏗️ ドメイン管理:GetDomain、CreateDomain、UpdateDomain - ABAP ドメインを作成、取得、更新します
  • 📊 データエレメント管理:GetDataElement、CreateDataElement、UpdateDataElement - ABAP データエレメントを作成、取得、更新します
  • 📦 テーブル管理:GetTable、CreateTable、GetTableContents - データプレビュー機能を使用して、ABAP データベーステーブルを作成、取得します
  • 🏛️ 構造管理:GetStructure、CreateStructure - ABAP 構造を作成、取得します
  • 👁️ ビュー管理:GetView、CreateView、UpdateView - CDS ビューとクラシックビューを作成、管理します
  • 🎓 クラス管理:GetClass、CreateClass、UpdateClass - ABAP クラスを作成、取得、更新します
  • 📝 プログラム管理:GetProgram、CreateProgram、UpdateProgram - ABAP プログラムを作成、取得、更新します
  • 🔧 ビヘイビア定義(BDEF)管理:GetBehaviorDefinition、CreateBehaviorDefinition、UpdateBehaviorDefinition - Managed、Unmanaged、Abstract、Projection の各タイプに対応した ABAP ビヘイビア定義を作成、管理します
  • 📋 メタデータ拡張(DDLX)管理:CreateMetadataExtension、UpdateMetadataExtension - ABAP メタデータ拡張を作成、管理します
  • ⚡ 有効化:ActivateObject - 任意の ABAP オブジェクトを汎用的に有効化します
  • 🚚 移送管理:CreateTransport、GetTransport - 移送依頼を作成、取得します
  • 🔍 拡張分析:GetEnhancements、GetEnhancementImpl、GetEnhancementSpot - 拡張の検出と分析を行います
  • 📋 インクルード管理:GetIncludesList - インクルードを再帰的に検出します
  • 🔍 システムツール:GetInactiveObjects - 有効化待ちの非アクティブオブジェクトを監視します
  • 🌐 サービスバインディングプレビュー:GetServiceBindingPreviewUrl - 公開済みサービスバインディングの Fiori プレビューを開くブラウザー URL と、その OData サービス URL および $metadata URL を取得します。この URL は、バインディング、サービス定義、公開されたルートビューから構成されます。文書には記載されていません。OData V2 と V4 に対応しています。Web API バインディングにはプレビューがなく、その旨が示されます。SAP BTP では、プレビュー URL にブラウザーホスト(abap-web)が含まれ、ここで BTP ログオンが処理されます。一方、サービス URL には ADT ホストが引き続き使用されます
  • 🧪 ランタイム診断:RuntimeCreateProfilerTraceParameters、RuntimeListProfilerTraceFiles、RuntimeGetProfilerTraceData、RuntimeGetDumpById - JSON ペイロードを使用して、プロファイリングとダンプ分析を行います
  • 📡 ランタイムフィード:RuntimeListFeeds、RuntimeListSystemMessages、RuntimeGetGatewayErrorLog - フィードリーダー(ダンプ — ユーザー、ランタイムエラー、例外、オブジェクト、パッケージ、コンポーネントでフィルタリングでき、リクエストごとの SAP の 100 件制限を超えて読み取れます — システムメッセージ、ゲートウェイエラー)、SM02 システムメッセージ、ゲートウェイエラーログ
  • 🐞 デバッガー(mcp-abap-adt、-http、-sse とコンパクト書き込みバイナリに搭載。-ro バイナリには非搭載):ABAP および AMDP に対応します。ブレークポイント(行、例外、ステートメント、メッセージ。行ブレークポイントには条件を指定できます)、ブレークポイントで停止するクラスまたはレポートのバックグラウンド実行、別ユーザーのリクエストと端末モード、スタック、変数、ウォッチポイント、ステップ実行、デバッグ対象を実行中のままにする機能、デバッガー設定、メモリサイズとスナップショットを扱えます。デバッグセッションは state_handle で識別され、すべてのトランスポートでツール呼び出しの間も維持されます。ユーザーモードでは、ブレークポイントはリクエストユーザー(別のユーザーが指定されていない場合は接続中の SAP ユーザー)のすべてのリクエストを停止します。これを許可してはならない環境では、-ro バイナリをインストールしてください。デバッガーを参照してください
  • 🔗 Streamable HTTP での長時間セッション(mcp-abap-adt-http、-compact-http と、それぞれの -ro):各ツールは省略可能な state_handle 引数を受け取り、その状態(ロック、バッチ、デバッグセッションなど)を保持するインスタンスに呼び出しをルーティングします。SessionOpen / SessionClose(コンパクト版では HandlerSession)を使うと、呼び出しの連続実行中は同じインスタンスと SAP セッションが維持され、終了時、またはアイドル上限に達したときにログオフします。@mcp-abap-adt/httpを参照してください
  • 🚀 SAP BTP サポート:ブラウザーベースのトークンヘルパーを使用する JWT/XSUAA 認証
  • 🔑 接続先ベースの認証:自動トークン管理を使用するサービスキー認証(クライアント設定を参照)
  • 💾 フリースタイル SQL:GetSqlQuery - ADT データプレビュー API 経由でカスタム SQL クエリを実行します

ℹ️ ABAP Cloud の制限:データベーステーブルの ADT データプレビューへの直接アクセスは、SAP BTP のバックエンドポリシーによってブロックされています。このような操作を試みると、サーバーは内容を説明するエラーを返します。オンプレミスシステムでは、引き続きデータプレビューを利用できます。

ドキュメント

ユーザー向け
  • ドキュメント一覧 - ドキュメントの全一覧
  • インストールガイド - インストール方法(フルまたはコンパクト、HTTP、RFC、SNC)とプラットフォーム別ガイド
  • RFC のセットアップ - RFC と SNC:実行時の SAP NW RFC ライブラリ、ビルド済み RFC モジュール、およびそのビルド方法
  • ユーザーガイド - エンドユーザー向けドキュメント(認証、設定、ツール)
  • 認証と宛先 - 宛先ベースの認証とサービスキー
  • バッチモード - 独立した呼び出しを記録し、BatchEnd でバッチエンベロープにまとめて送信し、番号で応答を読み取る方法と、記録される呼び出し
  • ツール検索 - 各ツールが持つ3種類のテキスト(モデル向けの description、BM25 向けの keywords、ベクトル検索向けの semantic)と、クライアントがそれらを読み取る場所
  • デバッガー - 書き込み用バイナリの debug セット:デバッグセッションとそのハンドル、SAP ID、各トランスポートでセッションを維持するもの、セッションを終了するもの
  • ハンドラー管理 - 12 個のバイナリと、それぞれが提供するツール
  • コンフィギュレーター:@mcp-abap-adt/configurator(リポジトリ:mcp-abap-adt-conf)は、クライアントを自動設定する mcp-conf CLI を提供します
  • レベル別ツール
管理者向け
開発者向け
  • アーキテクチャドキュメント - システムアーキテクチャと設計上の判断
  • 開発ドキュメント - テストガイドと開発リソース
  • CHANGELOG.md - バージョン履歴と変更内容
  • docs/MIGRATION-20.0.md - 接続 19 の RFC と sap-rfc-lite 0.3.2:インストール時にコンパイルされるものはなく、3 つのプラットフォーム向けのビルド済みバインディング、実行時の RFC ライブラリ、0.3 のみのポータブルビルド;Streamable HTTP:state_handle 引数で保持する状態と長時間セッション
  • docs/MIGRATION-19.0.md - トランスポートとツールセットごとのパッケージ(17 パッケージ、12 バイナリ)、必須となったシステムタイプ、廃止された low セット、6.0 の認証チェーン、すべてのセッション終了時のログオフ
  • docs/MIGRATION-18.0.md - adt-clients 29 のデバッガー:lib/debugger を組み込む側の変更点、開始時に必要なブレークポイント
  • docs/MIGRATION-17.0.md - HTTPS 証明書の検証、担当者が必要なメッセージクラス
  • docs/MIGRATION-16.0.md - auth-broker 4 の認証:4 種類の認証、宛先
  • docs/MIGRATION-14.0.md - コンパクトファサードが独立したパッケージに移動し、--exposition=compact が mcp-abap-adt-compact コマンドに変更
  • docs/MIGRATION-13.0.md - 12.x の契約を使用するコンシューマーの変更点
  • docs/MIGRATION-12.0.md - 11.x の契約を使用するコンシューマーの変更点

依存関係

次の2つのパッケージが処理を担います。

さらに、これら2つのパッケージとこのプロジェクトが準拠する契約を宣言するパッケージが6つあります。@mcp-abap-adt/interfaces-adt、-adt-connection(IAbapConnection と IAdtWireResponse が含まれます)、-network、-auth、-auth-sap、-utils です。これらは単一の @mcp-abap-adt/interfaces という統合パッケージに代わるもので、このパッケージは現在公開されていません。契約パッケージを直接指定する利用者は、依存ツリー内にそのコピーを1つだけ持ち、ドメインごとにメジャーバージョンを更新できます。

ADTの応答をどう判定するかはデフォルトではなく、ストラテジーで決まります。adt-clients 23以降、各メンバーは自身の応答を判定しません。@mcp-abap-adt/adt-strategies には、このプロジェクトがすべての呼び出しに渡す判定方法が含まれています。これにより、ADTがHTTP 200 に埋め込む拒否(有効化されなかった有効化処理や、拒否された削除処理など)が、成功として呼び出し元に返されるのを防ぎます。

上記はすべて npm install でインストールされ、npmで公開されています。@mcp-abap-adt/sap-rfc-lite はオプションで、RFCトランスポート(したがってSNC)にのみ必要です。インストールスクリプトはなく、Linux x64(glibc)、Windows x64、macOS ARM64 向けのビルド済みバインディングを同梱しているため、インストール時にコンパイルは行われません。それ以外の環境では、バインディングを手動でビルドします。実行時にはSAP NW RFCライブラリが必要です。WindowsではSAP GUIの64ビット版 sapnwrfc.dll を System32 に配置し、それ以外の環境ではSAP NW RFC SDKを使用してください。npm ls -g @mcp-abap-adt/sap-rfc-lite でインストールされているか確認してください。RFC Setupを参照してください。


サーバーの実行

グローバルインストール(推奨)

npm install -g でグローバルにインストールすると、どのディレクトリからでも実行できます。

# Show help
mcp-abap-adt --help

# Default stdio mode (for MCP clients; the destination comes from --mcp, or from a .env file named with --env or --env-path: a .env in the working directory is read only when named)
mcp-abap-adt --system-type=<onprem|cloud>

# Streamable HTTP on a custom port (@mcp-abap-adt/http; credentials from x-sap-* headers)
mcp-abap-adt-http --port=8080 --system-type=<onprem|cloud>

# Use stdio mode with auth-broker (--mcp parameter)
mcp-abap-adt --mcp=TRIAL --system-type=cloud

# Use env destination from platform sessions store
mcp-abap-adt --env=trial --system-type=cloud

# Use explicit .env file path
mcp-abap-adt --env-path=/path/to/my.env --system-type=<onprem|cloud>

# SSE (@mcp-abap-adt/sse; credentials from the opening GET's x-sap-* headers)
mcp-abap-adt-sse --sse-port=3001 --system-type=<onprem|cloud>

# The compact servers take their full counterpart's options; the binary fixes the tools
mcp-abap-adt-compact --env-path=/path/to/my.env --system-type=<onprem|cloud> # npm install -g @mcp-abap-adt/compact
mcp-abap-adt-compact-http --port=8080 --system-type=<onprem|cloud> # npm install -g @mcp-abap-adt/compact-http
mcp-abap-adt-compact-sse --sse-port=3001 --system-type=<onprem|cloud> # npm install -g @mcp-abap-adt/compact-sse

# The read-only servers: the same options, the tools that change nothing
mcp-abap-adt-ro --env-path=/path/to/my.env --system-type=<onprem|cloud> # npm install -g @mcp-abap-adt/core-ro
mcp-abap-adt-compact-http-ro --port=8080 --system-type=<onprem|cloud> # npm install -g @mcp-abap-adt/compact-http-ro
開発モード
npm install
npm run build
npm test

チェックアウトしたソースだけではサーバーを実行できません。server/ はパッケージとして @mcp-abap-adt/lib を使用します。ビルドを実行するには、両方をパッケージ化し、tarballをまとめてインストールしてください。ソースからを参照してください。

環境設定

環境設定の解決順序:

  1. 明示的な .env ファイルを指定する場合は、--env-path=<path|file>(または MCP_ENV_PATH)を使用します。
    • 絶対パス:そのまま使用されます。
    • 相対パスまたはファイル名のみ(例:my.env):現在の作業ディレクトリを基準に解決されます。
  2. 標準セッション保存先にある宛先ファイルを指定する場合は、--env=<destination> を使用します。
    • Unix:~/.config/mcp-abap-adt/sessions/<destination>.env
    • Windows:%USERPROFILE%\\Documents\\mcp-abap-adt\\sessions\\<destination>.env

作業ディレクトリ内のファイルは検索されません。他の人のプロジェクト内で起動したサーバーが、そのプロジェクトの設定を読み込んではいけません。そこにある .env を読み込むのは、--env-path=./.env のように明示した場合のみです。

選択されたファイルは、--unsafe の設定にかかわらず読み込まれ、新しいトークンで書き戻されます。宛先はプロセスごとに一度だけ読み込まれます。外部から .env を変更した場合、その変更は再起動後に反映されます。.env と環境変数にはシークレットとセッションを格納し、YAML設定ファイルには設定のみを格納します。シークレットと思われるキーは拒否されます。

.env ファイルの例:

SAP_URL=https://your-sap-system.example
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_CONNECTION_TYPE=http
SAP_USERNAME=your-username
SAP_PASSWORD=your-password

宛先には接続タイプを指定します。.env の SAP_CONNECTION_TYPE(http または rfc)、--connection-type、プロセス環境、またはYAMLの connection-type で指定します。デフォルト値はありません。接続タイプが指定されていない宛先は、設定可能な場所を示して起動時に拒否されます。サービスキーには接続タイプが含まれないため、サービスキーから読み込んだ --mcp 宛先では、コマンドライン、環境、またはYAMLから接続タイプを指定します。

すでに保持しているJWTはstdio経由では提供されません。mcp-abap-adt-http または mcp-abap-adt-sse(@mcp-abap-adt/http、@mcp-abap-adt/sse)に x-sap-jwt-token ヘッダーで送信するか、mcp-auth でセッションを作成してください。

RFC接続の場合:

SAP_URL=http://your-onprem-system.example:8000
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password
SAP_CONNECTION_TYPE=rfc

接続先の .env(--env/--env-path ファイル、または --mcp=<name> の場合は <auth-broker-path>/sessions/<name>.env)で SAP_CONNECTION_TYPE=rfc を指定すると RFC が選択されます。同様に、--connection-type=rfc、プロセス環境変数、YAML の connection-type: rfc でも選択できます。優先順位は、CLI、プロセス環境変数(.env の値はすでに設定されている値を上書きせず、プロセス環境変数に追加されます)、YAML の順です。RFC では、ホストは SAP_URL から取得され、システム番号はそのポートから取得されます(80NN → NN)。ポートがこの規則に従わない場合は、プロセス環境変数に SAP_SYSNR が必要です。前提条件(SAP NW RFC SDK、C++ ツールチェーン、インストール前に設定する SAPNWRFC_HOME)については、RFC セットアップガイドを参照してください。

メッセージサーバーとログオングループを使用する場合(負荷分散ログオン):SAP_MSHOST に加えて、SAP_MSSERV または SAP_SYSID を設定します(どちらか一方が必須です。SAP_MSHOST が設定されていて、どちらも指定されていない場合は、@mcp-abap-adt/connection が両方の名前を示して拒否します)。必要に応じて、SAP_GROUP(ログオングループ。未指定の場合は PUBLIC。これは接続のデフォルト値であり、サーバーのデフォルト値ではありません)と SAP_SAPROUTER(どちらのアドレス指定方法でも使用可能)も設定できます。それぞれ --mshost、--msserv、--sysid、--group、--saprouter、または同名の YAML キーでも指定でき、接続タイプと同じ優先順位が適用されます。.env では、これらを --env/--env-path ファイルに記述します。SAP_MSHOST を指定した場合、RFC 通信では SAP_URL からホストもシステム番号も取得されず、SAP_SYSNR も読み込まれません。SAP_URL は引き続きシステムの URL です。サーバーは設定された5つのフィールドをそのまま渡し、何も追加しません。メッセージサーバー経由のログオンは実装済みで、単体テストも実施済みですが、実稼働システムでの測定はまだ行われていません(2026-10-20 時点)。SDK が SAP_SYSID なしの SAP_MSSERV を拒否する場合は、SAP_SYSID を追加してください。

SAP_URL=http://your-onprem-system.example:8000
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password
SAP_CONNECTION_TYPE=rfc
SAP_MSHOST=your-message-server.example
SAP_SYSID=ABC
SAP_GROUP=PUBLIC
# Optional: SAP_MSSERV=sapmsABC, SAP_SAPROUTER=/H/your-router.example/S/3299/H/

SNC(RFC 経由のパスワードレスログオン、ユーザー名とパスワードは不要)の場合:

SAP_URL=http://your-onprem-system.example:8000
SAP_CLIENT=100
SAP_CONNECTION_TYPE=rfc
SAP_AUTH_TYPE=snc
SAP_SNC_PARTNERNAME='p:CN=<system>, O=<org>, C=<country>'
# Creates need a responsible person; over SNC no login is known
SAP_RESPONSIBLE=<your ABAP user>
# Optional: SAP_SNC_QOP, SAP_SNC_LIB, SAP_SNC_MYNAME

インストール済みの SNC 製品(Secure Login Client など)の認証情報は、SNC 名を使って ABAP ユーザーに紐付けられます。SAP_CONNECTION_TYPE=rfc(または --connection-type=rfc)が必要です。SNC は RFC 経由でのみログオンでき、HTTP を使用する SNC 接続先は拒否されます。SNC には SAP NW RFC ライブラリ(Windows では SAP GUI のもの、それ以外では SDK)と、オプションの依存関係である @mcp-abap-adt/sap-rfc-lite が必要です。詳しくはRFC セットアップを参照してください。

16.0 以降はサポートされません: .env またはサービスキーで SAP_AUTH_TYPE=certificate、kerberos、saml、および authorization_code と none 以外の jwt グラントを指定すると、認証方式を示して起動時に拒否されます(グラントのない saml 接続先の場合は cannot be used: grantType)。代わりの方法については、移行に関する注記を参照してください。

.env の生成(JWT):

# Install the CLI globally (one-time setup) — it ships mcp-auth
npm install -g @mcp-abap-adt/auth-broker-cli

# Log in and write a .env that states its authentication and grant (--type xsuaa for an XSUAA key)
mcp-auth --service-key ./service-key.json --output ./mcp.env --type abap
# or a destination: mcp-auth --destination TRIAL --type abap   (`mcp-auth --help` lists the rest)

.env では SAP_AUTH_TYPE と SAP_GRANT_TYPE を指定します。グラントのない jwt の .env は起動時に拒否されます。

**.env のコメントに関するルール:**サポートされるのは行全体のコメント(# で始まる行)のみです。
インラインコメントは解析されないため、コメントは別の行に記述してください。

**Claude の推奨事項:**サービスキーは service-keys ディレクトリに配置し、--mcp=<destination> を使用してください(JWT トークンの手動指定は避けてください)。

コマンドラインオプション

認証:

  • --mcp=<destination> - 名前付きデスティネーション:service-keys/<destination>.json と sessions/<destination>.env を、フィールドごとに使用します
  • --auth-broker-path=<path> - auth-broker のサービスキーとセッションのカスタムパス
  • --browser=<name> - ログインに使用するブラウザー:system(デフォルト)、auto、chrome、edge、firefox、none、headless — プラットフォームに応じて割り当てられます。none / headless の場合、URL は stderr に出力されます(認証)
  • --browser-program=<program> - ログイン URL を代わりに開くプログラム(--browser と併用不可)
  • --renewal=<mode> - refresh-then-login(デフォルト)または refresh-only(ログインは行いません)
  • --browser-auth-port=<port> - ブラウザーログインのコールバックポート。1~65535(デフォルト:61001)。無効な値は起動時に拒否されます
  • --login-timeout=<seconds> - この秒数を過ぎても完了しないブラウザーログインを終了します。1~86400。デフォルト値はありません(ログインは、回答、IdP による拒否、またはセッションの終了時に終了します。キャンセルしても終了しません)
  • --connection-type=<http|rfc> - SAP 接続のトランスポート:http または rfc。デスティネーションで指定する必要があります。ただし、その .env、環境変数、または YAML で指定されている場合を除きます(デフォルト値なし)
  • --mshost、--msserv、--sysid、--group、--saprouter - メッセージサーバーとログオングループを介した RFC(SAP_MSHOST、… — 上記を参照)
  • --unsafe - 名前付きデスティネーションのセッションをディスクに書き込みます。デフォルトではメモリ内に保持されます(1プロセスにつきログイン1回)。指定した .env はどちらの場合も書き戻されます

--mcp=<destination> が指定されている場合、./.env の自動フォールバック読み込みはスキップされます。

例:

# Named destination, session kept in memory (default)
mcp-abap-adt --mcp=TRIAL --system-type=cloud

# Named destination, session persisted to sessions/TRIAL.env
mcp-abap-adt --mcp=TRIAL --unsafe --system-type=cloud

# Custom base directory for service-keys/ and sessions/
mcp-abap-adt --mcp=TRIAL --auth-broker-path=~/prj/tmp/ --unsafe --system-type=cloud

# Browser login on another callback port
mcp-abap-adt --mcp=TRIAL --browser-auth-port=61005 --system-type=cloud

設定オプションの全一覧については、クライアント設定を参照してください。

ハンドラーログの切り替え
  • AUTH_LOG_LEVEL=error|warn|info|debug — ハンドラーロガーの基本ログレベルを設定します。DEBUG_AUTH_LOG=true でも debug が有効になります。
  • HANDLER_LOG_SILENT=true — ハンドラーログを完全に無効にします。
  • DEBUG_CONNECTORS=true — 高レベルハンドラーの接続ログを詳細にします。
  • DEBUG_HANDLERS=true — 選択した読み取り専用/システムハンドラーの詳細ログを有効にします。

開発

テスト
npm test
テストログの切り替え
  • TEST_LOG_LEVEL=error|warn|info|debug — テストロガーの詳細度を制御します(DEBUG_TESTS/DEBUG_ADT_TESTS/DEBUG_CONNECTORS を指定すると debug が強制されます)。
  • TEST_LOG_FILE=/tmp/adt-tests.log — テストログをファイルに書き込みます(可能な範囲で実行)。
  • TEST_LOG_SILENT=true — テストのログ処理を無効にします(コンソール出力は抑制されます)。
  • TEST_LOG_COLOR=true — テストログ行に色付き/プレフィックス付きタグを追加します。
  • テスト内のすべての console.* は、[test] プレフィックス付きでテストロガー経由で出力されます。
ビルド
npm run build
開発者ツール
# Generate tool documentation
npm run docs:tools

# See tools/README.md for more developer utilities

貢献者

すべての貢献者に感謝します!一覧については、CONTRIBUTORS.mdを参照してください。


謝辞:このプロジェクトは、もともと mario-andreschak/mcp-abap-adt に着想を得ています。中核となるコンセプトから始め、独自のアーキテクチャと機能を備えた独立したプロジェクトへと発展させました。

ライセンス

ライブラリは Apache-2.0、サーバーは AGPL の二つのライセンスです。 どちらが適用されるかは、インストールするパッケージによって異なります。

パッケージライセンス
@mcp-abap-adt/lib, background-runs-memory, responsible-rules, compact-readonly-entries, compact-modifyApache-2.0LICENSE, NOTICE;各パッケージ固有の LICENSE
@mcp-abap-adt/server-runtime, core, http, sse, compact, compact-http, compact-sse および 6 つの -ro パッケージAGPL-3.0-onlyserver/LICENSE;各パッケージ固有の LICENSE

18 個すべてを、このリポジトリから依存関係の順に 1 つのコマンドで公開します (リリース)。

npm run release:dry        # rehearses every package, touches nothing
npm run release:publish    # @mcp-abap-adt/lib first, then the packages that depend on it

release:publish は、レジストリにすでに存在するバージョンをスキップするため、失敗後に再実行すると最初からやり直すのではなく、途中から再開します。最初の失敗時に中断するため、依存パッケージがまだ公開されていない状態で、その上位のパッケージを公開することはありません。

npm publish と npm run は別のコマンドです。npm publish release は、レジストリにある release という名前のパッケージを公開するよう npm に指示します。これは他の誰かのパッケージです。

Copyright © 2025–2026 Oleksii Kyslytsia

いずれも有用であることを願って配布されていますが、商品性または特定目的への適合性に関する黙示の保証を含め、いかなる保証もありません。

これが意味すること。 自分のデータに対して実行する場合、いずれのパッケージにも条件はありません。

ライブラリを自分のアプリケーションに組み込む場合、アプリケーションをオープンソースにする義務はありません。Apache-2.0 が求めるのは、通知とライセンス文を併せて配布することだけです。

スタンドアロンのサーバーを配布する場合、または改変したバージョンをネットワークサービスとして実行する場合は、AGPL 第 13 条に基づき、ソースコードを含め、同じ自由を利用者にも提供する必要があります。そのため、二つは別のパッケージになっています。ライブラリをインストールしても、サーバーが依存関係ツリーに入ることはありません。

その下層のパッケージは LGPL-3.0-only です — @mcp-abap-adt/adt-clients、adt-strategies、connection、logger、auth-broker、auth-providers、auth-stores および契約パッケージの interfaces-adt、interfaces-adt-connection、interfaces-network、interfaces-auth、interfaces-auth-sap、interfaces-utils です。ライブラリはこれらを実行時にリンクします。この段落を書いた時点では 4 つでしたが、現在はルールの適用範囲全体に及び、ライブラリは LGPL、サーバーは AGPL または GPL です。また、一部の認証パッケージに残っていた MIT ライセンスは、提供条件ではなく見落としによるものでした。LGPL はお客様独自のコードには及びませんが、このプロジェクトのライセンスにかかわらず、これらのパッケージにはその条項が適用されます。このリポジトリの通知ではなく、その点を踏まえて計画してください。

別の条件での提供も可能です。 Apache-2.0 はライブラリを公開提供する際のライセンスであり、提供できる唯一の条件ではありません。著作権者は、別の条件を必要とする相手に同じコードを個別にライセンスできます。それによって、Apache-2.0 のもとで受け取った人の権利が損なわれることはありません。そのライセンスは永続的です。CONTRIBUTORS.md には、その選択肢を維持するための条件が記録されています。下層パッケージの LGPL コードをこのツリーにコピーしないというルールも含まれます。

履歴。 8.13.0 までのリリースは MIT であり、引き続き MIT です。9.x は GPL-3.0-only でした。ライセンス変更は遡及適用されません。以前のリリースは、誰でも引き続きそのリリースに適用されていたライセンスのもとで利用できます。再ライセンスが適法だった経緯の全容については、CONTRIBUTORS.md をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。