Skip to main content
Glama
engoetz

sap-adt-mcp

by engoetz

sap-adt-mcp

tests license python

用于 SAP ADT(ABAP Development Tools)REST API 的 MCP 服务器和 Python 客户端。它为你的 AI 助手提供 Eclipse ADT 所使用的相同操作——搜索仓库、读取和写入源代码、激活、检查语法以及处理传输请求——通过与相同的 /sap/bc/adt/* 端点通信。

完整的技术文档(英文)见:docs/PROJECT_DOCUMENTATION.md


功能

  • 搜索和导航 — 按通配符(Z*ZCL_*)查找对象、包内容(包括带命名空间 /ACME/PKG)和元数据

  • 读取和写入源代码 — 在一次调用中完成锁定、传输分配和激活;可选保存/读取本地文件

  • 激活和语法检查 — 附带有行列号的错误消息

  • 传输请求 — 列出、创建、释放以及检查对象是否需要传输

  • 创建对象 — 程序、类、接口和包(本地或可传输)

  • 以 Markdown 导出 DDIC — 表、数据元素、域和视图变成 AI 可读的上下文

  • 兼容旧版本 — 按端点协商媒体类型,sap_system_info 会告知该系统支持什么

凭据存储在操作系统的凭据管理器中;不会在项目文件中写入任何密码。


Related MCP server: mcp-abap-abap-adt-api

要求

要求

最低版本

验证方式

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 中注册两个命令:

命令

用途

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 接受建议值),最后是密码——需输入两次,屏幕上无回显。这样密码不会进入 shell 历史记录,也不会进入与 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 环境变量。

密码会保存到操作系统的 keyring(Windows 凭据管理器、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 中未激活时

  • 以两种方式发送传输请求(query 中的 corrNrsap-transportrequest 请求头)

  • sap_system_info 探测端点,并指出哪些工具在那里无法使用

详见参考文档第 6.7 节


MCP 工具(25)

连接与凭据

工具

描述

sap_connect

在 SAP 系统中进行身份验证(支持已保存的环境)

sap_disconnect

结束当前连接(允许切换系统)

sap_system_info

诊断:系统支持哪些 ADT 端点

sap_discovery

列出可用的 ADT 服务

sap_save_password

将凭据存储在操作系统的凭据管理器中

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

在操作系统管理器中的凭据


开发

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,并使用用户自己的 凭据。

A
license - permissive license
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

  • A
    license
    C
    quality
    C
    maintenance
    Facilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.
    100
    148
    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 GitHub - manage repos, issues, PRs, and workflows through natural language.

  • 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.

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/engoetz/sap-adt-mcp'

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