SAP ABAP Codex + ADT MCP:AI 全链路接管 ABAP 开发!

发布时间:2026/10/26 10:07:29

SAP ABAP Codex + ADT MCP:AI 全链路接管 ABAP 开发! 文章目录前言01、案例介绍/笔者需求02、MCP的介绍与选择a.MCP基础概念b.市面主流ADT MCP对比03、前置准备工作a.下载安装Codex(ChatGPT桌面版)b.申请大模型API Keyc.Codex配置大模型04、SAP官方 Eclipse ADT MCP 部署实操a.Eclipse开启ADT MCP Serverb.Codex配置官方MCP服务并验证连通性05、第三方 abap‑adt‑mcp 完整部署推荐a.NodeJS安装b.下载 abap‑adt‑mcpc.配置systems.jsond.验证MCP服务是否可以正常启动06、Codex的配置和调用MCP服务a.config的配置和注意事项b.Codex调用MCP服务07、使用参数 MCP_TOOLSETS 来节省Token08、Workbuddy的全链路配置以及使用技巧 (强烈推荐)a.mcp 配置差异 WorkBuddy vs Codexb.Workbuddy的下载以及MCP的配置使用09、Workbuddy的使用技巧a.runSnippet工具的了解b.用户的长期记忆和skill的整理c.如何用好一个Agent工具END、总结前言本文目前1.5w字这篇文章会持续更新优化先点赞 关注 收藏制作不易 谢谢这篇文章给大家介绍SAP ABAP ADT MCP 结合Codex实现AI读写操作ABAP源码完整实操包含官方ADT MCP、第三方abap‑adt‑mcp、openadt‑mcp对比以及完整安装配置、踩坑排查全过程。本文使用CodexChatGPT桌面端作为Agent客户端同类工具还有 Workbuddy、Trae(字节)、Cursor 等等不过笔者实测下来感觉还是Workbuddy比较好用 如果比模型能力的话还是GPT好一点 但是Wokrbuddy它模型是免费啊 而且有云端资料库 配置友好 更适合小白 在我目前看来我是选择Workbuddy作为ABAP开发的第一选择但是Codex的配置使用 我们也必须会 这样我们才能了解到MCP这套配置到底是怎么打通模型与SAP之前的桥梁的。01、案例介绍/笔者需求传统Web开发代码存放在本地AI工具可以直接读写本地源码但SAP ABAP代码存储在SAP服务端数据库中本地无法直接拿到源码AI不能直接操作ABAP对象。MCP 即为大模型提供调用能力的工具协议把SAP ADT REST接口封装成MCP工具集让AI大模型可以直接完成查询ABAP对象、读取源码、修改源码、语法检查、ATC检查、激活、传输请求等全套ABAP开发动作也可以用来分析报错追查链路 以及数据分析。本文实操演示使用 CodexChatGPT桌面版 MCP 对接SAP ADT分为【SAP官方Eclipse ADT MCP】、【第三方 abap‑adt‑mcp】两套部署方案。如果说不能用codex或者说不想用codex的话可以直接看第8章。因为Workbuddy配置MCP是无脑配置我在用codex的时候不知道是模型能力的问题还是codex的原因codex自己配置起来比较吃力。想要了解MCP服务到底是怎么打通sap与大模型之间的桥梁的可以详细看一下配置步骤如果不想看的话直接看第8章就行了。02、MCP的介绍与选择好多人可能对 MCP是什么 不太清楚 或者 同样的 MCP 不确定自己 该选择哪一个 。a.MCP基础概念MCP就是专门提供给大模型调用的接口工具集。举例子微信团队可以把微信一些接口封装MCP工具集给大模型MCP工具集会有Description(工具的用法)来告诉大模型发送消息、撤回消息调用哪个工具、传什么参数大模型根据自然语言自动选择调用对应工具。1.ADT的底层原理SAP 的 ADT 本质就是调用SAP后台ADT REST接口实现对象查询、源码读写、激活等操作你也完全可以用http的形式调用这些接口完成读写源码等等操作。前提是你SAP开启了ADT服务。2.ADT MCPMCP只是对ADT接口做一层封装适配AI大模型调用标准。封装之后的接口对于大模型来说是易用的这就好比我们ABAP开发的时候喜欢把HTTP或者是EXCEL上载哪套东西自己再封装一层就用起来比较方便了 对于大模型来说也是一样的不是原生的不能用 只是封装一下更方便使用。这样理论上也可以节省很多token。b.市面主流ADT MCP对比ADT MCP 其实不多 我们一般用 abap‑adt‑mcp 这个MCP目前来说是比较全面强大的 以下是几个MCP的对比。MCP名称特点优点缺点abap‑adt‑mcpAgent级完整能力173个工具、15个工具集支持多系统独立服务无需Eclipse功能最全支持源码读写、激活、ATC、Unit测试、Dump分析、传输请求需要NodeJS环境需要维护systems.json配置文件openadt‑mcp代理SAP官方MCP Server叠加OpenADT增强工具架构轻量复用官方ADT能力补充锁、格式化、引用查找基于官方MCP做代理底层依赖Eclipse MCP服务SAP官方Eclipse ADT MCPSAP原厂自带Eclipse内置开启配置简单SAP官方出品工具极少缺少源码读写等核心能力必须保持Eclipse持续打开登录03、前置准备工作这个步骤的介绍 需要准备的客户端软件、大模型API‑Key提前备份配置文件。a.下载安装Codex(ChatGPT桌面版)ChatGPT桌面版 有多种下载路径 , 可以在ChatGPT官网下载 也可以 在微软商店下载。https://apps.microsoft.com/detail/9PLM9XGG6VKS?hlneutralglCNocidpdpshareb.申请大模型API Key如果说你的codex是可以正常使用GPT的自家模型那么你可以忽略这个步骤和下面的步骤。演示使用Kimi访问 https://platform.kimi.com/console/api-keys 获取key新用户赠送15元额度高并发场景容易被限流可以按需充值。也可以使用GPT、各类中转API。如果你会魔法上网的话并且你GPT额度充足的话完全可以忽略大模型配置这个步骤。但是GPT每个月送的免费额度基本一天就会消耗完可能你配置到一半在测试过程中你的额度就没了。c.Codex配置大模型codex 怎么配置kimi官网也有文档 很详细 链接是 https://platform.kimi.com/docs/guide/codex-kimi#windows-powershell⚠️重要修改config.toml之前务必复制备份一份原文件后续切换模型使用。修改model参数优先使用model kimi‑k2.6不要直接写kimi‑k3部分账号没有开通该模型权限可访问定价页面查看账号可用模型https://platform.kimi.com/docs/pricing/chat。修改配置后完全退出Codex再重启。现象第一次启动、第一次提问响应很慢免费额度算力拥挤时会长时间卡在【正在启动你的任务】耐心等待。目前这些操作步骤还跟我们MCP没有任何关系建议大家先搞一个稳定的大模型API。04、SAP官方 Eclipse ADT MCP 部署实操⚠️注意官方MCP工具集不全仅适合体验缺少读写源码能力运行期间Eclipse必须保持打开并登录SAP系统。 仅作了解 不想了解的可以直接看下个章节。a.Eclipse开启ADT MCP Server这个步骤的介绍开启Eclipse内置MCP服务监听本地2234端口。1.开启MCP服务Eclipse 菜单栏Window—Preferences…—ABAP Development—MCP Server— 勾选Enable ADT MCP Server—Apply and Close。在后面配置的时候最主要的就是token就是下图我打了马赛克那一串密钥。2.验证端口监听状态浏览器访问127.0.0.1:2234/mcp下图证明服务启动成功注意这里只是MCP服务正常但是它是明显报错权限错误了因为我们访问的时候没有带上token或者使用下方命令验证,返回TcpTestSucceeded : True代表端口监听正常。Test‑NetConnection localhost ‑Port22343.配置用户环境变量 SAP_ADT_MCP_TOKEN从Eclipse MCP配置页面复制tokenPowerShell设置用户环境变量 用如下命令。(打开PowerShell可以右击开始菜单)[Environment]::SetEnvironmentVariable(SAP_ADT_MCP_TOKEN,你的token字符串,User)校验环境变量是否写入成功用如下命令输出token值代表配置成功。也可以图形界面打开Windows用户环境变量查看。[Environment]::GetEnvironmentVariable(SAP_ADT_MCP_TOKEN,User)我们要搞清楚并不是说我们把token配置进了环境变量我们浏览器访问这个MCP服务就不会报权限错误了正常来说你浏览器去访问这个MCP服务它是不会带上这个token的肯定是要以调用接口的形式带上这个token才行。那么后面我们配置好codex的MCP服务之后它去访问的时候它就会从环境变量里面获取token带上token去访问这个服务那么就不会报权限错误了。浏览器访问我们只是想验证这个MCP服务有没有开启b.Codex配置官方MCP服务并验证连通性这个步骤的介绍修改codex的config.toml注册sap_adt MCP服务。1.打开codex配置文件PowerShell命令快速打开用如下命令其实对应的路径就是C:\Users\95817.codex\config.toml你也可以手动去打开notepad$env:USERPROFILE\.codex\config.toml在配置文件末尾追加下面内容mcp_servers代表我们配置的这是一个MCP的服务后面的.sap_adt是我们这个MCP服务的名称你也可以叫ABC 叫123都可以。其余参数我在下面有更详细的介绍[mcp_servers.sap_adt]enabledtrueurl[http://localhost:2234/mcp](http://localhost:2234/mcp)bearer_token_env_varSAP_ADT_MCP_TOKENstartup_timeout_sec30tool_timeout_sec120[mcp_servers.sap_adt.tools.abap_list_destinations]approval_modeapprove参数的详细介绍参数含义及详细说明配置注意事项[mcp_servers.sap_adt]定义一个 MCP Server 配置区块。sap_adt是这个 MCP 服务在客户端中的名称后续可以通过这个名称识别和管理该服务。sap_adt可以根据自己的习惯命名例如sap_adt_dev。它是客户端配置中的标识不是 SAP 系统的 SID也不是 SAP 登录用户名。enabled是否启用该 MCP Server。true表示启用false表示禁用。禁用后客户端不会正常使用该服务。urlMCP Server 的访问地址。这里配置的是 SAP 官方 ADT MCP Server 在本机启动的 HTTP 服务地址。示例为http://localhost:2234/mcp。其中localhost表示本机2234是端口号/mcp是 MCP 服务端点。端口需要与 Eclipse 中 ADT MCP Server 的实际配置一致。如果修改了 Eclipse 中的端口这里也需要同步修改。bearer_token_env_var指定存放 Bearer Token 的环境变量名称。客户端通过该环境变量读取 Token并使用它进行 MCP 服务认证。示例中的环境变量名称是SAP_ADT_MCP_TOKEN。需要先在 Eclipse 的 ADT MCP Server 设置中获取或查看对应的 Server Token再将 Token 的实际值设置到该环境变量中。配置文件中填写的是变量名称而不是 Token 本身。startup_timeout_secMCP Server 启动超时时间单位为秒。示例设置为30表示客户端等待服务启动或建立连接时使用的启动超时限制。若服务启动较慢可以根据实际情况适当调大。对于连接到已经运行的本地 HTTP 服务的场景具体启动行为还取决于 MCP 客户端的实现。tool_timeout_secMCP 工具调用的超时时间单位为秒。示例设置为120即 120 秒。AI 调用某个 MCP 工具后如果工具执行时间较长可以适当调大该值。超时时间过短可能导致调用提前结束但调大超时时间并不能解决权限不足、认证失败或网络不通等问题。[mcp_servers.sap_adt.tools.abap_list_destinations]为sap_adt服务下名为abap_list_destinations的工具单独定义配置。这里的工具用于列出 ADT MCP Server 可识别的 ABAP 连接目标或 Destination 信息。该配置区块只针对这个具体工具不会自动应用到其他 MCP 工具。工具名称应与服务实际提供的名称保持一致。approval_mode控制指定工具的调用审批行为。这里的approve是针对abap_list_destinations工具设置的审批模式。它属于 MCP 客户端的工具调用策略而不是 SAP 后端的授权配置。具体的审批行为以及允许使用的模式取决于 MCP 客户端的实现和版本不能据此认为 SAP 端已经授予了相关权限。2.重启Codex并做连通性测试提示词务必任务栏右键彻底退出Codex重新打开同时保证Eclipse保持打开登录SAP浏览器访问127.0.0.1:2234/mcp正常。重启之后发送如下提示词测试完成后登录SAPGUI查看传输请求是否真实创建。提示词用途提示词内容获取系统列表请直接调用当前已配置的 mcp_servers.sap_adt。先调用 abap_list_destinations把工具实际返回的结果原样告诉我。不要进行任何网页搜索也不要根据你自己的知识推测结果。查看当前可用MCP工具清单连接我的本机配置的 mcp_servers.sap_adt列出你当前可以调用的 SAP ADT 工具。简单业务测试请在包ZXXXX下面创建一个空请求 命名为 test2609103.常见报错排查清单1. Eclipse是否打开MCP Server勾选启用重启Eclipse开关一次MCP服务2. 浏览器确认http://127.0.0.1:2234/mcp可以正常访问3. token环境变量配置为【用户变量】修改环境变量后需要重启Codex4. Codex必须完全退出不能最小化后台驻留。05、第三方 abap‑adt‑mcp 完整部署推荐第三方MCP独立服务不再依赖Eclipse能力完整支持读写修改激活ABAP对象需要NodeJS运行环境。a.NodeJS安装这个步骤的介绍安装NodeJS配置国内npm镜像源解决下载慢。1.下载安装NodeJS官网https://nodejs.org/zh-cn/download下载msi安装包一路Next安装。然后cmd检查notejs是否安装成功 新开一个终端窗口输入命令 node -v 敲回车 再输入 npm -v 敲回车 查看是否返回版本信息node ‑vnpm ‑v2.设置国内镜像源下载之前改一下镜像源 不然可能会很慢 镜像源切换 使用如下命令npm configsetregistry https://registry.npmmirror.comb.下载 abap‑adt‑mcp我们使用固定版本2.0.0不要直接使用最新版避免兼容性变更。1.运行拉取abap‑adt‑mcp一般是用命令npx -y abap-adt-mcp2.0.0来安装 npx -y abap-adt-mcp不建议因为 开发工具每次启动都自动拉“最新版本”。但是笔者写的这个文章等到你们看到的之后应该已经过了很久了所以你们要去了解一下最新版本肯定不要再用2.0.0这个版本了往后的使用过程我们要过一段时间去手动的把版本更新一下因为他这个MCP也是有很多bug的。像我当时安装的时候是2.0现在估计都到2.8了在你使用的过程中呢它可能出现一些bug。然后这个大模型可能就会记录一些长期记忆说这个MCP的某个工具不能使用或者怎么样有什么样的bug。但是MCP他更新了新版本之后他这个结论可能就被推翻了然后你就要去手动的把skill以及用户的长期记忆去更新一下把之前的结论重新的验证一下。npx ‑y abap‑adt‑mcp2.0.0如果输完命令敲回车 终端有时看起来完全静止只有光标在闪。耐心等两分钟如果还是没反应那么就关闭终端 新开一个 先确认 npm 本身能联网 输入 npm ping 网络能通的话可能你忘记切镜像源了 然后可以再次 尝试 用命令npx --loglevel verbose -y abap-adt-mcp2.0.0再次下载 这个命令可以显示实时下载日志下载成功之后可能会提示[abap-adt-mcp] Fatal: No ABAP systems configured. Provide systems.json, SAP_SYSTEMS, SAP_SYSTEMS_FILE, or SAP_URL.这个提示不是报错 它的意思是 包已经装好了程序能正常跑。这个不是报错是它在告诉你缺少配置——你需要告诉它要连哪个 SAP 系统、用什么账号。c.配置systems.json给abap-adt-mcp 配置连接信息 这一步很重要需要细心一点配错一点后面可能就不能正常调用,这个MCP依赖一个json文件读取SAP系统连接的配置信息 这个json文件需要我们自己去创建 官方推荐路径是%USERPROFILE%.abap-adt-mcp\systems.jsonWindows 上就是类似C:\Users\你的Windows用户名.abap-adt-mcp\systems.json这个文件里面的配置也会随着MCP版本的更新而去更新一些参数。1.创建配置目录首先我们去用户名 文件夹下面建立一个文件名叫做 .abap-adt-mcp 可以手动创建也可以直接用如下命令mkdir%USERPROFILE%\.abap-adt-mcp2.创建systems.json文件然后在到这个文件夹下面创建一个json文件 叫做 systems.json 可以手动创建也可以用命令notepad%USERPROFILE%\.abap-adt-mcp\systems.json3.参数的详细介绍用法这个 JSON 配置文件支持配置多个 SAP 系统到时候可以指定 AI 去调用不同的系统。下面介绍各个参数的含义、配置方式和注意事项。后面我也有给复制参考的模板参数含义及配置说明注意事项与示例urlSAP 系统的访问地址。可以在 SAP GUI 中进入事务码SMICM然后点击导航栏的「转到 → 服务」查看系统的协议、端口和主机名据此配置 URL。如果使用 HTTP就配置 HTTP 对应的端口不能把 HTTPS 的端口配置到 HTTP 地址中。优先配置 HTTP因为 HTTPS 可能涉及证书问题。先确保 MCP 服务能够正常连接 SAP再根据实际情况配置 HTTPS。clientSAP 客户端也就是登录 SAP 时使用的 Client。在 SAP GUI 登录界面中可以看到客户端输入框登录成功后也可以在 SAP GUI 窗口右下角查看客户端信息。配置时填写对应的客户端编号例如100。authType认证方式用于指定 MCP 连接 SAP 时采用的身份验证方式。basic表示用户名 密码认证。有些版本还支持jwt即使用 JWT Token 进行认证常见于 SAP BTP 等涉及 Token 认证的系统。具体支持哪些认证方式需要以当前使用的abap-adt-mcp版本为准。userSAP 登录用户名也就是你登录 SAP GUI 时使用的账号。填写对应 SAP 系统的用户名。注意不同 SAP 系统的用户名可能不同需要分别配置。passwordSAP 登录密码。密码通过环境变量设置而不是直接写在 JSON 配置文件中。环境变量的名称必须与配置中的约定保持一致。例如下面的ED1系统对应的环境变量名称是ED1_PASSWORD变量值就是你的 SAP 密码。可以手动在 Windows 的用户环境变量中设置也可以通过命令设置。language登录 SAP 时使用的语言。根据实际需要填写例如英文或中文对应的语言代码。具体代码格式以当前 MCP 版本的配置要求为准。default默认系统配置。当 JSON 中配置了多个 SAP 系统时如果没有明确指定要调用哪个系统就使用设置为默认的那套系统。通常只有一套系统设置为true其他系统设置为false。这样可以避免在未指定目标系统时产生歧义。insecureTls是否跳过 TLS/HTTPS 证书校验。设置为true时会跳过 TLS 证书校验设置为false或删除该参数时则不主动启用这一跳过校验的行为具体默认行为取决于 MCP 版本。只有在自签名证书的开发系统等特定场景下才考虑启用该参数。实际使用中有些公司的证书存在问题或者使用了 Windows/Node.js 默认不信任的自签 CA可能导致 HTTPS 访问被拒绝。这时可以通过insecureTls控制是否跳过证书校验。对于内网生产系统也需要结合公司的安全策略判断不能简单认为内网就没有风险。开启后会降低连接的安全性存在中间人攻击等风险因此正式环境应优先设置为false或删除该参数并正确配置证书。abap-adt-mcp 2.0.0还提供了类似tls: {ca: ...}的配置方式用于添加企业 CA 证书。通常可以先在受控的开发环境中临时设置为true等 MCP 服务打通后再配置正确的证书并关闭跳过校验的选项。readOnly只读策略用于控制 AI 是否可以修改 SAP 系统中的对象。设置为true时AI 只能读取代码不能写入或修改代码设置为false时允许 AI 修改系统中的代码。你目前使用的是false因此需要谨慎操作尤其要注意 AI 修改的对象、代码内容以及目标系统避免误改正式系统中的代码。timeout/timeoutMs请求超时时间单位为毫秒。当网络较慢或 SAP 系统比较繁忙时可以适当调大超时时间避免请求过早超时。具体使用哪个参数名称需要根据当前 MCP 版本的配置要求确定不要在未确认支持的情况下同时配置两个参数。allowedPrefixes/allowedPackages用于限制 AI 可以操作的 SAP 对象范围属于对象访问范围的约束策略。allowedPrefixes可以用于限制允许操作的对象名前缀例如Z、YallowedPackages可以用于指定允许操作的包白名单。通过这些配置可以限制 AI 的操作范围降低其误操作 SAP 标准对象或其他非授权对象的风险。具体支持的格式和限制行为需要以当前版本的实现为准。密码的配置一般都是设置在环境变量中的可以手动在 Windows 的用户环境变量中设置但是环境变量的名称一定要和配置文件中的约定对应。 手动设置→在 Windows 中打开“编辑账户的环境变量”在用户变量中新增→变量名ED1_PASSWORD 、变量值你的 SAP 密码。通过命令设置→在 Windows 命令提示符CMD中执行→setx ED1_PASSWORD “你的SAP密码”设置完成后新开一个终端验证是否设置成功执行命令→echo %ED1_PASSWORD%这个ED1_PASSWORD是我的命名习惯你们也可以命名ABC。以上介绍的这些是一部分参数还有更多的参数会随着这个MCP版本的迭代而增加的所以我们要去根据自己的需求 关注一下官方发布看有没有新的参数出来。以下配置内容是笔者在用的可以进行参考复制。{ED1:{url:http://dev.xxxxx.com:8000,client:200,authType:basic,user:033333,password:${env:ED1_PASSWORD},language:ZH,default:true,insecureTls:true,policy:{readOnly:false}},P800:{url:http://prd.xxxxx.com:8600,client:800,authType:basic,user:033333,password:${env:ED1_PASSWORD800},language:ZH,default:false,policy:{readOnly:true}},Q700:{url:http://qas.xxxx.com:8200,client:700,authType:basic,user:033333,password:${env:ED1_PASSWORD800},language:ZH,default:false,policy:{readOnly:true}}}4.其他注意事项1、多个系统可以分别配置。 JSON 中可以定义多套 SAP 系统并为每套系统配置不同的 url、client、user 和密码环境变量。这样后续就可以根据实际需要指定 AI 调用不同的 SAP 系统。2、默认系统通常只设置一套。 当没有指定目标系统时就使用 default 为 true 的系统避免调用目标不明确。但是这个后期也是通过用户长期记忆和skill去控制的。3、优先保证连接正常再处理证书问题。 如果开发环境的 HTTPS 证书存在问题可以先在受控环境中排查连接问题但不建议把跳过证书校验作为正式环境的长期配置。4、只读策略和对象白名单可以配合使用。 readOnly 用于限制是否允许修改allowedPrefixes 或 allowedPackages 用于约束操作对象的范围两者关注的不是同一件事。5、具体参数以实际版本为准。 不同版本的 abap-adt-mcp 可能在认证方式、TLS 配置和超时参数等方面存在差异实际配置时应以所使用版本的配置文件示例和文档为准。d.验证MCP服务是否可以正常启动这一步我们来验证这个MCP服务是否可用为我们codex后续的使用排除错误。在验证之前请务必按照上面的配置设置好参数。1.终端启动mcp服务新开一个终端输入 npx -y abap-adt-mcp2.0.0 如果显示如下图所示那么就证明MCP服务是没问题的因为笔者的那个json配置文件是改过的所以显示的destination可能跟上面我的那个json配置文件不太一样。从下图来看我这个MCP是识别到了5个系统。2.其他注意事项如果正常启动 这不代表MCP服务可以正常访问SAP系统调用ADT接口了,这只说明 MCP Server 进程启动了不代表 SAP 登录已经成功。MCP服务到底能不能正常使用 还要AI去实际调用一下 这中间可能出现各种问题 例如 授权失败 、证书问题、等等 不过遇到这些问题都可以让AI帮我们排查的 AI排查起来还是很准确方便的。这就好比我们部署了一个服务这个服务可以正常启动了但是至于这个服务能不能正常使用能不能正常处理业务服务器会不会报错还是另外一回事儿呢06、Codex的配置和调用MCP服务因为我们新增了一个MCP服务所以codex这边的配置也要同步改动。最开始的时候我们是用了官方的一个MCP现在我们换为了一个第三方的MCP。a.config的配置和注意事项之前的MCP服务想删就删想留就留。我这边是建议删掉以免混淆使用。1.config增加MCP服务config的对应路径我们在上面也已经说过了我本机的对应路径是→C:\Users\95817.codex\config.toml需要在这个配置文件下增加如下内容。这个配置参数也很好理解command其实就是我们刚才在终端里面测试启动这个MCP服务的命令env呢其实就是我们对应的这个MCP的json配置文件当我们去用codex调用这个MCP的时候Codex也会跟我们做类似一样的服务启动操作。其实下面这个SAP_SYSTEMS_FILE也一般是设置环境变量的 但是我 不想设置那么多环境变量而且这个也不是敏感信息 就直接写了绝对路径了[mcp_servers.abap-adt-mcp] enabled true command npx args [ -y, abap-adt-mcp2.0.0 ] env { SAP_SYSTEMS_FILE C:/Users/你的用户名/.abap-adt-mcp/systems.json }2.重启codex只要环境变量变了 或者这个配置文件变了 都要重启codex配置好重启之后可以打开codex点击左侧导航栏的 插件—右上角齿轮—MCP 就能看到我们添加的MCP了 名称为 abap-adt-mcp这证明我们配置是生效的。3.其他注意事项后续如果测试有问题 可以尝试把command改为绝对路径command “C:\Program Files\nodejs\npx.cmd”一般不用改改绝对路径能解决问题的原因是 你在 CMD 里npx -y abap-adt-mcp2.0.0 只能证明CMD—Windows PATH—npx—node—abap-adt-mcp但是 Codex 是另外一个进程,它看到的环境可能是Codex Desktop —自己的 PATH —找不到 npx—MCP启动失败 所以你可以 用where npx 确定 npx的绝对路径 然后把command配置为绝对路径 。b.Codex调用MCP服务上面的配置都做完之后我们可以用codex尝试直接调用MCP服务来操作sap了。1.健康检查我们可以使用如下提示词来验证我们mcp服务是否正常请使用 abap-adt-mcp MCP。 1. 对 ED1 执行连接/健康检查。 2. 搜索程序 ZXXX 并返回源码。 所有结果必须来自实际 MCP 调用不要使用网络搜索或模型知识推测。07、使用参数 MCP_TOOLSETS 来节省TokenMCP 服务器在会话开始时要把它有哪些工具、每个工具接受什么参数JSON schema整份交给模型而且常驻对话上下文。实测原始体积MCP_TOOLSETS 参数工具数schema 体积约占上下文不设当前等于 all173158 KB≈ 4.0 万 tokenfocused114112 KB≈ 2.8 万 tokencore,source只读源码级2223 KB≈ 0.6 万 token参数设置为欸focused core source objects transports analysis tests atc data runtime砍掉的是 debugger、traces、refactoring重命名/抽方法、rap 生成器、services、git(abapGit)、discovery。源码读写、改代码、传输、单测、ATC 全都保留——你主要是读/改源码的话够用哪天要调试器或 abapGit 再临时改回 all。设置 MCP_TOOLSETS 参数的方法如下也很简单它的实现原理也如下。08、Workbuddy的全链路配置以及使用技巧 (强烈推荐)经过我的使用和实测我觉得workbuddy用来做sap的AI全链路自动开发是最好最方便实用的。而且它也可以配置中转站去使用GPT或者是Claude都可以。a.mcp 配置差异 WorkBuddy vs Codex这里仅做了解如果不想看、不想了解的话可以不看这里 。1.核心差异一览同一个 MCP 服务器npm 包 abap-adt-mcpwilliansaez 版两个客户端的配置方式差异。维度WorkBuddyCodexNode.js 运行时✅ 自带托管 Node~/.workbuddy/binaries/node/无需本机安装❌ 不提供必须自己在本机安装 Node.js进系统 PATH环境变量来源写在 ~/.workbuddy/mcp.json 的 env 块里启动 MCP 时由 WorkBuddy 注入子进程写在 Windows 用户环境变量里系统属性→环境变量 / setxCodex 从你的 shell 启动、自然继承主配置文件~/.workbuddy/mcp.jsonJSON~/.codex/config.tomlTOML多系统配置~/.abap-adt-mcp/systems.json密码字段 ${env:变量名} 引用同一份 systems.json格式完全相同启用方式需在连接器管理页对 MCP 点信任否则服务器不启动配置好后重启 Codex 即生效无信任步骤排查入口工具没加载 → 检查是否信任、mcp.json 路径是否有效命令不存在/连不上 → 先查本机 Node 是否装好、用户环境变量是否生效b.Workbuddy的下载以及MCP的配置使用Workbuddy下载我就不用多说了然后MCP的配置也很无脑。1.配置MCP服务直接发给 WorkBuddy 如下提示词即可记得把连接信息模板参数要改为自己的如果对这些参数不知道怎么查询填写可以翻看上面的配置步骤是有介绍这些参数在哪里获取的。安装并配置 SAP ABAP 的 MCP 服务器 abap-adt-mcpnpm 包作者 williansaezv2.x单实例多系统、支持源码读写 1. 用托管 Node 在托管工作区安装 npm 包 abap-adt-mcp2.x 最新版。 2. 按文末模板生成 ~/.abap-adt-mcp/systems.json密码字段用 ${env:变量名} 引用变量名自行合理命名明文密码放 mcp.json 的 env 块。 3. 注册到 ~/.workbuddy/mcp.json单实例 abap-adt-mcpcommand 用托管 Nodeargs 指向包内 dist/index.jsenv 中含全部密码变量 SAP_SYSTEMS_FILE 指向 systems.json 绝对路径必需。 4. 提醒用户在连接器管理页对 abap-adt-mcp 点信任否则不会启动。点击之后等待几秒即可 因为workbuddy点击之后没任何翻译等待1两秒之后UI界面才有反应 5. 信任后验证listSystems 确认各系统识别正确对每个系统做一次真实调用如 getObjectSource 读任意 Z 程序 / tableContents 查 T000确认无 401 并汇报。 注意 - 认准 npm 包 abap-adt-mcp不要克隆 GitHub 的 buettnerjulian/abap-adt-mcp同名不同项目仅 25 个只读工具。 - 单实例承载所有系统用 destination 参数选系统不要拆多个实例。 - 生产/测试系统设 policy.readOnly: truehttps 自签名证书设 insecureTls: true。 - 验证时 userTransports 返回空属正常只列已释放请求不要判定为配置失败。 连接信息模板用户填写后随本文件发送 系统名称: D200 # 自定义默认系统可写 url: https://sapdev.xxx.com:8001 client: 200 user: SAP用户名 password: 登录密码 insecureTls: true # https 自签名时 true readOnly: false 系统名称: P800 # 只读系统格式同上 url: ... client: 800 user: ... password: ... 系统名称: Q700 # 只读系统格式同上 url: ... client: 700 user: ... password: ...2.使用MCP服务在使用之前一定要按照上面截图所说的去连接器管理页点击信任然后重启Work buddy。在使用过程中有什么问题都可以向Work buddy提问或者让他去修复。比如让他去调整MCP服务的配置或者让他排查为什么连接不上的原因都可以。或者是说有什么开发规范和要求都可以给他说它自己会记录用户的长期记忆后面我们也会针对用户的长期记忆和自定义的skill做一个介绍和优化。09、Workbuddy的使用技巧Workbuddy我觉得最重要的就是用户的长期记忆和自定义skill做好这两点就算你大模型的能力很差它也能按照你的想法和预期去完成任务有时候大模型一顿尝试下来可能会发现某些功能、某些操作他不能做但实际是不可信的你要让他进行多轮尝试或者说是让不同方向的去尝试比如创建事务码目前这个MCP是没有相关的工具的但是我们可以通过sap提供的一些函数让大模型去写临时类调用相关函数然后让它去运行这个临时类就可以创建事物码了还有例如GUI状态的复制也可以让大模型生成临时类调用对应的函数copy GUI状态这些步骤呢我们都可以让它沉淀为skill 往后大模型就可以按照最快速的路径去完成这个任务了。a.runSnippet工具的了解我觉得这个MCP很好的工具之一就是runSnippet大家也可以问自己的Workbuddy这个工具到底是做什么用还有它的实现原理是什么其实有了这个工具我们就可以做很多很多事情了。1.实现文本元素的操作比如刚开始我在用Workbuddy去处理sap文本元素相关的操作的时候他就说不能做好像是因为我们系统版本比较低然后他尝试用这个runSnippet工具实现了我就问了他是怎么实现的。并让他总结成了长期记忆和skill。这样只要以后再遇到同样的任务他就可以快速地去按照以前成功的经验去处理了。b.用户的长期记忆和skill的整理把Agent工具要使用得好我们一定要把用户的长期记忆和skill利用好那么我们就要去了解它对应Agent在每一个会话中是怎么去使用和注入用户长期记忆和skill的。比如Workbuddy它是有一个文件memory.md的文件会在你使用新会话的时候自动注入还有skill的Description也是会自动注入的 skill的description呢它只是对这个skill的描述和在什么时候用大模型会根据description的内容去决定使用哪些skill。但是有一点很重要就是memory.md的大小和description的大小要合理控制因为它们过大都是会被截断的但是也有相应的解决方案。memory.md过大被截断。你要在这个memory.md最上面加一段铁律就是当它检测到memory.md被截断的标记后让他立刻去磁盘中读取完整对应的内容 这些铁律我们都是可以让workbuddy直接去加的。至于skill的description呢我们要做到精简核心就是 语义上要宽、字数上要短。如果你写得过于详细写了很多细节反而覆盖面会变窄会不能命中。1.memory.md这个文件呢它很重要我可以先给大家看一下我目前的memory.md长什么样子这都是我使用Workbuuddy踩过很多坑之后的结果比如我在当前会话它是可以去做文本元素的翻译的但是当我新开一个会话他又可能会说我的系统不支持 这就是因为上一次他成功的经验没有被沉淀和长期记忆下来。可以看到我的这个memory.md在最上面有很明确的铁律这个文件的路径是 ‪C:\Users\95817.workbuddy\user-a959610c-8257-44b9-8f0d-0796aecdb1e7-personal\MEMORY.md这个路径如果实在找不到的话你也可以直接问work buddy, 我的用户长期记忆是在哪里存储着可能在最初你使用work buddy没有给它指定一些规范的时候这个用户长期记忆文件还没有形成。2.Skill的分类整理我们sap的知识和操作是有很多的我们不能把所有的经验技能都往一个文件里面堆我们一定要做语义的区分让大模型只读对它有用的skill不能把所有的东西都堆在一个skill里面或者全部堆在memory.md里面。我现在的所有skill如下你本机所有的skill存放路径是C:\Users\95817.workbuddy\skills每个skill的description呢它都是会在新开会话都会自动注入的大模型会根据当前任务的需求决定读哪个skill。可以看到我的这边是总结了很多skill比如连接系统的、开发报表的、调用BAPI函数的 等等。如果说你的work buddy在开发过程中老是不按照规范完成需求没有去读skill的话你可以在memory.md里面给他声明铁律让他动sap之前必须先加载对应的skill3.用户长期记忆和skill的清理随着我们的使用我们会不断的去增加各种的铁律和限制但是还是会有一些冗余的描述进入到我们的memory.md和skill这时候我们就要定期地做一个清理和复盘比如清理掉一些没有用的反例只保留正确的内容或者说是MCP之前不支持但是现在版本更新之后支持了某些操作。c.如何用好一个Agent工具其实我觉得就是多用越用会越聪明可能在使用过程中你会觉得它有时候很蠢但是在经过我们不断的调教和不断的去产生新的解决方案真的是可以极大提高我们工作效率的。其实我们不懂就问遇到新的坑就问这就是解决问题最好的方式了。在你的不断使用下你的用户长期记忆会越来越好。比如他在完成某些需求的时候没有按照规范来你就可以问他你为什么没按照规范来他就会去给你解释然后你再跟他商讨一个可以避免类似情况再发生的方案。然后再将他这个方案落地这些都是长期使用下来沉淀的经验比如workbuddy在一个新的会话中它会把大部分的经验沉淀到这个会话项目里面而不是你用户级的长期记忆和skill里面。当你给他加了如下限定之后他就在每次给你回复之前做相应正确的沉淀。END、总结以上就是今天要讲的内容本文仅仅简单介绍了 Codex和Workbuddy怎么做sap的全链路自动开发感觉这篇文章自己有学到东西或者在今后的工作中能派上用场可以点赞收藏支持制作不易非常感谢当然如果有说错或者不好的地方还望大家提出来见谅欢迎大家评论指出不好的地方。谢谢
延伸阅读

更多相关文章

2026/10/26 11:33:05

claude-mem 深度解析:为 Claude 构建持久化记忆层的工程实践

1. 从零认识 claude-mem:它到底在解决什么问题第一次看到claude-mem这个名字,我的直觉是:这应该是一个给 AI 对话加上“记忆”能力的工具。事实也确实如此。简单来说,它是一个为 Claude 这类大语言模型提供持久化记忆层的开源项目…

2026/10/26 11:33:05

从清单到体系:结构化技能管理(Skills)的设计与实操指南

1. 从“skills”这个词说起:它到底指什么“skills”这个词看起来简单,但放在不同语境里,指向的东西差别很大。有人看到它想到的是简历上那一栏“专业技能”,有人想到的是游戏里的技能树,有人想到的是团队里每个人各自擅…

2026/10/26 11:33:05

i-have-adhd:一个面向ADHD群体的可操作行为接口

1. 项目概述:当“i-have-adhd”不再是一句自嘲,而成为可被理解的表达接口 最近在多个内容平台观察到一个高频出现的短语——“i-have-adhd”,它既不是标准医学术语,也不是临床诊断代码,却以惊人的传播密度出现在评论区…

2026/10/26 11:28:05

物理层全解析:从比特编码到网线光纤排障实战

带过几届新人之后我发现一个挺有意思的现象:聊网络,大家都能从三次握手讲到拥塞控制,一提到物理层就集体沉默,要么一句"就是网线、光纤那层"带过去,要么干脆当成考试时要背的四个特性。可真到了机房里&#…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑