1. 为什么 ADT for VS Code 的 MCP Server 读不到已有 ABAP 对象源码你打开 VS Code装上 ABAP Development Tools 官方扩展看到 MCP Server 的配置入口心里想的肯定是Claude Code 或 Copilot 既然能通过 MCP 连本地工具那读一个已有的 ABAP class、CDS view 或者 behavior definition 应该是最基本的操作。结果一试发现根本没有read_abap_source这类工具连对象列表都拿不到。这个落差感非常真实。我先把结论放在前面这不是技术做不到而是 SAP 在官方产品层面主动收紧了风险边界。MCP Server 只负责把服务端愿意暴露的能力声明给客户端它不会自动继承 VS Code 扩展、ADT Language Server、ADT REST services 的全部能力。你在 VS Code 里能打开对象不代表 MCP Server 就自动拥有读取源码的工具。ADT for VS Code 在 Marketplace 上的定位是 ABAP Cloud development model 下的现代开发体验支持 class、interface、CDS data definition、metadata extension、RAP 相关的 service binding、behavior definition 等对象。连接方式分两种on-premise 和 private cloud 走 RFCpublic cloud 走 HTTP。MCP tools 和 ABAP Repository 能力列在同一个产品页面里但它们是同一个扩展包里的不同 API 面不是同一个权限层级。SAP Help 文档里已经有 Enabling ADT MCP Server、Configuring ADT MCP Server、Using MCP Tools、Security Considerations and Recommendations 这些条目。这个文档结构本身就说明SAP 把 MCP 当成受控的 Agentic Loop 来设计而不是一个可以任意读取 ABAP 系统内容的远程文件服务器。读取源码在 SAP 眼里不是低风险能力因为一个 ABAP class 里可能藏着 RFC destination、BAPI 调用链、财务过账规则、采购审批逻辑一个 CDS view 可能暴露业务数据模型和 authorization annotation。把这些内容交给外部智能编码客户端等于把企业内部业务实现细节送进了一个新的上下文通道。所以你现在遇到的这个缺口本质上是 SAP 在安全审计、数据外流、合规边界、支持责任这几个维度上还没有准备好开放全量 repository read。下面我会从实际配置入手帮你理解当前 MCP Server 能做什么、不能做什么以及怎么在现有边界内把 ADT 连接和权限验证跑通。2. TaoToken 前置准备API Key 与 Coding Plan 选择在深入 ADT 配置之前先把模型侧的接入准备好。TaoToken 提供统一的 API 入口你可以用同一个 Key 驱动 Claude Code、Cline 或者其他支持 MCP 的客户端。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。如果你主要做 ABAP 代码解释、重构建议、单元测试生成这类交互式任务用模型对话就够了。但如果你打算把 Claude Code 长期挂在项目里做 Agentic coding建议直接上 Coding Plan因为按量计费在频繁的 MCP tool call 场景下成本不太好控。Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。拿到 Key 之后你需要在客户端侧配置 Base URL 和 Model ID。以 Claude Code 为例配置文件通常在~/.claude/settings.json或者项目级的.claude/settings.json。一个可复制的最小配置片段如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-key-here, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }如果你用的是 Cline 或者 Roo Code 这类 VS Code 扩展配置方式类似在扩展的设置面板里填入 Base URL 和 API KeyModel ID 根据你实际使用的模型填写。这里要注意Base URL 不要带末尾斜杠否则某些客户端会拼出双斜杠导致 404。Key 的管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 你可以按项目创建不同的 Key方便后续排查是哪个客户端在调用。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各客户端的详细配置步骤。这里有一个容易踩的坑很多人把 TaoToken 的 Base URL 配到了 ADT 扩展的 MCP Server 设置里这是不对的。TaoToken 是模型侧的 API 入口ADT MCP Server 是 SAP 侧的本地工具服务两者是独立的。你需要先在模型客户端里配好 TaoToken然后在 VS Code 的 ADT 扩展里配好 SAP 系统连接最后在 MCP 客户端配置里把 ADT MCP Server 注册进去。三层配置各管各的不要混在一起。3. 可复制配置ADT 连接与 MCP Server 注册这一节给你完整的配置文件片段路径和字段名都按实际扩展的要求来。先确认你已经在 VS Code 里安装了 ABAP Development Tools 扩展并且至少成功连接过一个 SAP 系统。ADT 的系统连接配置在 VS Code 的 settings.json 里搜索abap或者adt能看到相关字段。一个典型的 on-premise RFC 连接配置如下{ abap.connection: { systemId: DEV, client: 100, language: ZH, applicationServer: sapdev.internal.example.com, systemNumber: 00, user: YOUR_USER, password: YOUR_PASSWORD, connectionType: rfc } }如果是 public cloud 的 ABAP 环境connectionType 改成http并配置对应的 service URL 和 OAuth 凭据。注意不要把生产系统的凭据配到开发用的 VS Code 里这是基本的安全习惯。接下来是 MCP Server 的注册。ADT 扩展本身会启动一个本地 MCP Server你需要在你使用的 MCP 客户端里把它注册进去。以 Claude Code 为例MCP 配置在~/.claude/mcp.json或者项目级的.mcp.json{ mcpServers: { adt-abap: { command: node, args: [ /path/to/adt-mcp-server/index.js ], env: { ADT_MCP_PORT: 3100, ADT_SYSTEM_ID: DEV } } } }实际路径和启动命令以 ADT 扩展文档为准不同版本可能有差异。注册完成后重启 Claude Code用/mcp命令查看已连接的服务列表。如果能看到adt-abap并且状态是 connected说明 MCP Server 已经起来了。这里要强调一个关键点MCP Server 暴露的工具列表是服务端决定的。你可以在 Claude Code 里让它列出当前可用的 tools通常会看到一些和对象搜索、语法检查、ATC 相关的工具但很可能没有read_source或get_object_content。这不是配置错了而是当前版本就没有开放这个能力。如果你用的是 ClineMCP 配置在 VS Code 的 settings.json 里字段名是cline.mcpServers结构类似。Cline 的好处是它会在侧边栏直接显示 MCP Server 的连接状态和可用工具排查起来更直观。配置完成后建议先用一个简单的 tool call 验证连通性比如让 Claude Code 调用 ADT MCP Server 搜索一个已知的 package 或者 object 名称。如果返回了结果说明 MCP 通道是通的只是读取源码这个特定能力还没开放。4. 验证请求与成功结果确认 MCP 通道可用配置好之后你需要实际发一个请求来确认 MCP Server 能正常工作。打开 Claude Code输入类似这样的指令请列出当前 ADT MCP Server 提供的所有工具并说明每个工具的用途。如果 MCP Server 连接正常Claude Code 会返回一个工具列表。你可能会看到search_objects、get_object_metadata、run_atc_check这类工具但不会有read_source。这个结果本身就是有用的信息它告诉你当前 MCP Server 的能力边界在哪里。接下来可以试一个具体的搜索请求用 ADT MCP Server 搜索 package ZTEST_PACKAGE 下的所有 class返回名称和描述。如果返回了对象列表说明 MCP Server 和 SAP 系统的连接是通的权限也够。如果返回空列表或者报权限错误那问题出在 SAP 侧的授权上需要检查你的用户在 S_DEVELOP、S_ADT_RES 这些权限对象上的配置。再试一个元数据请求获取 class ZCL_TEST_CLASS 的元数据包括 package、software component、active 状态。如果这个能成功但读取源码失败那就验证了我们前面的判断MCP Server 开放了元数据级别的访问但没有开放源码级别的访问。元数据本身不包含业务逻辑风险相对可控源码则可能暴露完整的业务实现细节。实测下来当前 ADT MCP Server 在 on-premise 开发系统上对象搜索和元数据查询基本可用但源码读取确实不在工具列表里。你可以用这个验证流程快速确认自己环境的状态而不是盲目猜测配置哪里出了问题。如果你需要验证模型侧的连通性可以用模型对话入口发一个简单的请求确认 TaoToken 的 API Key 和 Base URL 配置正确。模型对话地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 在这里你可以直接测试模型是否能正常响应。5. 本篇常见错误排查401、local proxy failed、reading choices这一节列出你在配置 ADT MCP Server 和 TaoToken 时最可能遇到的几个报错以及对应的排查方向。401 Unauthorized这个报错通常出现在模型侧说明 TaoToken 的 API Key 无效或者过期。检查ANTHROPIC_API_KEY是否填对有没有多余的空格或者换行。如果你用的是项目级配置确认项目配置没有覆盖全局配置。另外检查 Base URL 是否写成了https://taotoken.net/api/带末尾斜杠某些客户端会因此拼出错误路径。重新在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 生成一个新 Key 试试。local proxy failed这个报错说明 MCP 客户端无法连接到本地 MCP Server 进程。可能的原因有几个ADT 扩展没有启动 MCP Server端口被占用或者路径配置错误。先在 VS Code 的输出面板里查看 ADT 扩展的日志确认 MCP Server 是否成功监听。然后用netstat或者lsof检查配置的端口是否被其他进程占用。如果路径里有空格确保在 JSON 配置里正确转义。reading choices 报错这个错误通常出现在模型返回的响应格式不符合客户端预期时。可能的原因是 Model ID 填错了或者客户端版本和模型不兼容。检查ANTHROPIC_MODEL是否是你实际有权限使用的模型。如果你用的是 Coding Plan确认 Plan 里包含的模型列表不要填一个不在列表里的 Model ID。OAuth 相关报错如果你连接的是 public cloud 的 ABAP 环境可能会遇到 OAuth token 获取失败。检查 service key 是否完整token endpoint 是否可达client ID 和 secret 是否正确。Public cloud 的 ADT 连接对网络环境有要求确保你的 VS Code 能访问对应的 SAP BTP 端点。MCP Server 连接成功但工具列表为空这种情况说明 MCP 通道通了但服务端没有注册任何工具。可能的原因是 ADT 扩展版本太旧或者当前 SAP 系统类型不支持 MCP tools。检查扩展是否有更新确认你的系统是 ABAP Cloud 或者支持 ADT MCP 的版本。如果工具列表里只有元数据相关工具没有源码读取工具那是正常的不是配置问题。排查的时候建议按层隔离先确认模型侧能通再确认 MCP Server 进程能起来再确认 SAP 连接能通最后确认工具列表是否符合预期。不要一上来就怀疑最复杂的环节。6. 在现有边界内做 ABAP 智能辅助CTA 与后续路线既然官方 MCP Server 暂时不开放源码读取那在实际项目里怎么用我的建议是分三层来处理。第一层是当前打开对象的上下文。VS Code 里已经打开的 ABAP 文件你可以直接让 Claude Code 读取本地文件内容这部分不依赖 MCP Server。虽然笨一点但权限和数据流最清楚适合日常的代码解释和局部重构。第二层是受控的中间层。如果你需要系统性的代码分析可以在开发系统里搭一个内部 API只允许读取指定 package 或指定 transport 下的对象排除 SAP namespace记录每次读取的对象名、用户、时间和调用客户端。这个中间层可以先用脚本实现输出给开发者审查后再送入 Claude Code。这样既补上了源码读取的缺口又不会把全量 ADT endpoint 暴露出去。第三层是传统质量工具链。abapGit、ATC、where-used、CDS dependency 这些手段在迁移和 Clean Core assessment 场景下仍然不可替代。MCP 适合做交互式解释和辅助推理不适合替代 SAP 原有的质量工具。官方扩展本身也把 ABAP Unit 和 ATC 作为核心能力列出说明 SAP 的路线是让智能编码客户端接入已有工程闭环而不是单独承担质量控制。如果你打算长期在 ABAP 项目里用 Agentic coding建议上 Coding Plan入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有 MCP 客户端的详细配置说明。Claude Code 的专项接入指南在 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-codeutm_campaignrewrite 如果你用 Claude Code 做主力客户端可以参考这份文档把 MCP 和模型侧配置一次跑通。最后说一个我自己的判断SAP 未来大概率会以受控工具的形式开放 repository context比如读取当前已打开对象的上下文、读取 transport request 里的对象清单、读取 RAP BO 的结构化上下文。这些工具不会叫「读取任意源码」但对企业级智能辅助来说结构化上下文比全量源码更有用。现在这个阶段先把 MCP 通道和模型侧接入跑通等官方能力逐步开放时你的工具链已经准备好了。
阅读完成 · 觉得有帮助?