SAP Documentation
Provides offline access to SAP documentation and real-time SAP Community content.
MCP SAP Docs (Upstream)
Public Hosted Endpoint
Ready to use — no setup required
Variant URL SAP Docs http://mcp-sap-docs.marianzeis.de/mcpABAP https://mcp-abap.marianzeis.de/mcp
mcp-sap-docs is the upstream repository for two MCP server variants:
sap-docsvariant: broad SAP docs scope (UI5, CAP, Cloud SDK, ABAP docs, etc.)abapvariant: ABAP-focused scope (fewer sources, ABAP lint enabled)
Both variants run from the same codebase and differ by configuration (MCP_VARIANT / .mcp-variant).
Current State
- Upstream source of truth:
mcp-sap-docs - One-way sync target:
abap-mcp-server - Search API is unified across variants:
query,k,includeOnline,includeSamples,abapFlavor,sources
- Shared tools in both variants:
search— unified search across offline docs + optional online sources (SAP Help, SAP Community, Software Heroes)fetch— retrieve full document or community post content by IDabap_feature_matrix— check ABAP feature availability across SAP releasessap_community_search— dedicated SAP Community search (blogs, Q&A); use whensearchresults are insufficient, especially for specific errors or workaroundssap_search_objects— search SAP released objects by name/component/type from the official SAP/abap-atc-cr-cv-s4hc API release state repo; use for clean core compliance discoverysap_get_object_details— full release state details for a specific SAP object (class, table, interface, etc.) including clean core level, successor objects, and optional compliance verdict
- ABAP-only tool:
abap_lint(enabled only when variant isabap)
Variant Selection
Resolution order:
MCP_VARIANTenvironment variable.mcp-variantfile in repo root- fallback:
sap-docs
Examples:
# Run as full sap-docs profile
MCP_VARIANT=sap-docs npm run setup
MCP_VARIANT=sap-docs npm run build
MCP_VARIANT=sap-docs npm run start:streamable
# Run as ABAP profile
MCP_VARIANT=abap npm run setup
MCP_VARIANT=abap npm run build
MCP_VARIANT=abap npm run start:streamable
Search Behavior
search performs fused retrieval over:
- Offline FTS index (local submodule content)
- Optional online sources (
includeOnline=true):- SAP Help
- SAP Community
- Software Heroes content search (EN/DE merge + dedupe)
Ranking and filtering highlights:
- Reciprocal Rank Fusion (RRF) across offline and online sources
- Source-level boosts from metadata
includeSamplescan remove sample-heavy sourcesabapFlavor(standard/cloud/auto) filters official ABAP docs libraries while keeping non-ABAP sourcessourcescan restrict offline libraries explicitly
Offline-Only Mode
search includes online sources by default. To run offline-only, use:
- local index/submodules only (
npm run setup+npm run build) includeOnline=falsein eachsearchrequest
Example search request body:
{
"query": "RAP draft",
"k": 8,
"includeOnline": false
}
Docker (offline-only)
Run the container with host binding and call search with includeOnline=false:
docker run --rm -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
-e MCP_HOST=0.0.0.0 \
mcp-sap-docs
For strict air-gapped execution, disable container networking:
docker run --rm --network none -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
-e MCP_HOST=0.0.0.0 \
mcp-sap-docs
Notes:
- With
--network none, online fetches are impossible by runtime isolation. - Startup may log warnings for online prefetch attempts (for example ABAP feature matrix); this does not prevent offline
searchusage.
Quick Start (Local)
npm ci
npm run setup
npm run build
Start server modes:
# MCP stdio
npm start
# HTTP status/dev server
npm run start:http
# MCP streamable HTTP
npm run start:streamable
Default ports by variant:
sap-docs: HTTP3001, streamable3122abap: HTTP3002, streamable3124
Health checks:
curl -sS http://127.0.0.1:3122/health | jq .
curl -sS http://127.0.0.1:3001/status | jq .
Use variant-specific ports when running abap profile.
Build and Setup Scripts
Script names remain shared (setup, build, start, start:streamable).
Behavior changes by variant config:
setup.shonly initializes variant-allowed submodulesbuild-indexonly includes variant-allowed librariesbuild-ftsonly indexes variant-allowed libraries
This keeps abap faster and smaller without maintaining a separate build script set.
Docker
Build image for a variant:
# sap-docs image
docker build --build-arg MCP_VARIANT=sap-docs -t mcp-sap-docs .
# abap image
docker build --build-arg MCP_VARIANT=abap -t abap-mcp-server .
Run streamable server:
# sap-docs
docker run --rm -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
mcp-sap-docs
# abap
docker run --rm -p 3124:3124 \
-e MCP_VARIANT=abap \
-e MCP_PORT=3124 \
abap-mcp-server
One-Way Sync to abap-mcp-server
This repository contains direct sync automation:
- Workflow:
.github/workflows/sync-to-abap-main.yml - Script:
scripts/sync-to-abap.sh
Flow:
- Push to
mcp-sap-docs/main - Workflow clones
abap-mcp-server - Tracked upstream files are synced (with exclude rules)
- ABAP overlay is applied
.mcp-variantis forced toabap- ABAP package identity is patched
- Commit is pushed to
abap-mcp-server/main
Required secret in mcp-sap-docs repo:
ABAP_REPO_SYNC_TOKEN
Commit message controls:
[skip-sync]skips sync workflow
Deployment Model
mcp-sap-docs: upstream implementation + sync triggerabap-mcp-server: deployment trigger remains push-to-main in that repository
This preserves ABAP deployment automation while keeping one shared upstream codebase.
PM2 Runtime
ecosystem.config.cjs is variant-aware and resolves:
- process names
- ports
- deploy path
from config/variants/*.json.
Validation Commands
npm run build:tsc
npm run test:url-generation
npm run test:integration
npm run test:software-heroes
npm run test:sap-objects # SAP Released Objects unit tests
# Variant-specific build checks
MCP_VARIANT=sap-docs npm run build:index
MCP_VARIANT=abap npm run build:index
MCP_VARIANT=sap-docs npm run build:fts
MCP_VARIANT=abap npm run build:fts
Additional Docs
docs/ARCHITECTURE.mddocs/DEV.mddocs/TESTS.mddocs/UPSTREAM-ONE-WAY-SYNC-IMPLEMENTATION.mdREMOTE_SETUP.md
Verwandte Server
Scout Monitoring MCP
SponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
SponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Nucleus MCP
Local-first, cross-platform memory sync for AI coding tools (Cursor, Claude, Windsurf) with persistent engrams and hypervisor security.
Dash0
Navigate your OpenTelemetry resources, investigate incidents and query metrics, logs and traces on Dash0.
DevRev MCP Server
Access DevRev's APIs to manage work items, parts, search, and user information.
MCP Sequence Simulation Server
Simulate DNA and amino acid sequences using evolutionary models and algorithms.
OpenRouter MCP Client for Cursor
An MCP client for Cursor that uses OpenRouter.ai to access multiple AI models. Requires an OpenRouter API key.
MCP Tools
A collection of MCP servers for growth and analytics, including a server for Google Analytics.
Knowledge Graph Memory Server
Enables persistent memory for Claude using a local knowledge graph of entities, relations, and observations.
MCP Vaultwarden Connector
Provides a bridge for scripts and AI agents to interact with a self-hosted Vaultwarden instance.
AI pair programming
Orchestrates a dual-AI engineering loop where a Primary AI plans and implements, while a Review AI validates and reviews, with continuous feedback for optimal code quality. Supports custom AI pairing (Claude, Codex, Gemini, etc.)
Random Number
Provides LLMs with essential random generation abilities, built entirely on Python's standard library.