Skip to main content
Glama
sap-adt-mcp

sap-adt-mcp

by engoetz

sap-adt-mcp

tests license python

SAP ADT(ABAP Development Tools)のREST API向けMCPサーバーおよびPythonクライアントです。Eclipse ADTが使用するのと同じ操作(リポジトリ検索、ソースコードの読み書き、アクティベーション、構文チェック、トランスポートリクエストの処理)を、同じ /sap/bc/adt/* エンドポイントに対して行うことで、AIアシスタントに提供します。

完全な技術ドキュメント(英語): docs/PROJECT_DOCUMENTATION.md。


できること

  • 検索とナビゲーション — ワイルドカード(Z*、ZCL_*)によるオブジェクト検索、パッケージの内容(名前空間 /ACME/PKG を含む)、メタデータ

  • ソースの読み書き — ロック、トランスポート割り当て、アクティベーションを1回の呼び出しで実行。ローカルファイルの保存/読み込みも任意で可能

  • アクティベーションと構文チェック — 行・列単位のエラーメッセージ付き

  • トランスポート — 一覧表示、作成、リリース、オブジェクトがトランスポートを必要とするかの確認

  • オブジェクト作成 — プログラム、クラス、インターフェース、パッケージ(ローカルまたはトランスポート可能)

  • DDICのMarkdownエクスポート — テーブル、データ要素、ドメイン、ビューをAIが読み取り可能なコンテキストに変換

  • 古いリリースでの動作 — メディアタイプはエンドポイントごとにネゴシエーションされ、sap_system_info がそのシステムでサポートされている内容を示します

認証情報はOSの資格情報マネージャーに保存され、パスワードがプロジェクトのファイルに書き込まれることはありません。


Related MCP server: MCP-ADT

必要条件

必要条件

最小要件

確認方法

Python

3.10+

python --version

SAPシステム

NetWeaver 7.31 SP04+ でICFノード /sap/bc/adt が有効

sap-adt test <ID>

MCPクライアント

Cursor、Claude Code、Claude Desktop、VS Code、その他MCP対応クライアント

—

ネットワーク

SAPのホストとポートへのアクセス

—

SAP側の前提条件(ICFサービス、ロール、権限オブジェクト)の詳細は、コマンドリファレンスのセクション6 を参照してください。


インストール

GitHubから直接(推奨)

pip install git+https://github.com/engoetz/sap-adt-mcp

これによりPATHに2つのコマンドが登録されます:

コマンド

用途

sap-adt

ターミナルで接続を管理(パスワードは非表示プロンプト)

sap-adt-mcp

MCPサーバー(stdio)を実行

何も恒久的にインストールせずに、uv を使う場合:

uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcp

ソースコードから(開発用)

git clone https://github.com/engoetz/sap-adt-mcp
cd sap-adt-mcp
python -m venv .venv && .venv/Scripts/activate   # Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests -q

MCPクライアントでの設定

インストール後、sap-adt-mcp コマンドはすでにPATHにあります。絶対パスは必要ありません:

{
  "mcpServers": {
    "sap-adt": {
      "command": "sap-adt-mcp",
      "args": []
    }
  }
}

このブロックを置く場所:

クライアント

ファイル

Cursor(グローバル)

~/.cursor/mcp.json — Windows: C:\Users\<usuário>\.cursor\mcp.json

Cursor(プロジェクト単位)

プロジェクトルートの .cursor/mcp.json — テンプレートは .cursor/mcp.json.example にあります

Claude Code

claude mcp add sap-adt -- sap-adt-mcp

Claude Desktop

claude_desktop_config.json

パッケージをインストールせずにソースコードから直接実行したい場合は、"command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"] に置き換えてください。

確認

Cursorでは、サーバーは Settings > MCP の user-sap-adt として表示されます。任意のクライアントでテストするには、sap_list_environments() を呼び出してください。保存済み接続の一覧が返されます。

問題

解決方法

サーバーが表示されない

設定ファイルのパスを確認し、クライアントを開き直す

サーバーが赤い

ターミナルで sap-adt-mcp を実行してエラーを確認。通常はPATH上のPythonが誤っている

ModuleNotFoundError: sap_adt

パッケージが別の仮想環境にインストールされている

No password available

sap-adt password <ID> を実行

Missing connection parameter(s)

sap-adt add <ID> で接続を作成


認証情報

ターミナルから(推奨)

sap-adt add DEV

このコマンドは、ホスト、ポート、クライアント、ユーザー、言語、HTTPSを尋ねます(Enterで提案値を承認)。最後にパスワードを尋ねます——画面にエコーされずに2回入力します。これにより、パスワードはシェルの履歴やAIとの会話履歴に残りません。

sap-adt list                      # conexões salvas e se têm senha
sap-adt edit DEV --port 8020      # alterar campos sem tocar na senha
sap-adt password DEV              # trocar apenas a senha
sap-adt test DEV                  # conectar e sondar os endpoints ADT
sap-adt delete DEV                # remover conexão e senha

--password パラメータは存在しません。仕様上、パスワードはプロンプトでのみ入力します。自動化の場合は、SAP_PASSWORD 環境変数が使用できます。

パスワードはOSのキーリング(Windows Credential Manager、macOS Keychain、Linux Secret Service)に保存されます。その他のパラメータは ~/.sap-adt/environments.json に保存され、プロジェクトの外部に置かれます。

チャットから

sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...") でも同じことができますが、パスワードが会話に記録されます。ターミナルを優先してください。


初回使用

sap_connect(system_id="DEV")
sap_system_info()                       # o que este sistema suporta (rode em release antiga)

sap_search(query="Z*", object_type="CLAS")
sap_read_source(object_name="ZCL_MINHA_CLASSE", object_type="CLAS")

sap_write_source(
    object_name="ZCL_MINHA_CLASSE",
    object_type="CLAS",
    source_code="...",
    transport_request="DEVK900123"
)

MCPクライアントの外部では、sap-adt test DEV がターミナルで同じ診断を実行します。


リリース間の互換性

古いシステム(ECC、NetWeaver 7.3x)はADTのサブセットしか公開しておらず、同じメディアタイプのバージョンを常に理解するとは限りません。クライアントはこれを自動的に処理します:

  • メディアタイプのネゴシエーションをエンドポイントごとに、新しいものから古いものへと行い、機能したものを記憶

  • 代替手段によるディスカバリ(/sap/bc/adt/discovery がSICFで有効でない場合)

  • トランスポートを2つの形式で送信(クエリの corrNr とヘッダー sap-transportrequest)

  • sap_system_info がエンドポイントを調査し、どのツールがそこで機能しないかを示す

詳細はリファレンスのセクション6.7 を参照してください。


MCPツール(25)

接続と認証情報

ツール

説明

sap_connect

SAPシステムに認証(保存済み環境をサポート)

sap_disconnect

現在の接続を終了(システムの切り替えを許可)

sap_system_info

診断: システムがサポートするADTエンドポイント

sap_discovery

利用可能なADTサービスを一覧表示

sap_save_password

認証情報をOSの資格情報マネージャーに保存

sap_delete_password

保存済みの認証情報を削除

sap_list_environments

保存済みのSAP環境を一覧表示

リポジトリ

ツール

説明

sap_search

ABAPオブジェクトを検索(CLAS、PROG、INTF、FUGR、TABL)

sap_browse_package

パッケージの内容を一覧表示(名前空間をサポート)

sap_object_metadata

オブジェクトの詳細を取得(名前、種類、パッケージ、責任者)

sap_export_ddic_markdown

DDICメタデータをMarkdownとしてエクスポート

ソースコード

ツール

説明

sap_read_source

ABAPソースコードを読み取る(オプション: ローカルファイルに保存)

sap_write_source

自動ロック、トランスポート、アクティベーション付きでソースを書き込む

sap_activate

オブジェクトをコンパイル/アクティベート

sap_syntax_check

アクティベートせずに構文チェック

トランスポート

ツール

説明

sap_check_lock

オブジェクトのロック状態を確認

sap_list_transports

オープン中のトランスポートリクエストを一覧表示

sap_create_transport

新しいトランスポートリクエストを作成

sap_release_transport

トランスポートリクエストをリリース

sap_transport_check

オブジェクトがトランスポートを必要とするか確認

作成と削除

ツール

説明

sap_create_program

新しいABAPプログラムを作成

sap_create_class

新しいABAPクラスを作成

sap_create_interface

新しいABAPインターフェースを作成

sap_create_package

新しいABAPパッケージ(DEVC)を作成、ローカルまたはトランスポート可能

sap_delete_object

ABAPオブジェクトを削除(confirm='DELETE' が必要)

各ツールのパラメータ、例、戻り値: docs/MCP_COMMAND_REFERENCE.md


アーキテクチャ

Cliente MCP  →  servidor MCP (stdio/JSON-RPC)  →  cliente REST ADT  →  SAP /sap/bc/adt/*
src/sap_adt/
├── client.py            # HTTP: autenticação, CSRF, sessões stateful, negociação de media type
├── credential_store.py  # ~/.sap-adt/environments.json + keyring do SO
├── repository.py        # pesquisa, navegação de pacotes, metadados
├── source.py            # leitura/escrita de fonte com bloqueio
├── activation.py        # ativação e verificação de sintaxe
├── transport.py         # transport requests (CTS)
├── ddic_export.py       # DDIC → Markdown
├── cli.py               # comando `sap-adt`
├── models.py            # dataclasses
├── exceptions.py        # hierarquia de exceções
└── mcp_server.py        # servidor MCP com as 25 ferramentas

依存関係

目的

requests

ADT REST APIのHTTPクライアント

mcp

Model Context Protocol SDK(FastMCP)

lxml

XMLパース

keyring

OSの管理ツールに資格情報を保存


開発

pip install -e ".[dev]"
python -m pytest tests -q

テストはオフラインです。SAPシステムもネットワークも必要ありません。URI解決、静的レスポンス(古いリリースの形式を含む)を使ったXMLパーサー、CLIをカバーしています。CIはLinuxとWindows、Python 3.10と3.13でスイートを実行し、パッケージがビルドされることを確認します。

貢献や問題報告は、issues から歓迎します。issueを開くときは、ホスト名、ユーザー、クライアント、またはプロプライエタリなコードの断片を貼り付けないでください。動作を説明し、可能であれば sap_system_info の出力を含めてください。


ドキュメント

ドキュメント

内容

docs/MCP_COMMAND_REFERENCE.md

コマンドリファレンス: パラメータ、例、SAP 前提条件、CLI マニュアル

docs/PROJECT_DOCUMENTATION.md

完全な技術ドキュメント (英語)

docs/PROJECT_DOCUMENTATION_PT-BR.md

完全な技術ドキュメント (ポルトガル語)

AGENTS.md

ツールを使用するアシスタントのための作業ルール


ライセンス

Apache-2.0.

独立したプロジェクトであり、SAP SE との提携、スポンサー、または推奨は一切ありません。SAP、ABAP、SAP NetWeaver は SAP SE の商標です。このツールは、公開されている ADT API をユーザー自身の資格情報で利用するだけです。

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Facilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.
    100
    171 npm
    MIT
  • A
    license
    A
    quality
    D
    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
    541 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform ABAP Development Tools operations on SAP ERP (ECC and S/4HANA) systems, including source code editing, object activation, syntax checks, and ABAP unit tests.
    8 npm
    MIT