ABAP MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个面向 MCP 客户端的后端服务器,用于向 LLM 客户端提供上下文信息、资源访问、工具执行和提示渲染等能力。核心组件包括资源管理、工具执行、提示模板、以及基于 MCP 协议的通信传输(包括流式 HTTP/STDIO)。
-
主要功能点
- MCP 服务端实现:按照 MCP 协议处理请求与响应,支持 JSON-RPC 风格的调用、通知,以及会话管理和能力声明。
- 资源与工具:提供资源读取/搜索、abap_lint 静态分析、ABAP 特性矩阵查询等工具,并可对外暴露资源模板和读取接口。
- Prompts 与 Prompts API:定义与渲染提示模板,支持与客户端的 prompts/list、prompts/get 等交互。
- 多传输协议:实现 Streamable HTTP transport 和 STDIO 传输,支持会话式通信。
- 本地与在线数据源:BM25 索引、本地 abaplint 集成,以及在线源(SAP Help、SAP Community、Software Heroes)的整合能力。
- 监控与自检:健康检查、健康端点、版本与元数据加载等辅助能力。
-
安装步骤
- 安装依赖并构建:
- 安装依赖并安装子模块数据(若子模块缺失,可执行 setup 脚本)
- 运行 npm ci
- 运行 setup.sh(克隆子模块数据)
- 运行 npm run build
- 启动服务
- 启动 Streamable HTTP MCP 服务器:npm run start:streamable
- 或使用普通 STDIO MCP 服务器:npm start
- 安装依赖并构建:
-
服务器配置(供 MCP 客户端使用的配置示例,JSON 格式;客户端不需要运行时代码,仅需该配置描述)
- 配置示例(JSON,描述 MCP 服务器信息、启动命令及参数): { "server": { "name": "abap-mcp-server", "command": "npm", "args": ["run", "start:streamable"] } } 注释说明:
- name:服务器在 MCP 客户端中的显示名称,便于区分不同 MCP 服务实例。
- command/args:用于 MCP 客户端启动服务器的命令及参数。在本仓库中,Streamable HTTP 服务器的启动方式为执行 npm run start:streamable(实际运行时由客户端通过该命令触发服务器启动)。
- 若需要通过其他方式启动副本,请将 command/args 调整为对应执行指令,并确保 MCP_HOST、MCP_PORT 环境变量正确设置以绑定端口与地址。
-
基本使用方法
- 与 MCP 客户端的交互流程
- 客户端启动并连接到 MCP 服务器,绑定端口(本仓库默认 3122,按需要调整)。
- 客户端通过 MCP 请求访问资源、执行工具(如 search、fetch、abap_lint 等)以及获取 Prompts。
- 服务器返回 JSON-RPC 风格的响应或通知,客户端据此进行后续对话上下文管理与工具调用。
- 常用操作摘要
- 启动服务端:使用 npm run start:streamable(推荐)或 npm start
- 连接 MCP 服务:将服务器端点配置为 http://<host>:<port>/mcp(流式传输端口通常为 3122)
- 调用工具:如 search、fetch、abap_lint;可结合读取资源、提示模板来丰富 LLM 上下文
- 监控与健康:使用 /health、/status 等接口查看运行状态
- 与 MCP 客户端的交互流程
-
运行与维护要点
- 该实现包含丰富的测试与示例脚本,用于验证 MCP 功能、资源访问、在线源整合、以及提示/工具的交互逻辑。
- 代码结构覆盖了 MCP 请求处理、资源管理、工具执行、Prompts、以及多传输协议支持等核心能力,具备可运行性与扩展性。
-
额外说明
- MCP 协议的核心特征在该仓库中有明确实现路径:通过 /.mcp 接口处理请求、响应及会话管理,支持多传输协议(如 STDIO、Streamable HTTP),并允许扩展资源、工具、Prompts 等能力。
- 服务器对 ABAP/RAP 开发场景提供了丰富的内置工具与数据源整合(本地 BM25、abaplint、Software Heroes 功能矩阵等),并具备在线源的并发查询能力。