sap-adt-mcp
sap-adt-mcp
用于 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+ |
|
SAP 系统 | NetWeaver 7.31 SP04+ 且 ICF 节点 |
|
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 中注册两个命令:
命令 | 用途 |
| 通过终端管理连接(密码以隐藏方式提示) |
| 运行 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(按项目) |
|
Claude Code |
|
Claude Desktop |
|
如果你希望直接从源码运行而不安装该包,请替换为 "command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"]。
验证
在 Cursor 中,服务器会在 Settings > MCP 下显示为 user-sap-adt。要在任何客户端中测试,请调用 sap_list_environments()——它应返回已保存连接的列表。
问题 | 解决方法 |
服务器未显示 | 检查配置文件路径并重新打开客户端 |
服务器显示红色 | 在终端中运行 |
| 该包安装在了另一个虚拟环境中 |
| 运行 |
| 运行 |
凭据
通过终端(推荐)
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 中的
corrNr和sap-transportrequest请求头)sap_system_info探测端点,并指出哪些工具在那里无法使用
详见参考文档第 6.7 节。
MCP 工具(25)
连接与凭据
工具 | 描述 |
| 在 SAP 系统中进行身份验证(支持已保存的环境) |
| 结束当前连接(允许切换系统) |
| 诊断:系统支持哪些 ADT 端点 |
| 列出可用的 ADT 服务 |
| 将凭据存储在操作系统的凭据管理器中 |
| 删除已保存的凭据 |
| 列出已保存的 SAP 环境 |
仓库
工具 | 描述 |
| 搜索 ABAP 对象(CLAS、PROG、INTF、FUGR、TABL) |
| 列出包内容(支持命名空间) |
| 获取对象详情(名称、类型、包、负责人) |
| 将 DDIC 元数据导出为 Markdown |
源代码
工具 | 描述 |
| 读取 ABAP 源代码(可选:保存到本地文件) |
| 自动锁定、传输和激活写入源代码 |
| 编译/激活对象 |
| 不激活的语法检查 |
传输请求
工具 | 描述 |
| 检查对象的锁定状态 |
| 列出打开的传输请求 |
| 创建新的传输请求 |
| 释放传输请求 |
| 检查对象是否需要传输 |
创建与删除
工具 | 描述 |
| 创建新的 ABAP 程序 |
| 创建新的 ABAP 类 |
| 创建新的 ABAP 接口 |
| 创建新的 ABAP 包(DEVC),本地或可传输 |
| 删除 ABAP 对象(需要 |
每个工具的参数、示例和返回: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依赖 | 用途 |
| ADT REST API 的 HTTP 客户端 |
| Model Context Protocol SDK(FastMCP) |
| XML 解析 |
| 在操作系统管理器中的凭据 |
开发
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 的输出。
文档
文档 | 内容 |
命令参考:参数、示例、SAP 先决条件和 CLI 手册 | |
完整技术文档(英文) | |
完整技术文档(葡萄牙语) | |
使用这些工具的助手的工作规则 |
许可证
独立项目,与 SAP SE 没有隶属关系、赞助或认可。SAP、ABAP 和 SAP NetWeaver 是 SAP SE 的商标。该工具仅使用公开文档化的 ADT API,并使用用户自己的 凭据。
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
- 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
- AlicenseCqualityCmaintenanceEnables interaction with SAP ABAP systems through ADT APIs, allowing management of ABAP objects, transport requests, and code analysis via natural language.100148MIT
- AlicenseCqualityCmaintenanceFacilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.100148MIT
- 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 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.
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/engoetz/sap-adt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server