关于 abap-mcp
abap-mcp 是一款本地优先的 MCP 服务,为编码 Agent 提供 SAP ABAP 与 RAP 源码的确定性工具。它支持检查、修复、Cloud 就绪度评估、迁移规划和代码脚手架,无需 SAP 系统或凭据。
主要功能
- 01检查 ABAP 并解释规则发现
- 02确定性地修复源码
- 03评估 ABAP Cloud 就绪度并规划迁移
- 04检查已发布 API 和对象依赖
- 05生成 RAP 业务对象与 ABAP Unit 测试脚手架
- 06比较代码变更并概览类结构
适用场景
- 01在代码到达 SAP 系统前审查 ABAP 变更
- 02评定仓库的 ABAP Cloud 就绪度
- 03制定分阶段的 Cloud 迁移待办
- 04生成经过校验的 RAP 业务对象脚手架
MCP 相关
向 MCP 客户端提供 ABAP 分析、代码生成工具和引导式工作流提示词。默认通过 stdio 在本地运行,也提供可选的受保护 HTTP 版本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
18收录的工具列表 · 更新于 4 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| files | array | 是 | 要分析的源文件,每次调用最多 32 个,每个最多 100k 个字符。 |
| focus | enum | 否 | 精选规则包筛选条件:仅报告带有此 abaplint 标签的规则——"Performance" 用于性能调优检查,"Security" 用于安全检查,"Styleguide" 用于遵循 Clean ABAP 风格。解析器错误始终会报告。使用预设 "syntax-only" 时将忽略此项。可与 rules 结合,重新调整规则包中的个别规则。Performance | Security | Styleguide |
| rules | object | 否 | 合并到预设(以及焦点筛选条件)上的 abaplint 规则覆盖,例如 { "line_length": { "length": 120 }, "7bit_ascii": false }——可在此配置组织的最佳实践规则包。 |
| preset | enum | 否 | "style"(默认):abaplint 默认规则,但不含全程序语义检查——适用于独立代码片段。"full":所有默认规则,要求提供所有被引用的对象。"syntax-only":仅报告解析器错误。style | full | syntax-only |
| rapCheck | boolean | 否 | 如果调用包含 .bdef.asbdef 或 .srvd.srvdsrv 文件,也运行 abap-mcp 自带的 RAP 行为/服务定义检查器,并将其发现合并到带命名空间的 "rap/RAP026" 样式规则键下。默认值为 true——abaplint 对这些文件类型完全不会返回结果。设为 false 可仅输出 abaplint 结果(例如,用于比较不同版本发现数量的 CI)。 |
| abapVersion | enum | 否 | 用于解析的 ABAP 语言版本。"v758"(默认)是当前本地部署版本;"Cloud" 表示 ABAP Cloud / Steampunk。Cloud | v750 | v751 | v752 | v753 | v754 | v755 | v756 | v757 | v758 |
详细介绍
abap-mcp
让你的 AI 编码 Agent 成为 SAP ABAP 和 RAP 专家顾问——默认在本地运行。无需 SAP 系统和凭据,一条命令即可安装。
abap-mcp 是一个 Model Context Protocol 服务,可为任何 AI 编码 Agent——Claude Code、GitHub Copilot、Cursor、Codex、Windsurf——提供真正的 ABAP 感知能力,构建于 abaplint(开源 ABAP 解析器/linter)之上。Agent 负责推理;abap-mcp 提供真实依据:确定性的解析器、客观评分,以及经过验证、能让 AI 保持准确的生成器。无论 Agent 在哪里工作,它都能处理 ABAP 源码——Git 检出目录、abapGit 导出、代码评审或 CI——无需等到代码进入系统。
- 刚接触 ABAP 或 RAP? 你的 Agent 会成为在旁指导的资深顾问:编写时按 Clean ABAP 检查每段代码片段(
lint_abap),解释每项发现及其理由和示例(explain_abap_rule),并通过scaffold_rap_bo从规范且经过自验证的 RAP 业务对象开始,而不是面对空白编辑器。 - 资深 ABAP 顾问? 把它用作评估和任务引擎:让 Agent 检查代码仓库,即可获得带有 A–D 技术债评级的 ABAP Cloud 就绪度评分分类报告(
check_cloud_readiness)、包含工作量和退出标准的分阶段迁移待办清单(plan_cloud_migration)、每次重构客观的前后对比结论(compare_abap)、已发布 API 的替代方案(check_released_api),以及在迁移过程中坚守标准的 CI 门禁。
默认的 stdio 版本完全在本地运行:分析引擎不会发起任何网络请求,也不会读取任何用户文件。源码以文本形式传入,返回结构化发现。已发布 API 清单和 abaplint 规则数据随软件包附带。可选的受保护 Streamable HTTP 版本可让 ChatGPT 网页版等远程客户端使用相同工具;在此模式下,源码文本会发送到你托管的机器。请参阅隐私和数据处理。
为什么要开发它
其他 ABAP MCP 服务要么是连接到实时 SAP 系统的桥接工具(ADT/RFC——需要凭据、系统和信任),要么是文档搜索工具。但 AI 编码 Agent 大部分时间都在处理文件——编辑 abapGit 代码库、评审差异、生成代码——远在代码进入系统之前。这个服务在这一层为 Agent 补上了缺失的反馈循环:
- “这段 ABAP 能解析吗?代码整洁吗?性能如何?” →
lint_abap(加上聚焦规则包) - “自动修复这段代码——大小写、过时语法。” →
fix_abap(确定性修复,由解析器保证) - “这份经典报表离 ABAP Cloud 还有多远?给它评级。” →
check_cloud_readiness(A–D) - “规划迁移——我们该先处理什么?” →
plan_cloud_migration(分阶段待办清单) - “这个类没有测试——为我搭一个测试框架。” →
scaffold_abap_unit(默认生成失败的测试) - “对象之间有哪些依赖?应该先迁移哪个对象?” →
get_object_dependencies(加上 Mermaid) - “这次重构让代码变好了还是变差了?” →
compare_abap - “MARA 是已发布 API 吗?应该用什么替代?” →
check_released_api - “为我创建一个正确的 RAP 业务对象。” →
scaffold_rap_bo - “这个 4,000 行的类里有什么?画出来。” →
get_abap_outline(加上 Mermaid)
安装 — 60 秒
唯一要求是 Node.js 22+。无需 SAP 系统、凭据或 API 密钥。刚接触 AI 工具(或 ABAP)? 请按照从零开始的指南 docs/INSTALL.md 操作,或者让安装程序帮你完成:
npx abap-mcp setup # detects VS Code / Claude Code and registers the server; guides Eclipse
否则,请选择你的客户端:
Codex CLI · Codex IDE 扩展 · ChatGPT 桌面版 — 只需一条命令,即可在同一 Codex 主机上配置这三者:
codex mcp add abap-mcp -- npx -y abap-mcp
重启 ChatGPT 桌面版或 IDE 扩展,然后使用 /mcp 确认 abap-mcp 已连接。在 ChatGPT 桌面版中,你也可以打开 Settings → MCP servers → Add server,选择 STDIO,并输入命令 npx 和参数 -y abap-mcp。
Codex 插件(MCP 服务 + review/mentor/migration 技能)
codex plugin marketplace add palimkarakshay/abap-mcp
codex plugin add abap-mcp@abap-mcp
ChatGPT 网页版无法启动本地 npx 进程。它需要已部署的 HTTPS /mcp 端点或安全的开发隧道。本仓库提供 HTTP 入口和加固控制,但不运营公共服务。请参阅 OpenAI 设置与自托管指南。
Claude Code
claude mcp add abap-mcp -- npx -y abap-mcp
VS Code(Copilot Agent 模式) — 点击上方的 Install in VS Code 徽章即可安装,或运行一条命令:
code --add-mcp '{"name":"abap-mcp","command":"npx","args":["-y","abap-mcp"]}'
如需供整个团队使用,请将 examples/vscode/mcp.json 提交为 abapGit 仓库中的 .vscode/mcp.json — 每个打开该文件夹的人都会自动看到此服务。
Eclipse(通过 GitHub Copilot 插件) — Eclipse 中的 Copilot Chat 支持 MCP:打开 Copilot 菜单 → Edit preferences → MCP,然后添加相同的 "abap-mcp" 服务配置块(命令为 npx,参数为 ["-y", "abap-mcp"])。操作步骤和前置条件:
GitHub 的 MCP 文档,Eclipse 选项卡。
目前,未安装 Copilot 的标准 ADT 没有 MCP 客户端。
Cursor · Windsurf · 任意 MCP 客户端 — 将以下内容添加到其
mcp.json / .mcp.json(项目级或全局):
{
"mcpServers": {
"abap-mcp": { "command": "npx", "args": ["-y", "abap-mcp"] }
}
}
Claude Desktop — 打开 Settings → Developer → Edit Config,将相同的 mcpServers 配置块添加到
claude_desktop_config.json,然后重启。
从克隆仓库开始(参与贡献 / 开发):
npm install && npm run build
claude mcp add abap-mcp -- node /path/to/abap-mcp/dist/cli.js
已连接?向你的 Agent 提问 “列出你的 ABAP 工具” — 默认应会看到十八个工具,从
lint_abap 到 check_rap_behavior,另外还有启用选项的 run_abap_unit(需设置
ABAP_MCP_ENABLE_RUN=1)。
首先可以尝试的问题
- “这是我的功能规格说明 — 根据它构建 RAP 实现。”(或运行
/mcp__abap-mcp__abap-from-spec) - “根据 ABAP Cloud 检查这个类的代码规范,并像对新手一样解释最严重的问题。”
- “这个仓库对云环境的适配程度如何?给它打分,并分阶段制定迁移计划。”
- “MARA 是已发布的 API 吗?我应该用什么替代?”
- “为表 zbooking 上的实体 Booking 搭建一个 RAP BO,并启用草稿。”
- “我重构了 zcl_pricing — 比较新旧版本:它真的变好了吗?”
内置引导式工作流(MCP 提示词)
顾问的实战指南以 4 个 MCP 提示词和 4 个 Codex 插件技能的形式提供。在
Claude Code 中,提示词会显示为斜杠命令(/mcp__abap-mcp__…);支持提示词的客户端
会原生列出这些提示词,而 Codex 插件则会发现对应的技能:
| 提示词 | 功能 |
|---|---|
abap-from-spec | 终结空白页困境。 提供功能/技术规格说明——或用日常语言描述需求——Agent 就会构建可运行且通过验证的现代 ABAP/RAP:规格说明 → 包含 ASSUMPTION 登记表的构建计划 → 确定性的 scaffold_rap_bo 基础框架 → 行为逻辑 → 每个文件都通过 fix_abap + lint_abap 检查,直到无问题 → 填充单元测试 → 按激活顺序交付。未经 lint 检查的内容绝不会交付。 |
abap-review | 完整的资深顾问代码审查:lint → 分类处理 → 解释每项发现背后的原因 → 最小化修复 → 通过 compare_abap 证明返工效果。可选的 focus(Performance / Security / Styleguide)。 |
abap-mentor | 在本次会话的其余时间里开启贴身指导模式:每段代码片段都会在后台进行 lint 和就绪度检查,将发现转化为通俗易懂的指导,新对象从经过验证的脚手架开始。 |
abap-migration-plan | 由 plan_cloud_migration 驱动、可直接交付客户的分阶段迁移计划——当前状态、包含 S/M/L 工作量和退出标准的阶段、单独列出的已发布 API 工作——然后提议执行第 1 阶段。 |
CLI — 同一引擎,无需 AI
每个工具也都有对应的子命令,因此在没有 MCP 客户端的终端和 CI 环境中也能使用:
npx abap-mcp lint src/ # lint files or whole directories
npx abap-mcp fix src/ --write # apply abaplint's deterministic auto-fixes in place
npx abap-mcp lint src/ --focus Performance # themed pass: Performance | Security | Styleguide
npx abap-mcp lint src/ --rules-file org.json # your org's abaplint rule pack, same engine
npx abap-mcp readiness src/ --fail-below 80 # repo-level ABAP Cloud readiness, scored + graded A–D
npx abap-mcp plan src/ # phased migration backlog: work items, S/M/L efforts, exit criteria
npx abap-mcp unittest src/ --out tests/ # failing-by-default ABAP Unit skeletons for untested classes
npx abap-mcp deps src/ --mermaid # dependency graph (+released-API flags) as a Mermaid diagram
npx abap-mcp compare old/ new/ # rework verdict: findings resolved/introduced, grade movement
npx abap-mcp scaffold --entity Travel --table ztravel --key travel_id --out ./out
npx abap-mcp outline src/zcl_monster.clas.abap # navigate big objects (--mermaid for a diagram)
npx abap-mcp released MARA I_Product --edition btp # released-API status + successor, per edition (s4hc|btp|pce)
npx abap-mcp explain exit_or_check # rule rationale
npx abap-mcp release --since 2605 rap # bundled ABAP Cloud/RAP release-delta knowledge (dated, sourced)
npx abap-mcp knowledge "clean core level C" # search the bundled SAP knowledge base (Clean Core, ATC, SAP-AI)
npx abap-mcp aisdk --scenario ZDEMO_AI --interaction string --out ./out # scaffold a Generative AI Hub call
npx abap-mcp agent-rules --target Cloud --paired sap-adt-mcp --run # print the AGENTS.md rules block
npx abap-mcp rapcheck src/ --release 2508 # check RAP behavior/service definitions (BDEF/SRVD); exit 1 on errors
npx abap-mcp unittest --run src/ # EXECUTE ABAP Unit tests offline (open-abap kernel, no DB/CDS/EML); exit 1 on failure
目录会递归遍历(遵循 abapGit 命名方式)、自动分批处理,而 readiness
会将各批次合并为一份带评分和分类的仓库报告。退出代码适用于 CI
(发现错误问题 / 未达到阈值时为 1)。
Agent 式工作流、配方与 CI
docs/examples/abap2xlsx-assessment.md — 展示所有这些工具
在一个真实且知名的开源仓库上能产出什么(100 个文件,3 条命令,无需系统)。
docs/COOKBOOK.md — 实用配方:修复直至无问题的循环、
无需传输请求的 PR 审查、全仓库迁移分类、CI 门禁、各类角色的用例。
examples/claude-code/ — 开箱即用的 Agent 式工作流,将这些
工具变成贴身顾问:abap-code-reviewer 子 Agent、abap-cloud-migrator 扫描循环(以就绪度评分作为循环条件)、abap-tech-debt-assessor(评级为 A–D 的客户交付物)、每仓库的 .mcp.json,以及适用于 abapGit 仓库的
GitHub Actions 质量门禁。
Agent 式循环
Agent 在任何内容进入系统之前都可以运行的完整离线循环:
- 搭建脚手架 — 使用
scaffold_rap_bo、scaffold_abap_unit或scaffold_abap_ai_sdk,从经过 验证的起点开始,而不是面对空白编辑器。 - 先修复,再 lint — 先运行
fix_abap(确定性的机械处理),再运行lint_abap,直到 问题归零或有意识地豁免。 - 运行 —
run_abap_unit(通过ABAP_MCP_ENABLE_RUN=1选择启用,或始终通过abap-mcp unittest --run启用)执行 ABAP Unit 测试,并将实际通过/失败结果反馈到循环中——TH Köln 的 ABAP 基准测试(arXiv 2601.15188)测得,仅此一项就在多轮反馈中将 Claude Opus 4.5 的任务成功率从 31.6% 提升到 78.7%。 - 就绪度 — 使用
check_cloud_readiness/plan_cloud_migration为结果评级并估算 剩余工作;compare_abap可证明返工没有造成回归。 - 交接 — 配合 SAP 官方 ADT MCP 服务或
abap-adt-mcp完成系统内部分 (写入、激活、ATC、实际运行 ABAP Unit)——参见相关项目。
工具
| 工具 | 功能 |
|---|---|
lint_abap | 对 ABAP/CDS/BDEF 源码运行 abaplint 静态分析 → 输出结构化发现项,并附规则文档链接。预设:style(默认,适用于代码片段)、full、syntax-only;支持为组织规则包覆盖单条规则;可使用 focus 视角(Performance / Security / Styleguide)进行主题审查。 |
check_cloud_readiness | 双重解析差异(经典基线与 Cloud):将当前有效但在 ABAP Cloud 中不合法的语句归类为阻碍项(dynpro、列表输出、原生 SQL 等),并给出透明评分,以及按密度分档的 A–D 技术债务等级;基线解析已失败的代码会单独报告,不计入迁移工作量。此外,还会展示单独的、带日期的已发布 API 交叉检查(releasedApiFindings):在源码中发现的对未发布经典表的直接访问和弃用 API 用法,并提供 CDS 后继项提示——仅供参考,不计入评分。 |
fix_abap | 应用并验证 abaplint 自带的可自动修正项:关键字大小写、具有明确现代替代写法的过时语句(MOVE → = 等)。每轮批处理后都会重新解析;可能导致解析失败的批次会被丢弃——输出由解析器保证,绝不猜测。无法自动修正的发现项会作为 remaining 返回,供需要判断的返工处理(使用 compare_abap 验证)。 |
plan_cloud_migration | 在就绪度检查之上提供任务管理层:按咨询实践顺序,将每项阻碍安排到分阶段待办事项中——先修复基线,再处理机械式快速改进、核心返工、UI 重新架构,最后是单独的、标注快照日期的已发布 API 阶段。每项工作都附带 S/M/L 工作量等级、修复方案和示例位置;每个阶段都包含目标和可重新检查的退出标准。结果确定性:相同的就绪度数据,只是重新编排——不引入新的判断。 |
compare_abap | 对返工进行前后对比:已解决与新增的 lint 发现项(按内容匹配,因此代码移动不会产生干扰)、阻碍项/评分/等级变化,以及新增或删除的类/方法/FORM。是重构和 AI 重写的客观评判工具。 |
check_released_api | 在 SAP 按版本随附的 Cloudification 快照中查询对象(表、CDS 视图、函数模块、类等)(edition: s4hc | btp | pce,默认 s4hc)→ 为每个对象给出 released / deprecated / not-released 状态;还会提供 SAP 官方公布的后继项、常见经典表的精选 CDS 后继项回退信息,以及 classicAPI/noAPI/internalAPI 分类。离线提供就绪度检查中的已发布 API 部分。 |
scaffold_rap_bo | 生成规范的 RAP 托管 BO 技术栈(根视图、strict(2) 行为定义 + 可选草稿、行为类 + 本地处理程序、投影视图、元数据扩展、OData V4 服务定义),以及建议的表 DDL、激活顺序和后续步骤。 |
scaffold_abap_unit | 为每个全局类生成本地 ABAP Unit 测试类:包含 setup,并为每个公共方法生成一个测试骨架;每个骨架都会以显眼的 TODO 失败,避免生成但为空的测试冒充覆盖率。生成结果会与被测类一起通过 abaplint 回译验证。 |
get_object_dependencies | 根据提供的源码构建依赖关系图——解析器级别的表/函数引用(标注已发布 API 状态和 CDS 后继项)、继承/实现结构,以及如实标注的文本交叉引用。可选输出 Mermaid 流程图。与 plan_cloud_migration 配套,用于确定处理顺序。 |
list_abap_rules | 浏览 abaplint 的约 180 条规则(按文本或标签筛选)。 |
explain_abap_rule | 深入讲解一条规则——设计依据(通常参考 Clean ABAP)、示例和文档 URL。 |
format_abap | 离线美化打印器(关键字大小写 + 缩进)。 |
get_abap_outline | 提取源码中的类/方法/可见性/接口/FORM——无需通读即可了解大型对象。可选输出 Mermaid classDiagram,直观呈现结构。 |
explain_abap_release | ABAP Cloud / CDS / RAP / EML / ATC 版本差异的随附知识库,经过整理并标注日期(2026-09-10),涵盖 2502–2608 版本系列和 ABAP Platform 2025——每行都是带 SAP 来源 URL 引用的原始摘要,并标注 confirmed / reported 置信度;可按 sinceRelease、product、kind 筛选。 |
search_sap_knowledge | 对同一知识包以及 Clean Core 治理内容(A–D 级、C0–C3 版本契约、ATC 的实际术语)和 7 张 SAP AI 决策卡(SAP-ABAP-1、Generative AI Hub、ABAP AI SDK、SAP 官方 ADT MCP 服务等)进行全文搜索——每条命中结果都附带来源和置信度。 |
scaffold_abap_ai_sdk | 生成已验证的 ABAP 类,通过 ABAP AI SDK(ISLM)调用 Generative AI Hub:支持 7 种交互形式(字符串、消息、提示词模板、函数调用、结构化输出、流式处理、编排);使用 abap-mcp 自带的 IF_AIC_* 存根通过 abaplint 回译验证(validated: "abaplint-syntax");并返回其自身无法执行的 ISLM 手动设置步骤。 |
get_abap_agent_rules | 为 ABAP 仓库输出 AGENTS.md / CLAUDE.md 规则块:提交前 lint、就绪度门禁、已发布 API 规范、优先使用脚手架、离线单元测试循环,以及与在线 ADT MCP 服务的分工。 |
check_rap_behavior | 使用 abap-mcp 自带的 BDL/SDL 解析器和 48 条规则集检查 RAP 行为定义(.bdef.asbdef)及 CDS 服务定义(.srvd.srvdsrv)(40 条行为规则,包括结构层级、7 条服务定义规则、1 条版本门禁)——abaplint 不会深度解析这两种文件类型,因此这是在没有系统时唯一可用的静态反馈。涵盖草稿/etag/锁定/授权/编号一致性规则、严格模式要求、操作/运算/验证/确定/副作用的一致性、针对基础 BDEF 的投影 use,以及针对同一次调用中传入的 CDS 实体的服务 expose;提供 abapRelease 时,还会对晚于该版本的结构进行门禁检查。采用双层设计:标点错误属于错误;语法不认识的结构则会明确说明,并标记为 info。 |
run_abap_unit (可选启用 — ABAP_MCP_ENABLE_RUN=1) | 离线执行 ABAP Unit 测试:通过 @abaplint/transpiler 转译为 JavaScript,使用随附的 open-abap 内核,并在沙箱子进程中运行(服务端管理的临时目录、严格超时、文件访问限定于该目录;不会使用网络,但不会阻止网络访问)——每个方法输出一行通过/失败/错误/跳过结果,并附上如实的静态 lint 结果。仅能证明纯逻辑的正确性——不涉及 DB/CDS/EML/AMDP/授权。在 CLI 中始终可用:abap-mcp unittest --run。 |
知识库与资源
软件包附带一套有日期标注且附有引用来源的 SAP 知识包(整理于 2026-09-10):包含 100 条 ABAP Cloud / RAP 发布差异记录(2502–2608 版本系列 + ABAP Platform 2025,并修正了 2502 之前的时间线,避免 Agent 将已确立的功能说成 2025–26 年的新功能)、55 条 Clean Core 条目(级别 A–D、发布契约 C0–C3、真实的 ATC 术语),以及 7 张 SAP AI 决策卡(SAP-ABAP-1、Generative AI Hub 编排、ABAP AI SDK、Joule for Developers、SAP 官方 ADT MCP 服务,等等)。每条记录都是 abap-mcp 基于引用来源撰写的原创摘要,并标注 confirmed / reported 置信度——绝不复制 SAP 原文(参见 docs/DESIGN.md 中的许可边界)。
可通过工具(explain_abap_release、search_sap_knowledge;CLI release / knowledge)访问,也可通过 MCP 资源直接附加到对话中,供主机使用:abap-mcp://knowledge/manifest(所有捆绑文件的来源信息)、.../release-deltas、.../clean-core、.../sap-ai(完整文件),以及 .../release/{id}、.../clean-core/{id}、.../sap-ai/{id}(单张卡片,每张均以 application/json 和 text/markdown 格式返回)。
说明:本工具 不是什么
- 不是 ATC。 客观就绪度评分仍属于语言层面:ABAP Cloud 语句已移除。已发布 API 的覆盖情况现在是部分覆盖、离线且按版本版次区分:
check_released_api和就绪度报告中的releasedApiFindings反映 SAP 发布的 Cloudification 列表截至随附快照日期的内容——每个 SAP 版本版次各一份(s4hcPublic Edition、btp、pcePrivate Edition/本地部署;edition参数默认值为s4hc)——覆盖源代码中引用的表和函数模块,而非所有 API,且时效性仅与快照相同。目标系统自身的 ATC 检查(Public Edition 使用"Usage of Released APIs (Cloudification Repository)";Private Edition 和本地部署使用"Usage of APIs (Cloudification Repository)",通过ABAP_CLEAN_CORE_DEVELOPMENT/ABAP_CLEAN_CORE_READINESS等检查变体执行)仍具有权威性;应将“列表中不存在”的结果视为“截至快照时尚未发布”,而非确凿证明。就绪度报告中的grade是我们自己的阻断项密度分级(gradeMeaning: "blocker-density"),并非 SAP 的 Clean Core Level A–D——请查看报告中的cleanCoreVocabulary,了解真正的 ATC 术语(src/data/atc-vocabulary.json)。 - 脚手架验证分级进行。 生成的类和 CDS 视图会先在 Cloud 级别通过 abaplint 往返验证,然后再返回(生成器和检查器共用一个解析器)。行为定义和服务定义不在 abaplint 的检查范围内,因此会改用 abap-mcp 自有的 RAP 检查器;当检查结果中没有错误或警告级别的问题时,会标记为
validated: "rap-checker";元数据扩展没有任何检查器,因此仍标记为"template"。每个生成的文件都会标记为validated: "abaplint" | "rap-checker" | "template",而 ADT 激活仍是最终裁决标准。 - RAP 检查器使用的是我们自己的语法,而非 SAP 的解析器。
check_rap_behavior(以及合并到lint_abap中的rap/…问题)使用本项目根据 SAP 发布的 RAP BDL 功能表、ABAP 关键字文档和 102 个 Apache-2.0 许可的 SAP 示例源码文件编写的分词器和语法来读取 BDEF/SRVD。每份报告都会列出grammarVersion、rulesVersion和scopeNote,说明这些信息能够证明和不能证明的内容:它无法查看 DDIC 表、行为池类或 CDS 字段类型,无法识别的结构会报告为信息,绝不会报告为错误。源自低于 SAP 文档级别的规则最高只标记为warning,并会在消息中注明其来源。所有已发布的规则均记录在docs/RAP-RULES.md中。 run_abap_unit不是 SAP 内核。 它会将代码转译为 JavaScript,并在 open-abap 内核上执行(选择启用:ABAP_MCP_ENABLE_RUN=1;通过 CLI 的unittest --run时始终启用)——没有数据库(任何 ABAP SQL 都会中止方法)、没有 CDS、没有 EML/RAP 运行时、没有 AMDP、没有权限检查、没有锁、没有 ATC,也不会激活。运行通过只能证明纯逻辑的表现,绝不代表系统行为得到验证;无法执行的结构会在unsupported中返回,绝不会被悄然判定为通过。scaffold_abap_ai_sdk依据的是 abap-mcp 自带的存根,而非 SAP 的真实 API。 生成的类会使用本项目根据 SAP 文档编写的IF_AIC_*/CL_AIC_*声明,通过捆绑的 abaplint 进行往返验证;这些声明并非来自 SAP 源码。类会标记为validated: "abaplint-syntax",表示 ABAP 语法可解析,并不表示其签名与 SAP 实际的 ABAP AI SDK 完全匹配。它所依赖的 ISLM 手动设置(SAP_COM_0A69、INTS/INTM)会列在setupSteps中,不会自动执行。- 按设计仅处理输入文本。 分析引擎不会遍历用户文件系统,也不会访问外部网络;它只会解析你明确传入的字符串。使用 stdio 时,这些字符串由本地子进程处理。使用 Streamable HTTP 时,字符串会传输到端点运营方,因此请使用 HTTPS、身份验证和文档说明的隐私控制。如需处理整个目录,请使用下方的 CLI、在 CI 中使用 abaplint,或使用 mcp-kit
wrap-abaplint配方。
开发
npm install
npm run check # typecheck + tests + build + routing eval — the CI gate
node dist/cli.js # stdio MCP server
npm run start:http # guarded Streamable HTTP on http://127.0.0.1:3000/mcp
npx @modelcontextprotocol/inspector --cli node dist/cli.js --method tools/list
工具和提示词描述会通过 CI 评分(评分规则会检查名称是否以动词开头、何时使用、非目标、参数说明和示例演练——遵循 mcp-kit 的规范)。
设计
决策日志——为什么选择离线模式、为什么选择 abaplint、为什么采用双解析就绪度差异比较、为什么脚手架会验证自身输出,以及哪些内容被有意排除——见
docs/DESIGN.md。
在线配套项目:abap-mcp-genai
一个独立的可选二进制文件——abap-mcp-genai,默认服务绝不会导入它——使用你自己的 SAP AI Core 租户封装 SAP Generative AI Hub 编排服务:explain_with_sap_abap_1(请 SAP 自己针对 ABAP 调优的模型解释一个类、方法或代码片段)和 list_genai_hub_models。
使用时,你的 ABAP 源代码会离开这台机器——它会发送到 SAP 基础设施,受你所在组织自己的 SAP AI Core 合同约束,绝不会发送给 abap-mcp 的作者。启用前请完整阅读
docs/GENAI.md。
相关项目
- Furkan Coşgun 的 abap-kit(MIT)——一个 CLI,可搭建完整的离线 ABAP 项目(abapGit 布局、abaplint + 转译器配置、open-abap 运行时),还可通过 abaplint 转译器在本地执行 ABAP Unit 测试。两者在设计上互为补充:abap-kit 构建并运行项目测试框架;abap-mcp 则在其中为你的 AI Agent 提供分析、规划和脚手架工具——
abap-kit create+abap-mcp setup即可构成完整的离线 ABAP+AI 工作区。其转译并运行流水线是run_abap_unit(v0.11)如今在本服务中原生提供该功能的先行预览,基于同一套 abaplint 转译器 + open-abap-core 基础。 - SAP 官方 ADT MCP 服务(GA,随 ADT 提供,适用于 Eclipse 和 VS Code;8 个工具集共 20 个工具,其中 18 个无需许可证)——可在真实系统中编写、激活和测试 ABAP(
abap_creation-create_object、abap_activate_objects、abap_run_unit_tests、abap_run_atc、……),但自身不具备离线 lint、就绪度评级或已发布 API 交叉检查功能。 - Willian Saez 的 abap-adt-mcp(MIT)——社区版的同类项目,基于同一 ADT REST API 提供 173 个在线工具,采用相同的实时系统信任模型。
- 配合使用。 abap-mcp 会在离线环境中于前后进行验证:在代码写入系统前使用
lint_abap/check_cloud_readiness/compare_abap,然后再次检查 SAP 官方服务或abap-adt-mcp刚刚写入、激活或运行 ATC 的内容。两个在线服务都不需要 abap-mcp,abap-mcp 也不需要凭据——请参阅 docs/COOKBOOK.md 中的操作指南,以及get_abap_agent_rules中可粘贴到仓库 AGENTS.md 的规则文本。
致谢
- Lars Hvam 的 abaplint——本项目所有工具背后的解析器和规则引擎(MIT)。
- SAP/abap-atc-cr-cv-s4hc——SAP 官方 ABAP Cloud 化资源库(对象发布列表),Apache-2.0。随附的已发布 API 快照(
src/data/released-apis.json,每周发布时刷新一次——工具输出包含其snapshotDate)是对该数据的精简转换,注明出处并依据 Apache-2.0 重新分发;流水线详见 docs/DESIGN.md 和scripts/build-released-api-index.mjs。 - mcp-kit——本服务遵循的生产级 MCP 模式(类型化工具规格、传输规范、描述 lint)。
MIT © Akshay Palimkar。本项目与 SAP SE 无关联,也未获得其认可。“SAP”、“ABAP”和“RAP”是 SAP SE 的商标;这是一个面向相关开发者的独立开源工具。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。