达西安市
通过ADT API进行SAP ABAP开发的MCP服务器。将AI助手连接到您的SAP系统——在没有SAP GUI的情况下读取、写入、测试和部署ABAP代码。
AI可以创建对象、编写源代码、激活、管理传输、运行代码、查询表和检查质量。完整的开发生命周期,而不仅仅是只读或代码生成。
起源
Dassian的fork增加了输入验证、错误智能、MCP启发、会话恢复和测试套件。看 CHANGES.md 查看完整列表。
它的作用
涵盖整个ABAP开发生命周期的25个工具:
| 类别 | 工具 | 它们的作用 |
|---|---|---|
| 源 | abap_get_source, abap_set_source, abap_get_function_group | 读取/写入任何对象类型的ABAP源代码。函数组工具在一次调用中获取所有包含和FM。 |
| 对象 | abap_create, abap_delete, abap_activate, abap_search, abap_object_info | 完整的对象生命周期。在$TMP或真实包中创建。自动类型映射(CLAS->CLAS/OC)。 |
| 运输 | transport_create, transport_assign, transport_release, transport_list, transport_info, transport_contents | 创建、填充和释放传输。FUGR/VIEW/TABL的智能元数据处理 |
| 质量 | abap_syntax_check, abap_atc_run | 语法检查和ATC,支持变体。CI模式系统的解决方法。 |
| 数据 | abap_table, abap_query | 使用WHERE/LIKE/BETWEEN读取表/CDS视图。执行自由式SQL。 |
| 跑 | abap_run | 创建临时类,运行ABAP代码,捕获输出,清理。自动检测SAP版本中的~run与~main。 |
| 系统 | login, healthcheck, abap_get_dump, raw_http | 会话管理、连接测试、ST22转储、原始ADT访问。 |
| Git | git_repos, git_pull | gCTS存储库列表和拉取。 |
快速开始
先决条件
- Node.js 18+
- 访问启用ADT的SAP系统(端口44300)
- 具有开发授权的SAP用户
安装
git clone https://github.com/DassianInc/dassian-adt.git
cd dassian-adt
npm install
npm run build配置
cp .env.example .env
# Edit .env with your SAP connection details:
# SAP_URL=https://your-sap-server:44300
# SAP_USER=YOUR_USER
# SAP_PASSWORD=YOUR_PASSWORD
# SAP_CLIENT=100
# SAP_LANGUAGE=EN对于自签名证书,请添加到您的 .env:
NODE_TLS_REJECT_UNAUTHORIZED=0连接到克劳德代码
添加到您的Claude Code MCP设置中(~/.config/claude-code/config.json 或项目 .claude/settings.local.json):
{
"mcpServers": {
"abap": {
"command": "node",
"args": ["/path/to/dassian-adt/dist/index.js"],
"env": {
"SAP_URL": "https://your-sap-server:44300",
"SAP_USER": "YOUR_USER",
"SAP_PASSWORD": "YOUR_PASSWORD",
"SAP_CLIENT": "100",
"SAP_LANGUAGE": "EN"
}
}
}
}多个系统?为每个系统添加一个条目:
{
"mcpServers": {
"abap-dev": {
"command": "node",
"args": ["/path/to/dassian-adt/dist/index.js"],
"env": { "SAP_URL": "https://dev-system:44300", "SAP_USER": "...", "SAP_PASSWORD": "..." }
},
"abap-qa": {
"command": "node",
"args": ["/path/to/dassian-adt/dist/index.js"],
"env": { "SAP_URL": "https://qa-system:44300", "SAP_USER": "...", "SAP_PASSWORD": "..." }
}
}
}HTTP模式(团队部署)
对于团队范围的访问,请将服务器作为集中式HTTP服务运行:
MCP_TRANSPORT=http MCP_HTTP_PORT=3000 \
SAP_URL=https://your-sap-server:44300 \
SAP_USER=SERVICE_USER \
SAP_PASSWORD=... \
node dist/index.js每个客户端都有自己的MCP会话(和SAP会话)。健康检查在 http://your-server:3000/health.
使用远程URL从Claude Code连接:
{
"mcpServers": {
"abap": {
"type": "url",
"url": "http://your-server:3000/mcp"
}
}
}或者在claude.ai上注册为整个组织的团队集成。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
MCP_TRANSPORT | stdio | 运输方式: stdio (本地)或 http (远程) |
MCP_HTTP_PORT | 3000 | HTTP服务器端口 |
MCP_HTTP_PATH | /mcp | MCP端点路径 |
测试
npm test # 165 unit tests, write -> activate -> delete)主要特点
零碰撞输入验证
集中式验证中间件在任何处理程序逻辑运行之前检查每个工具所需的参数。缺失 name?失踪 type错误准确地指出了缺失的内容。没有堆栈痕迹,没有 Cannot read properties of undefined.
MCP激发
当AI忘记一个必需的参数时,服务器不会失败,而是直接询问用户:
- 缺失的包 上
abap_create->默认为$TMP的“哪个包?”表单 - 缺少运输工具 上
abap_set_source->“哪种传输方式?”提示,然后重试 - 运输放行 ->“发布D25K900161?这是不可逆转的”确认
- 剩余课程 上
abap_run->“删除ZCL_TMP_ADT_RUN并重试?”提示 - 不活跃的家属 上
abap_activate->“也激活它们吗?”列表
对不支持启发式的客户优雅地回心转意。
自我纠正错误消息
每个SAP错误都经过分类,并附有可操作的提示:
- 锁定对象->“检查SM12是否有活动锁”
- 升级模式->“运行SPAU_ENH清除升级标志”
- 不透明的
I::000code->“URL路径错误--检查对象类型” - 作为对象名称传递的传输号->“改用Transport_contents”
- 字符串模板中的管道字符->“用\\|转义或使用CONCATENATE”
AI会读取这些提示,并在下一次调用时进行自我更正。
自动会话恢复
每个ADT调用都包含在 withSession()如果SAP会话在操作过程中过期,服务器将自动重新登录并重试。用户永远不会看到会话超时。
SAP发布检测
abap_run 自动检测系统是否使用 IF_OO_ADT_CLASSRUN~run (\<=2023)或 ~main (2024+)通过登录后读取接口源代码。适用于任何S/4HANA版本,无需配置。
建筑
Client (Claude Code, VS Code, etc.)
|
| MCP protocol (stdio)
|
AbapAdtServer (index.ts)
|
+-- BaseHandler (session mgmt, validation, elicitation)
| |
| +-- SourceHandlers (get/set source, function groups)
| +-- ObjectHandlers (create, delete, activate, search)
| +-- TransportHandlers (create, assign, release, list)
| +-- QualityHandlers (syntax check, ATC)
| +-- DataHandlers (table read, SQL query)
| +-- RunHandlers (temp class execution)
| +-- SystemHandlers (login, healthcheck, dumps)
| +-- GitHandlers (gCTS repos, pull)
|
+-- lib/urlBuilder.ts (ADT URL construction for 30+ object types)
+-- lib/errors.ts (SAP error classification + hints)
+-- lib/logger.ts (JSON structured logging)贡献
欢迎捐款。拜托:
- 分叉存储库
- 创建要素分支
- 跑
npm test并确保所有测试通过 - 打开拉取请求
学分
- 达信股份有限公司。 --叉架维护器
许可证
麻省理工学院——见 许可证.
