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 客户端的交互流程
      1. 客户端启动并连接到 MCP 服务器,绑定端口(本仓库默认 3122,按需要调整)。
      2. 客户端通过 MCP 请求访问资源、执行工具(如 search、fetch、abap_lint 等)以及获取 Prompts。
      3. 服务器返回 JSON-RPC 风格的响应或通知,客户端据此进行后续对话上下文管理与工具调用。
    • 常用操作摘要
      • 启动服务端:使用 npm run start:streamable(推荐)或 npm start
      • 连接 MCP 服务:将服务器端点配置为 http://<host>:<port>/mcp(流式传输端口通常为 3122)
      • 调用工具:如 search、fetch、abap_lint;可结合读取资源、提示模板来丰富 LLM 上下文
      • 监控与健康:使用 /health、/status 等接口查看运行状态
  • 运行与维护要点

    • 该实现包含丰富的测试与示例脚本,用于验证 MCP 功能、资源访问、在线源整合、以及提示/工具的交互逻辑。
    • 代码结构覆盖了 MCP 请求处理、资源管理、工具执行、Prompts、以及多传输协议支持等核心能力,具备可运行性与扩展性。
  • 额外说明

    • MCP 协议的核心特征在该仓库中有明确实现路径:通过 /.mcp 接口处理请求、响应及会话管理,支持多传输协议(如 STDIO、Streamable HTTP),并允许扩展资源、工具、Prompts 等能力。
    • 服务器对 ABAP/RAP 开发场景提供了丰富的内置工具与数据源整合(本地 BM25、abaplint、Software Heroes 功能矩阵等),并具备在线源的并发查询能力。

服务器信息